What Changed in Native Navigation
How native navigation and link rules changed, and how the settings of existing apps were updated.
Native navigation changed in two ways:
- Instances replace per-component tabs. All navigation components are now set up together, in groups called instances. Each instance decides which components show, what they contain, and which pages it applies to.
- URL patterns replace regular expressions. Rules that pick pages, for navigation and for link handling, now use simple wildcard patterns.
This page covers what moved where and how existing apps were converted. For how navigation works today, see Native Navigation.
Where your settings are now
Previously, App Studio had a separate tab for each component (Top Navigation Bar, Sidebar Navigation, Bottom Tab Bar, and Contextual Navigation Toolbar). Each tab held that component's items, its styling, and its own rules for changing it on certain pages.
Now everything is under Native Navigation:
| Before | Now |
|---|---|
| A component's items and on/off setting, on its own tab | The Default instance, which applies to all pages |
| Page-specific variations, such as a different bottom tab menu, different top bar buttons, or showing the top bar only on certain pages | A separate instance for each page rule |
| Colors, fonts, and images on each tab | Global Theme, shared by all instances |
How existing apps were converted
Your app was converted automatically the first time it was opened in App Studio after the change:
- The settings from each component's tab became the Default instance.
- Each page rule became its own instance, in the same order as before. Because the app uses the first instance that matches a page, page-specific instances are checked before Default.
- Rules whose regular expression has no URL-pattern equivalent were not converted.
Haven't opened your app since the change? Open it in App Studio once before your next build so the conversion runs.
Restoring a backup from before the change? It's converted the same way when you restore it.
Settings that behave differently
Most settings convert one-to-one. These three don't:
Contextual toolbar on certain pages
Before, you could choose which pages showed the iOS contextual toolbar. Now the toolbar shows on every page of any instance that has Contextual Navbar turned on.
To hide it on some pages, create an instance for those pages and turn Contextual Navbar off.
Sidebar menus
Each instance has its own sidebar items, so you can show a different menu on different pages by creating an instance for them.
The sidebar can't change automatically based on whether a user is logged in. To show a different menu after login, set it from your site with median.sidebar.setItems().
Page titles
Titles you set for specific pages still appear in your app, but App Studio no longer shows them, so you can't edit them there.
To change the title on those pages, create an instance for them and set the title in its Top Navbar.
Link handling rules
Link handling rules now use URL patterns too. They were converted at the same time as navigation, and the same limitation applies: rules with no URL-pattern equivalent were dropped.
Check your rules under Link Handling and recreate any that are missing.
Rules set from your site at runtime with
median.internalExternal.set()still use regular expressions. Only the rules configured in App Studio changed.
JavaScript Bridge
Bridge methods that change navigation at runtime, such as median.sidebar.setItems() and median.tabNavigation.setTabs(), now change the items of the matching instance. See JavaScript Bridge for how long those changes last.
Updated 8 minutes ago