Types
The types of theme and context.
NavigationTheme
The look of the navigation: its bars, tabs and screen backgrounds. A color can be { light, dark }: the native side picks the one of the system's appearance. A color left out keeps the platform's look: on iOS 26 the glass bars, on Android the colors of the app's Material 3 theme (Theme.ApexNavigation: neutral grays).
interface NavigationTheme
| Member | Type | Description |
|---|---|---|
| colors | { primary?: Color; background?: Color; bar?: Color; text?: Color; border?: Color; badge?: Color; } |
ResolvedNavigationTheme
The theme as React content takes it: each color for the current appearance, ready for a style. A color the theme leaves out is undefined.
interface ResolvedNavigationTheme
| Member | Type | Description |
|---|---|---|
| colorsRequired | { [Key in keyof NonNullable<NavigationTheme['colors']>]?: ColorValue } |
RegisteredContext
The type of the app's context, for useAppContext, navigation.getContext and the options. It is registered next to the app, interface Register { app: typeof App; context: AppContext }: read from the app it would go round, since the screens' options are part of the app's type.
type RegisteredContext = Register extends { context: infer Context } ? Context : unknown
AppOptionsInput
The default options of every screen: options as they are, or a chain built from the theme and the app's context. A chain is built again when the theme changes.
type AppOptionsInput =
Options | ((options: ScreenOptions, app: OptionsEnvironment) => ScreenOptions)
| Member | Type | Description |
|---|---|---|
| topBar | OptionsTopBar | The bar at the top of a screen in a stack: its title, buttons, back button, search and look. |
| toolbar | OptionsToolbar | The toolbar at the bottom of a screen in a stack. |
| scrollEdgeEffect | OptionsScrollEdgeEffect | (iOS 26+) How the content fades or blurs where it scrolls under a bar. |
| bottomTabs | OptionsBottomTabs | The tab bar of the tabs the screen is in, while the screen shows. |
| bottomTab | OptionsBottomTab | The tab of a screen that is a tab of a tab bar (or the first screen of a stack that is one). |
| modal | ModalOptions | A screen shown as a modal: how it is presented, how it can be dismissed, its sheet. |
| modalPresentationStyle | OptionsModalPresentationStyle | How a modal is presented: full screen, as a page sheet, a form sheet, a popover… |
| modalTransitionStyle | OptionsModalTransitionStyle | The system transition of a modal: cover vertical, flip horizontal, cross dissolve, partial curl. |
| overlay | OverlayOptions | A screen shown as an overlay: whether touches outside its content go through to what is below. |
| sideMenu | OptionsSideMenu | The side menus of the side menu the screen is in: their visibility, width, gestures. |
| splitView | OptionsSplitView | The split view the screen is in: its columns, their widths, how they show. |
| layout | OptionsLayout | The screen's layout: its background, safe area, orientation. |
| statusBar | OptionsStatusBar | The status bar while the screen shows. |
| navigationBar | NavigationBarOptions | The navigation bar while the screen shows. |
| animations | AnimationOptions | The transitions of the commands: push, pop, modals, the root, and elements that move between screens. |
| popGesture | boolean | 'edge' | The swipe back in the stack: |
| hardwareBackButton | HardwareBackButtonOptions | What the system back button and the back gesture do on the screen. |
| fab | OptionsFab | The floating action button of the screen. |
| keyCommands | OptionsKeyCommand[] | The keyboard shortcuts of the screen, shown by the system when a hardware keyboard is held. |
| blurOnUnmount | boolean | Whether a text field of the screen loses the focus, and the keyboard hides, as the screen leaves: when the transition that takes it away starts (a pop, a modal's dismiss, a new stack root or app root), so the keyboard doesn't stay up during the transition. |
| preview | PreviewOptions | The preview of a pushed screen, for a view of the screen it is pushed from (iOS). Set by |