Release summaries
mobile-appshell-native-uplift
Native AppShell renders a single Expo Router NativeTabs navigator, removes the native header/notifications/menu chrome, and sources tab-bar colors from the active design-system theme.
integrator
BREAKING (native only) — AppShell.native now renders ONLY the `expo-router/unstable-native-tabs` navigator. The native header (`AppHeader`), the notification bell, the overflow menu, and the `children`/`aiPanel` slots are no longer rendered on native; this also removes the prior double-navigator mount (NativeTabs + a sibling Stack). `AppShellProps` is unchanged and all props remain accepted and crash-free, but `brand`/`logo`/`title`/`notifications`/`commands`/`userMenu`/`children`/ `aiPanel` now render nothing on native. Mount AppShell.native from an Expo Router layout whose direct child route files match the primary tab triggers, and wrap the app in `DesignSystemThemeProvider` + `SafeAreaProvider`.
maintainer
AppShell.native is reduced to a header-less single-navigator component; tab triggers come from the governed `buildNativeTabDescriptors` mapping with `{sf, md}` native icons. Tab colors derive from `useDesignSystemTheme()` (falling back to `defaultTokens`): `iconColor`/`labelStyle` use `{default: mutedForeground, selected: primary}`, Android `tintColor`/ `indicatorColor` = primary, badge colors from primary/primaryForeground. `rippleColor` was removed because the editorial `muted` token is a `color-mix()` CSS string that React Native cannot parse. Web AppShell and `AppShellProps` are untouched.
customer
The mobile app no longer shows an empty bar at the top; primary navigation is a themed bottom tab bar with visible icons and a clear active/inactive state that respects safe-area insets.
