Werk #22819: Navigation and sidebar are now part of every page
| Component | User interface | ||
| Title | Navigation and sidebar are now part of every page | ||
| Date | Oct 28, 2026 | ||
| Level | Major Change | ||
| Class | New Feature | ||
| Compatibility | Incompatible - Manual interaction might be required | ||
| Checkmk versions & editions |
|
Checkmk 3.0 drops the frame that used to hold every page. The main navigation and the sidebar are now part of each page itself, instead of a wrapper around an inner frame.
What changes for you
- The address bar shows the URL of the page you are on, not
index.py. Bookmark it, share it or reload it: you get exactly that page. - Opening a link in a new tab (middle click, Ctrl+click, Open link in new tab) now gives you the page with navigation and sidebar, not a page without them.
- Navigation and sidebar show up faster. On a first visit they render about twice as fast (main menu 898 ms -> 452 ms, sidebar 799 ms -> 454 ms in our measurements), on repeat visits about 1.4 times as fast.
Old bookmarks like index.py?start_url=... keep working: they redirect
to the page they name. Opening index.py still takes you to your start
page from Start URL.
To hide navigation and sidebar, for example on a wall display, use
Display > Show page navigation or the kiosk URL parameter, see
Werk #19873.
Incompatible: own extensions that use the main frame
There is no frame named main any more. Links and scripts in your own
extensions, such as custom sidebar snap-ins or local GUI plug-ins, that
open pages in that frame (target="main", window.open(url, "main"),
parent.frames[0]) now open a new browser window. Remove the target
or use _top to navigate the current page.
Technical background
index.py used to render a frameset: the sidebar plus an iframe that
loaded the actual page. Now every page renders the navigation and
sidebar itself, from a small separate JavaScript bundle that becomes
usable before the rest of the page's code has loaded.