expo-router 55.0.0-beta.4 → 55.0.0-canary-20260128-67ce8d5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/android/build.gradle +2 -2
  2. package/build/layouts/StackClient.d.ts +1 -1
  3. package/build/layouts/stack-utils/StackHeaderComponent.d.ts +11 -0
  4. package/build/layouts/stack-utils/StackHeaderComponent.d.ts.map +1 -1
  5. package/build/layouts/stack-utils/StackHeaderComponent.js +19 -2
  6. package/build/layouts/stack-utils/StackHeaderComponent.js.map +1 -1
  7. package/build/layouts/stack-utils/toolbar/StackToolbarClient.d.ts +1 -1
  8. package/build/layouts/stack-utils/toolbar/StackToolbarClient.d.ts.map +1 -1
  9. package/build/layouts/stack-utils/toolbar/StackToolbarClient.js +27 -11
  10. package/build/layouts/stack-utils/toolbar/StackToolbarClient.js.map +1 -1
  11. package/build/layouts/stack-utils/toolbar/StackToolbarMenu.d.ts.map +1 -1
  12. package/build/layouts/stack-utils/toolbar/StackToolbarMenu.js +38 -11
  13. package/build/layouts/stack-utils/toolbar/StackToolbarMenu.js.map +1 -1
  14. package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.d.ts +1 -0
  15. package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.d.ts.map +1 -1
  16. package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.js +2 -4
  17. package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.js.map +1 -1
  18. package/build/link/preview/native.d.ts +1 -0
  19. package/build/link/preview/native.d.ts.map +1 -1
  20. package/build/link/preview/native.js.map +1 -1
  21. package/expo-module.config.json +1 -1
  22. package/ios/LinkPreview/LinkPreviewNativeActionView.swift +1 -0
  23. package/ios/LinkPreview/LinkPreviewNativeModule.swift +3 -0
  24. package/ios/LinkPreview/LinkZoomTransition.swift +22 -12
  25. package/ios/Toolbar/RouterFontUtils.swift +8 -0
  26. package/ios/Toolbar/RouterToolbarHostView.swift +23 -7
  27. package/ios/Toolbar/RouterToolbarItemView.swift +13 -15
  28. package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.module → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.module} +7 -7
  29. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.module.md5 +1 -0
  30. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.module.sha1 +1 -0
  31. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.module.sha256 +1 -0
  32. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.module.sha512 +1 -0
  33. package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.pom → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.pom} +1 -1
  34. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.pom.md5 +1 -0
  35. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.pom.sha1 +1 -0
  36. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.pom.sha256 +1 -0
  37. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.pom.sha512 +1 -0
  38. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml +4 -4
  39. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.md5 +1 -1
  40. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha1 +1 -1
  41. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha256 +1 -1
  42. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha512 +1 -1
  43. package/package.json +12 -13
  44. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.module.md5 +0 -1
  45. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.module.sha1 +0 -1
  46. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.module.sha256 +0 -1
  47. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.module.sha512 +0 -1
  48. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.pom.md5 +0 -1
  49. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.pom.sha1 +0 -1
  50. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.pom.sha256 +0 -1
  51. package/local-maven-repo/expo/modules/router/expo.modules.router/55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.pom.sha512 +0 -1
  52. package/plugin/tsconfig.tsbuildinfo +0 -1
  53. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4-sources.jar → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5-sources.jar} +0 -0
  54. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4-sources.jar.md5 → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5-sources.jar.md5} +0 -0
  55. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4-sources.jar.sha1 → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5-sources.jar.sha1} +0 -0
  56. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4-sources.jar.sha256 → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5-sources.jar.sha256} +0 -0
  57. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4-sources.jar.sha512 → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5-sources.jar.sha512} +0 -0
  58. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.aar → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.aar} +0 -0
  59. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.aar.md5 → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.aar.md5} +0 -0
  60. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.aar.sha1 → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.aar.sha1} +0 -0
  61. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.aar.sha256 → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.aar.sha256} +0 -0
  62. /package/local-maven-repo/expo/modules/router/expo.modules.router/{55.0.0-beta.4/expo.modules.router-55.0.0-beta.4.aar.sha512 → 55.0.0-canary-20260128-67ce8d5/expo.modules.router-55.0.0-canary-20260128-67ce8d5.aar.sha512} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/link/preview/native.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/link/preview/native.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/link/preview/native.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { requireNativeView } from 'expo';\nimport type { ImageRef } from 'expo-image';\nimport { Fragment, type PropsWithChildren } from 'react';\nimport { Platform, StyleSheet, type ViewProps, type ColorValue } from 'react-native';\n\nimport type { BasicTextStyle } from '../../utils/font';\n\nconst areNativeViewsAvailable =\n process.env.EXPO_OS === 'ios' && !Platform.isTV && global.RN$Bridgeless === true;\n\n// #region Action View\nexport interface NativeLinkPreviewActionProps {\n identifier: string;\n title: string;\n icon?: string;\n image?: ImageRef | null;\n children?: React.ReactNode;\n disabled?: boolean;\n destructive?: boolean;\n discoverabilityLabel?: string;\n subtitle?: string;\n accessibilityLabel?: string;\n accessibilityHint?: string;\n // This may lead to race conditions, when two menu actions are on at the same time.\n // The logic should be enforced in the JS code, rather than in the native code.\n // singleSelection?: boolean;\n displayAsPalette?: boolean;\n displayInline?: boolean;\n preferredElementSize?: 'auto' | 'small' | 'medium' | 'large';\n isOn?: boolean;\n // There are issues with menu state updates when keep presented is set to true.\n // When updating the context menu state, it will either not update or it will recreate the menu. The latter is a problem,\n // because it will close all opened submenus and reset the scroll position.\n // TODO: (@ubax) find a way to fix this.\n keepPresented?: boolean;\n hidden?: boolean;\n tintColor?: ColorValue;\n barButtonItemStyle?: 'plain' | 'prominent';\n\n // These properties are for UIBarButtonItem compatibility but don't apply to context menus.\n // They're included for API consistency with toolbar items.\n sharesBackground?: boolean;\n hidesSharedBackground?: boolean;\n onSelected: () => void;\n titleStyle?: BasicTextStyle;\n}\nconst LinkPreviewNativeActionView: React.ComponentType<\n Omit<NativeLinkPreviewActionProps, 'image'> & { image?: number }\n> | null = areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'LinkPreviewNativeActionView')\n : null;\nexport function NativeLinkPreviewAction(props: NativeLinkPreviewActionProps) {\n if (!LinkPreviewNativeActionView) {\n return null;\n }\n // Needed to pass shared object ID to native side\n const imageObjectId = (\n props.image as\n | {\n __expo_shared_object_id__: number;\n }\n | undefined\n )?.__expo_shared_object_id__;\n return <LinkPreviewNativeActionView {...props} image={imageObjectId} />;\n}\n// #endregion\n\n// #region Preview View\nexport interface TabPath {\n oldTabKey: string;\n newTabKey: string;\n}\nexport interface NativeLinkPreviewProps extends ViewProps {\n nextScreenId: string | undefined;\n tabPath:\n | {\n path: TabPath[];\n }\n | undefined;\n disableForceFlatten?: boolean;\n onWillPreviewOpen?: () => void;\n onDidPreviewOpen?: () => void;\n onPreviewWillClose?: () => void;\n onPreviewDidClose?: () => void;\n onPreviewTapped?: () => void;\n onPreviewTappedAnimationCompleted?: () => void;\n children: React.ReactNode;\n}\nconst NativeLinkPreviewView: React.ComponentType<NativeLinkPreviewProps> | null =\n areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'NativeLinkPreviewView')\n : null;\nexport function NativeLinkPreview(props: NativeLinkPreviewProps) {\n if (!NativeLinkPreviewView) {\n return null;\n }\n return <NativeLinkPreviewView {...props} />;\n}\n// #endregion\n\n// #region Preview Content View\nexport interface NativeLinkPreviewContentProps extends ViewProps {\n preferredContentSize?: { width: number; height: number };\n}\nconst NativeLinkPreviewContentView: React.ComponentType<NativeLinkPreviewContentProps> | null =\n areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'NativeLinkPreviewContentView')\n : null;\n\nexport function NativeLinkPreviewContent(props: NativeLinkPreviewContentProps) {\n if (!NativeLinkPreviewContentView) {\n return null;\n }\n const style = StyleSheet.flatten([\n props.style,\n {\n position: 'absolute',\n top: 0,\n left: 0,\n } as const,\n ]);\n return <NativeLinkPreviewContentView {...props} style={style} />;\n}\n// #endregion\n\n// #region Zoom transition enabler\ninterface DismissalBoundsRect {\n minX?: number;\n maxX?: number;\n minY?: number;\n maxY?: number;\n}\nconst LinkZoomTransitionEnablerNativeView: React.ComponentType<\n ViewProps & { zoomTransitionSourceIdentifier: string; disableForceFlatten?: boolean }\n> | null = areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'LinkZoomTransitionEnabler')\n : null;\nexport function LinkZoomTransitionEnabler(props: {\n zoomTransitionSourceIdentifier: string;\n dismissalBoundsRect?: DismissalBoundsRect | null;\n}) {\n if (!LinkZoomTransitionEnablerNativeView) {\n return null;\n }\n return (\n <LinkZoomTransitionEnablerNativeView\n {...props}\n disableForceFlatten\n style={{ display: 'contents' }}\n />\n );\n}\n// #endregion\n\n// #region Zoom transition source\ninterface LinkSourceAlignmentRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\ninterface LinkZoomTransitionSourceProps extends PropsWithChildren {\n identifier: string;\n alignment?: LinkSourceAlignmentRect;\n animateAspectRatioChange?: boolean;\n}\n\ninterface LinkZoomTransitionSourceNativeProps extends ViewProps, LinkZoomTransitionSourceProps {\n disableForceFlatten?: boolean;\n}\n\nconst LinkZoomTransitionSourceNativeView: React.ComponentType<LinkZoomTransitionSourceNativeProps> | null =\n areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'LinkZoomTransitionSource')\n : null;\nexport function LinkZoomTransitionSource(props: LinkZoomTransitionSourceProps) {\n if (!LinkZoomTransitionSourceNativeView) {\n return null;\n }\n return (\n <LinkZoomTransitionSourceNativeView\n {...props}\n disableForceFlatten\n collapsable={false}\n collapsableChildren={false}\n style={{ display: 'contents' }}\n />\n );\n}\n// #endregion\n\n// #region Zoom transition rect detector\nconst LinkZoomTransitionAlignmentRectDetectorNative: React.ComponentType<\n ViewProps & { identifier: string; disableForceFlatten?: boolean; children?: React.ReactNode }\n> | null = areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'LinkZoomTransitionAlignmentRectDetector')\n : Fragment;\nexport function LinkZoomTransitionAlignmentRectDetector(props: {\n identifier: string;\n children: React.ReactNode;\n}) {\n if (!LinkZoomTransitionAlignmentRectDetectorNative) {\n return null;\n }\n return (\n <LinkZoomTransitionAlignmentRectDetectorNative\n {...props}\n disableForceFlatten\n collapsable={false}\n collapsableChildren={false}\n style={{ display: 'contents' }}\n />\n );\n}\n// #endregion\n"]}
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/link/preview/native.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { requireNativeView } from 'expo';\nimport type { ImageRef } from 'expo-image';\nimport { Fragment, type PropsWithChildren } from 'react';\nimport { Platform, StyleSheet, type ViewProps, type ColorValue } from 'react-native';\n\nimport type { BasicTextStyle } from '../../utils/font';\n\nconst areNativeViewsAvailable =\n process.env.EXPO_OS === 'ios' && !Platform.isTV && global.RN$Bridgeless === true;\n\n// #region Action View\nexport interface NativeLinkPreviewActionProps {\n identifier: string;\n title: string;\n label?: string;\n icon?: string;\n image?: ImageRef | null;\n children?: React.ReactNode;\n disabled?: boolean;\n destructive?: boolean;\n discoverabilityLabel?: string;\n subtitle?: string;\n accessibilityLabel?: string;\n accessibilityHint?: string;\n // This may lead to race conditions, when two menu actions are on at the same time.\n // The logic should be enforced in the JS code, rather than in the native code.\n // singleSelection?: boolean;\n displayAsPalette?: boolean;\n displayInline?: boolean;\n preferredElementSize?: 'auto' | 'small' | 'medium' | 'large';\n isOn?: boolean;\n // There are issues with menu state updates when keep presented is set to true.\n // When updating the context menu state, it will either not update or it will recreate the menu. The latter is a problem,\n // because it will close all opened submenus and reset the scroll position.\n // TODO: (@ubax) find a way to fix this.\n keepPresented?: boolean;\n hidden?: boolean;\n tintColor?: ColorValue;\n barButtonItemStyle?: 'plain' | 'prominent';\n\n // These properties are for UIBarButtonItem compatibility but don't apply to context menus.\n // They're included for API consistency with toolbar items.\n sharesBackground?: boolean;\n hidesSharedBackground?: boolean;\n onSelected: () => void;\n titleStyle?: BasicTextStyle;\n}\nconst LinkPreviewNativeActionView: React.ComponentType<\n Omit<NativeLinkPreviewActionProps, 'image'> & { image?: number }\n> | null = areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'LinkPreviewNativeActionView')\n : null;\nexport function NativeLinkPreviewAction(props: NativeLinkPreviewActionProps) {\n if (!LinkPreviewNativeActionView) {\n return null;\n }\n // Needed to pass shared object ID to native side\n const imageObjectId = (\n props.image as\n | {\n __expo_shared_object_id__: number;\n }\n | undefined\n )?.__expo_shared_object_id__;\n return <LinkPreviewNativeActionView {...props} image={imageObjectId} />;\n}\n// #endregion\n\n// #region Preview View\nexport interface TabPath {\n oldTabKey: string;\n newTabKey: string;\n}\nexport interface NativeLinkPreviewProps extends ViewProps {\n nextScreenId: string | undefined;\n tabPath:\n | {\n path: TabPath[];\n }\n | undefined;\n disableForceFlatten?: boolean;\n onWillPreviewOpen?: () => void;\n onDidPreviewOpen?: () => void;\n onPreviewWillClose?: () => void;\n onPreviewDidClose?: () => void;\n onPreviewTapped?: () => void;\n onPreviewTappedAnimationCompleted?: () => void;\n children: React.ReactNode;\n}\nconst NativeLinkPreviewView: React.ComponentType<NativeLinkPreviewProps> | null =\n areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'NativeLinkPreviewView')\n : null;\nexport function NativeLinkPreview(props: NativeLinkPreviewProps) {\n if (!NativeLinkPreviewView) {\n return null;\n }\n return <NativeLinkPreviewView {...props} />;\n}\n// #endregion\n\n// #region Preview Content View\nexport interface NativeLinkPreviewContentProps extends ViewProps {\n preferredContentSize?: { width: number; height: number };\n}\nconst NativeLinkPreviewContentView: React.ComponentType<NativeLinkPreviewContentProps> | null =\n areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'NativeLinkPreviewContentView')\n : null;\n\nexport function NativeLinkPreviewContent(props: NativeLinkPreviewContentProps) {\n if (!NativeLinkPreviewContentView) {\n return null;\n }\n const style = StyleSheet.flatten([\n props.style,\n {\n position: 'absolute',\n top: 0,\n left: 0,\n } as const,\n ]);\n return <NativeLinkPreviewContentView {...props} style={style} />;\n}\n// #endregion\n\n// #region Zoom transition enabler\ninterface DismissalBoundsRect {\n minX?: number;\n maxX?: number;\n minY?: number;\n maxY?: number;\n}\nconst LinkZoomTransitionEnablerNativeView: React.ComponentType<\n ViewProps & { zoomTransitionSourceIdentifier: string; disableForceFlatten?: boolean }\n> | null = areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'LinkZoomTransitionEnabler')\n : null;\nexport function LinkZoomTransitionEnabler(props: {\n zoomTransitionSourceIdentifier: string;\n dismissalBoundsRect?: DismissalBoundsRect | null;\n}) {\n if (!LinkZoomTransitionEnablerNativeView) {\n return null;\n }\n return (\n <LinkZoomTransitionEnablerNativeView\n {...props}\n disableForceFlatten\n style={{ display: 'contents' }}\n />\n );\n}\n// #endregion\n\n// #region Zoom transition source\ninterface LinkSourceAlignmentRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\ninterface LinkZoomTransitionSourceProps extends PropsWithChildren {\n identifier: string;\n alignment?: LinkSourceAlignmentRect;\n animateAspectRatioChange?: boolean;\n}\n\ninterface LinkZoomTransitionSourceNativeProps extends ViewProps, LinkZoomTransitionSourceProps {\n disableForceFlatten?: boolean;\n}\n\nconst LinkZoomTransitionSourceNativeView: React.ComponentType<LinkZoomTransitionSourceNativeProps> | null =\n areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'LinkZoomTransitionSource')\n : null;\nexport function LinkZoomTransitionSource(props: LinkZoomTransitionSourceProps) {\n if (!LinkZoomTransitionSourceNativeView) {\n return null;\n }\n return (\n <LinkZoomTransitionSourceNativeView\n {...props}\n disableForceFlatten\n collapsable={false}\n collapsableChildren={false}\n style={{ display: 'contents' }}\n />\n );\n}\n// #endregion\n\n// #region Zoom transition rect detector\nconst LinkZoomTransitionAlignmentRectDetectorNative: React.ComponentType<\n ViewProps & { identifier: string; disableForceFlatten?: boolean; children?: React.ReactNode }\n> | null = areNativeViewsAvailable\n ? requireNativeView('ExpoRouterNativeLinkPreview', 'LinkZoomTransitionAlignmentRectDetector')\n : Fragment;\nexport function LinkZoomTransitionAlignmentRectDetector(props: {\n identifier: string;\n children: React.ReactNode;\n}) {\n if (!LinkZoomTransitionAlignmentRectDetectorNative) {\n return null;\n }\n return (\n <LinkZoomTransitionAlignmentRectDetectorNative\n {...props}\n disableForceFlatten\n collapsable={false}\n collapsableChildren={false}\n style={{ display: 'contents' }}\n />\n );\n}\n// #endregion\n"]}
@@ -9,7 +9,7 @@
9
9
  "publication": {
10
10
  "groupId": "expo.modules.router",
11
11
  "artifactId": "expo.modules.router",
12
- "version": "55.0.0-beta.4",
12
+ "version": "55.0.0-canary-20260128-67ce8d5",
13
13
  "repository": "local-maven-repo"
14
14
  }
15
15
  }
@@ -4,6 +4,7 @@ class LinkPreviewNativeActionView: RouterViewWithLogger, LinkPreviewMenuUpdatabl
4
4
  var identifier: String = ""
5
5
  // MARK: - Shared props
6
6
  @NativeActionProp(updateAction: true, updateMenu: true) var title: String = ""
7
+ @NativeActionProp(updateMenu: true) var label: String?
7
8
  @NativeActionProp(updateAction: true, updateMenu: true) var icon: String?
8
9
  var customImage: SharedRef<UIImage>? {
9
10
  didSet {
@@ -52,6 +52,9 @@ public class LinkPreviewNativeModule: Module {
52
52
  Prop("title") { (view: LinkPreviewNativeActionView, title: String) in
53
53
  view.title = title
54
54
  }
55
+ Prop("label") { (view: LinkPreviewNativeActionView, label: String?) in
56
+ view.label = label
57
+ }
55
58
  Prop("identifier") { (view: LinkPreviewNativeActionView, identifier: String) in
56
59
  view.identifier = identifier
57
60
  }
@@ -273,7 +273,17 @@ class LinkZoomTransitionAlignmentRectDetector: LinkZoomExpoView {
273
273
 
274
274
  class LinkZoomTransitionEnabler: LinkZoomExpoView {
275
275
  var zoomTransitionSourceIdentifier: String = ""
276
- var dismissalBoundsRect: DismissalBoundsRect?
276
+ var dismissalBoundsRect: DismissalBoundsRect? {
277
+ didSet {
278
+ // When dismissalBoundsRect changes, re-setup the zoom transition
279
+ // to include/exclude interactiveDismissShouldBegin callback
280
+ if superview != nil {
281
+ DispatchQueue.main.async {
282
+ self.setupZoomTransition()
283
+ }
284
+ }
285
+ }
286
+ }
277
287
 
278
288
  override func didMoveToSuperview() {
279
289
  super.didMoveToSuperview()
@@ -318,18 +328,18 @@ class LinkZoomTransitionEnabler: LinkZoomExpoView {
318
328
  }
319
329
  return rect
320
330
  }
321
- options.interactiveDismissShouldBegin = { context in
322
- // Check dismissal bounds rect if provided
323
- if let rect = self.dismissalBoundsRect {
324
- let location = context.location
325
- // Check each optional bound independently
326
- if let minX = rect.minX, location.x < minX { return false }
327
- if let maxX = rect.maxX, location.x > maxX { return false }
328
- if let minY = rect.minY, location.y < minY { return false }
329
- if let maxY = rect.maxY, location.y > maxY { return false }
331
+ // Only set up interactiveDismissShouldBegin when dismissalBoundsRect is set
332
+ // If dismissalBoundsRect is nil, don't set the callback - iOS uses default behavior
333
+ if let rect = self.dismissalBoundsRect {
334
+ options.interactiveDismissShouldBegin = { context in
335
+ let location = context.location
336
+ // Check each optional bound independently
337
+ if let minX = rect.minX, location.x < minX { return false }
338
+ if let maxX = rect.maxX, location.x > maxX { return false }
339
+ if let minY = rect.minY, location.y < minY { return false }
340
+ if let maxY = rect.maxY, location.y > maxY { return false }
341
+ return true
330
342
  }
331
-
332
- return true
333
343
  }
334
344
  controller.preferredTransition = .zoom(options: options) { _ in
335
345
  let sourceInfo = self.sourceRepository?.getSource(
@@ -37,6 +37,14 @@ struct RouterFontUtils {
37
37
  item.setTitleTextAttributes(attrs, for: .focused)
38
38
  }
39
39
 
40
+ static func clearTitleStyle(for item: UIBarButtonItem) {
41
+ item.setTitleTextAttributes(nil, for: .normal)
42
+ item.setTitleTextAttributes(nil, for: .highlighted)
43
+ item.setTitleTextAttributes(nil, for: .disabled)
44
+ item.setTitleTextAttributes(nil, for: .selected)
45
+ item.setTitleTextAttributes(nil, for: .focused)
46
+ }
47
+
40
48
  private static func resolveFontSize(_ fontSize: Double?) -> CGFloat {
41
49
  if let fontSize = fontSize {
42
50
  return CGFloat(fontSize)
@@ -3,6 +3,9 @@ import RNScreens
3
3
  import UIKit
4
4
 
5
5
  class RouterToolbarHostView: RouterViewWithLogger, LinkPreviewMenuUpdatable {
6
+ // Cached reference to the view controller to avoid responder chain traversal
7
+ private weak var cachedController: RNSScreen?
8
+
6
9
  // Mutable map of toolbar items
7
10
  var toolbarItemsArray: [String] = []
8
11
  var toolbarItemsMap: [String: RouterToolbarItemView] = [:]
@@ -70,7 +73,7 @@ class RouterToolbarHostView: RouterViewWithLogger, LinkPreviewMenuUpdatable {
70
73
  return nil
71
74
  }
72
75
  let item = UIBarButtonItem(
73
- title: menu.title,
76
+ title: menu.label,
74
77
  image: menu.icon.flatMap { UIImage(systemName: $0) },
75
78
  primaryAction: nil,
76
79
  menu: menu.uiAction as? UIMenu
@@ -91,8 +94,8 @@ class RouterToolbarHostView: RouterViewWithLogger, LinkPreviewMenuUpdatable {
91
94
  item.isEnabled = !menu.disabled
92
95
  if let accessibilityLabel = menu.accessibilityLabelForMenu {
93
96
  item.accessibilityLabel = accessibilityLabel
94
- } else {
95
- item.accessibilityLabel = menu.title
97
+ } else if let label = menu.label {
98
+ item.accessibilityLabel = label
96
99
  }
97
100
  if let accessibilityHint = menu.accessibilityHintForMenu {
98
101
  item.accessibilityHint = accessibilityHint
@@ -163,8 +166,17 @@ class RouterToolbarHostView: RouterViewWithLogger, LinkPreviewMenuUpdatable {
163
166
 
164
167
  override func didMoveToWindow() {
165
168
  super.didMoveToWindow()
166
- // Update toolbar items when the view is added to the window
167
- updateToolbarItems()
169
+ if window == nil {
170
+ // View was removed from window - hide toolbar and clear items
171
+ // Use cached controller since responder chain may be broken
172
+ if let controller = cachedController {
173
+ controller.setToolbarItems(nil, animated: true)
174
+ }
175
+ cachedController = nil // Clear cache when removed from window
176
+ } else {
177
+ // View was added to window - update toolbar items
178
+ updateToolbarItems()
179
+ }
168
180
  }
169
181
 
170
182
  func updateMenu() {
@@ -172,10 +184,14 @@ class RouterToolbarHostView: RouterViewWithLogger, LinkPreviewMenuUpdatable {
172
184
  }
173
185
 
174
186
  func findViewController() -> RNSScreen? {
187
+ if let cached = cachedController {
188
+ return cached
189
+ }
175
190
  var responder: UIResponder? = self
176
191
  while let r = responder {
177
- if let r = r as? RNSScreen {
178
- return r
192
+ if let screen = r as? RNSScreen {
193
+ cachedController = screen
194
+ return screen
179
195
  }
180
196
  responder = r.next
181
197
  }
@@ -131,6 +131,8 @@ class RouterToolbarItemView: RouterViewWithLogger {
131
131
  if type == .normal || type == nil {
132
132
  if let title {
133
133
  item.title = title
134
+ } else {
135
+ item.title = ""
134
136
  }
135
137
  item.possibleTitles = possibleTitles
136
138
  if let customImage {
@@ -139,12 +141,14 @@ class RouterToolbarItemView: RouterViewWithLogger {
139
141
  } else if let systemImageName {
140
142
  // Fallback to SF Symbol
141
143
  item.image = UIImage(systemName: systemImageName)
144
+ } else {
145
+ item.image = nil
142
146
  }
143
- if let tintColor = customTintColor {
144
- item.tintColor = tintColor
145
- }
147
+ item.tintColor = customTintColor
146
148
  if let titleStyle {
147
149
  RouterFontUtils.setTitleStyle(fromConfig: titleStyle, for: item)
150
+ } else {
151
+ RouterFontUtils.clearTitleStyle(for: item)
148
152
  }
149
153
  }
150
154
  }
@@ -154,19 +158,11 @@ class RouterToolbarItemView: RouterViewWithLogger {
154
158
  item.hidesSharedBackground = hidesSharedBackground
155
159
  item.sharesBackground = sharesBackground
156
160
  }
157
- if let barButtonItemStyle {
158
- item.style = barButtonItemStyle
159
- }
160
- if let width = width {
161
- item.width = CGFloat(width)
162
- }
161
+ item.style = barButtonItemStyle ?? .plain
162
+ item.width = width.map { CGFloat($0) } ?? 0
163
163
  item.isSelected = selected
164
- if let routerAccessibilityLabel = routerAccessibilityLabel {
165
- item.accessibilityLabel = routerAccessibilityLabel
166
- }
167
- if let routerAccessibilityHint = routerAccessibilityHint {
168
- item.accessibilityHint = routerAccessibilityHint
169
- }
164
+ item.accessibilityLabel = routerAccessibilityLabel
165
+ item.accessibilityHint = routerAccessibilityHint
170
166
  item.isEnabled = !disabled
171
167
  if #available(iOS 26.0, *) {
172
168
  if let badgeConfig = badgeConfiguration {
@@ -191,6 +187,8 @@ class RouterToolbarItemView: RouterViewWithLogger {
191
187
  badge.font = font
192
188
  }
193
189
  item.badge = badge
190
+ } else {
191
+ item.badge = nil
194
192
  }
195
193
  }
196
194
  }
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.router",
5
5
  "module": "expo.modules.router",
6
- "version": "55.0.0-beta.4",
6
+ "version": "55.0.0-canary-20260128-67ce8d5",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.router-55.0.0-beta.4.aar",
28
- "url": "expo.modules.router-55.0.0-beta.4.aar",
27
+ "name": "expo.modules.router-55.0.0-canary-20260128-67ce8d5.aar",
28
+ "url": "expo.modules.router-55.0.0-canary-20260128-67ce8d5.aar",
29
29
  "size": 13665,
30
30
  "sha512": "0c996832cda246cbf02acf875f7c3add8610a0e5e7c466bbe5fa2f073a6a644933eec90d1bff2a7fac7fd3c0c5bdae8a695373cebdec4f9853ce116658960554",
31
31
  "sha256": "054876f9b960d2ed5b7762c66b32c7e994f942c05013456f5e41e1fe6c71ee54",
@@ -60,8 +60,8 @@
60
60
  ],
61
61
  "files": [
62
62
  {
63
- "name": "expo.modules.router-55.0.0-beta.4.aar",
64
- "url": "expo.modules.router-55.0.0-beta.4.aar",
63
+ "name": "expo.modules.router-55.0.0-canary-20260128-67ce8d5.aar",
64
+ "url": "expo.modules.router-55.0.0-canary-20260128-67ce8d5.aar",
65
65
  "size": 13665,
66
66
  "sha512": "0c996832cda246cbf02acf875f7c3add8610a0e5e7c466bbe5fa2f073a6a644933eec90d1bff2a7fac7fd3c0c5bdae8a695373cebdec4f9853ce116658960554",
67
67
  "sha256": "054876f9b960d2ed5b7762c66b32c7e994f942c05013456f5e41e1fe6c71ee54",
@@ -80,8 +80,8 @@
80
80
  },
81
81
  "files": [
82
82
  {
83
- "name": "expo.modules.router-55.0.0-beta.4-sources.jar",
84
- "url": "expo.modules.router-55.0.0-beta.4-sources.jar",
83
+ "name": "expo.modules.router-55.0.0-canary-20260128-67ce8d5-sources.jar",
84
+ "url": "expo.modules.router-55.0.0-canary-20260128-67ce8d5-sources.jar",
85
85
  "size": 2318,
86
86
  "sha512": "9864add8e93e3c0a9a9c930aaed67016b15054c3fafd59a0bd3a5402d7cdc5827be84c22c2c137f3e5acb4e39270d9bfb9ca3fe11234458d4f2e0d4c78747f48",
87
87
  "sha256": "d5dff6259e86de721fc0f07fe740a5e18088e19b76738719b0a6f94caef06224",
@@ -0,0 +1 @@
1
+ aa93438aef53c2f0f5152f3ca7a6f84f6ef815fc2b29392ab7780d08311f048c18577dc6f96b62fb6cda5663a4e07fbcaf191da22ab2b44dcbc5f7489e3c8738
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.router</groupId>
11
11
  <artifactId>expo.modules.router</artifactId>
12
- <version>55.0.0-beta.4</version>
12
+ <version>55.0.0-canary-20260128-67ce8d5</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.router</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ 176bf2427036b00ba77f7979a2af12f7293a5c89c80bda847148b57627559a54a2b4b579ffa8c5a235e7126e4baacd659762a712012c782c4ac69d321a1aec13
@@ -3,11 +3,11 @@
3
3
  <groupId>expo.modules.router</groupId>
4
4
  <artifactId>expo.modules.router</artifactId>
5
5
  <versioning>
6
- <latest>55.0.0-beta.4</latest>
7
- <release>55.0.0-beta.4</release>
6
+ <latest>55.0.0-canary-20260128-67ce8d5</latest>
7
+ <release>55.0.0-canary-20260128-67ce8d5</release>
8
8
  <versions>
9
- <version>55.0.0-beta.4</version>
9
+ <version>55.0.0-canary-20260128-67ce8d5</version>
10
10
  </versions>
11
- <lastUpdated>20260127201425</lastUpdated>
11
+ <lastUpdated>20260128212655</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 41311df79e316194629b43561b3976b1
1
+ 56c0fc5f07e5b81f295e1ba3a06ebf9c
@@ -1 +1 @@
1
- 273452e1313adf505b0f8945eccda7c26be1a8e7
1
+ bc40b7e1a90d5b83d4688a79fe75d46fb3c72a6f
@@ -1 +1 @@
1
- 82f7ff74cd2afcac88dd9f57cb74ee77b50c06e3cec4359d7ef5479132318e87
1
+ f29db231bb291b5d07025a6f2d0de42cf256764f4f874f94d2a391bb3247d11f
@@ -1 +1 @@
1
- ce80d7a33f23127c761eb9353754fa382bc3267d9bac58e2e8b4b8391b5157f74e6becb4b1718b0cd75244e6caacb0299ddfed38dbf57f3b79dc8907d963f002
1
+ 0f43fd4b30688240fabd492140c67d3c9163d9c3d906c7a767101c421cb43d201c07348e6abdf4457a9531e93ba815cc9d8c225e317ef8cff929f9b0bdfe7f53
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-router",
3
- "version": "55.0.0-beta.4",
3
+ "version": "55.0.0-canary-20260128-67ce8d5",
4
4
  "description": "Expo Router is a file-based router for React Native and web applications.",
5
5
  "author": "650 Industries, Inc.",
6
6
  "license": "MIT",
@@ -81,13 +81,13 @@
81
81
  "expo"
82
82
  ],
83
83
  "peerDependencies": {
84
- "@expo/metro-runtime": "^55.0.3",
85
- "@expo/log-box": "55.0.3",
84
+ "@expo/metro-runtime": "55.0.4-canary-20260128-67ce8d5",
85
+ "@expo/log-box": "55.0.4-canary-20260128-67ce8d5",
86
86
  "@react-navigation/drawer": "^7.7.2",
87
87
  "@testing-library/react-native": ">= 12.0.0",
88
- "expo": "*",
89
- "expo-constants": "^55.0.2",
90
- "expo-linking": "^55.0.3",
88
+ "expo": "55.0.0-canary-20260128-67ce8d5",
89
+ "expo-constants": "55.0.3-canary-20260128-67ce8d5",
90
+ "expo-linking": "55.0.4-canary-20260128-67ce8d5",
91
91
  "react": "*",
92
92
  "react-dom": "*",
93
93
  "react-native": "*",
@@ -132,8 +132,8 @@
132
132
  "react-server-dom-webpack": "~19.0.4"
133
133
  },
134
134
  "dependencies": {
135
- "@expo/metro-runtime": "^55.0.3",
136
- "@expo/schema-utils": "^55.0.2",
135
+ "@expo/metro-runtime": "55.0.4-canary-20260128-67ce8d5",
136
+ "@expo/schema-utils": "55.0.3-canary-20260128-67ce8d5",
137
137
  "@radix-ui/react-slot": "1.2.0",
138
138
  "@radix-ui/react-tabs": "^1.1.12",
139
139
  "@react-navigation/bottom-tabs": "7.10.1",
@@ -142,9 +142,9 @@
142
142
  "client-only": "^0.0.1",
143
143
  "debug": "^4.3.4",
144
144
  "escape-string-regexp": "^4.0.0",
145
- "expo-image": "55.0.3",
146
- "expo-server": "^55.0.2",
147
- "expo-symbols": "^55.0.3",
145
+ "expo-image": "55.0.4-canary-20260128-67ce8d5",
146
+ "expo-server": "55.1.0-canary-20260128-67ce8d5",
147
+ "expo-symbols": "55.0.4-canary-20260128-67ce8d5",
148
148
  "fast-deep-equal": "^3.1.3",
149
149
  "invariant": "^2.2.4",
150
150
  "nanoid": "^3.3.8",
@@ -157,6 +157,5 @@
157
157
  "shallowequal": "^1.1.0",
158
158
  "use-latest-callback": "^0.2.1",
159
159
  "vaul": "^1.1.2"
160
- },
161
- "gitHead": "220594d473a3100248087151004ae4acb7282d5f"
160
+ }
162
161
  }
@@ -1 +0,0 @@
1
- e64db60be8c772aba02d8c9683b13eff459da37130d883d1691845590b1dda99
@@ -1 +0,0 @@
1
- cc21b78644b4b5afd3472df9f103eaeadf478064a61633bacb2c5eb14bfcac61bb1995069f30bf25ae4787ac3b5f487da6f19ab5e743ad17c2c8ce8b3649daa8
@@ -1 +0,0 @@
1
- a3ac698c60858f40f96f4e1495077cc4f3da750dd72fbb8b9a31f771af7bc04a
@@ -1 +0,0 @@
1
- b15ba19c39f6e79559d58c0878a8f233617af9be18adcf873e91318fdcf21ca31916c4b480a00e39c4cebfdb17072b3845bff0cc52833f03042063d2fd873ecc
@@ -1 +0,0 @@
1
- {"root":["./src/index.ts"],"version":"5.8.3"}