Vigia

Upgrading expo-router from 57.x to 58.x

Comparison of the public API of expo-router 57.0.28 and 58.0.20, computed automatically from their TypeScript types. A changed signature is a candidate for a breaking change, not a certainty.

Summary

Removed import paths15
Removed exports24
Changed signatures28
Removed class or interface members0
Changed class or interface members1
Newly deprecated3
Requirement changes (engines, peer dependencies)10
New exports54

Removed import paths

Removed import paths
expo-router/ui
expo-router/head
expo-router/html
expo-router/tabs
expo-router/stack
expo-router/drawer
expo-router/server
expo-router/js-tabs
expo-router/js-stack
expo-router/js-top-tabs
expo-router/native-stack
expo-router/testing-library
expo-router/react-navigation
expo-router/unstable-split-view
expo-router/unstable-native-tabs

Removed exports

importexportkindBefore
expo-routerPageRemovedinterfaceinterface
expo-routerAnalyticsEventtypePagePreloadedEvent | PageFocusedEvent | PageBlurredEvent | PageRemoved | ActionDispatchedEvent
expo-routerStackTitlePropstype{ children?: any; asChild?: boolean | undefined; style?: any; largeStyle?: any; large?: boolean | undefined; }
expo-routerPageBlurredEventinterfaceinterface
expo-routerPageFocusedEventinterfaceinterface
expo-routerStackHeaderPropsinterfaceinterface
expo-routerStackScreenPropsinterfaceinterface
expo-routerStackToolbarPropsinterfaceinterface
expo-routerPagePreloadedEventinterfaceinterface
expo-routerStackSearchBarPropsinterfaceinterface
expo-routerActionDispatchedEventinterfaceinterface
expo-routerStackScreenTitlePropstype{ children?: any; asChild?: boolean | undefined; style?: any; largeStyle?: any; large?: boolean | undefined; }
expo-routerStackToolbarIconPropstype{ src: ImageSourcePropType; renderingMode?: "template" | "original" | undefined; } | { sf: SFSymbol; } | { xcasset: string; renderingMode?: "template" | "original" | undefined; }
expo-routerStackToolbarMenuPropsinterfaceinterface
expo-routerStackToolbarViewPropsinterfaceinterface
expo-routerStackToolbarBadgePropsinterfaceinterface
expo-routerStackToolbarLabelPropsinterfaceinterface
expo-routerStackToolbarButtonPropsinterfaceinterface
expo-routerStackToolbarSpacerPropsinterfaceinterface
expo-routerunstable_navigationEventsvariable{ addListener: <EventType extends EventTypeName>(eventType: EventType, callback: (event: Payload<EventType>) => void) => () => void; emit: <EventType extends EventTypeName>(type: EventType, event: Payload<EventType>) => void; enable: () => void; isEnabled: () => boolean; }
expo-routerStackHeaderItemSharedPropsinterfaceinterface
expo-routerStackScreenBackButtonPropsinterfaceinterface
expo-routerStackToolbarMenuActionPropsinterfaceinterface
expo-routerStackToolbarSearchBarSlotPropsinterfaceinterface

Changed signatures

exportBeforeAfter
expo-router · Slot(props: Omit<NavigatorProps<any>, "children">): any(props: Omit<NavigatorProps<any>, "children" | "activityEnabled" | "activityDefaultThreshold"> & { activityEnabled?: boolean | undefined; }): React.JSX.Element
expo-router · Tabs(props: ComponentProps<any>): anyany
expo-router · Navigator<T extends UseNavigationBuilderRouter = (options: StackRouterOptions) => Router<StackNavigationState<ParamListBase>, Action | StackActionType>>({ initialRouteName, screenOptions, children, router, routerOptions, unstable_screenErrorBoundary, }: NavigatorProps<T>): any<T extends UseNavigationBuilderRouter = (options: StackRouterOptions) => Omit<Router<StackNavigationState<ParamListBase>, CommonNavigationAction | StackActionType>, "getStateForAction"> & { getStateForAction(state: StackNavigationState<ParamListBase>, action: CommonNavigationAction | StackActionType, options: RouterConfigOptions): RouterActionHandling.Unhandled | RouterActionResult<StackNavigationState<ParamListBase>>; }>({ screenOptions, children, activityEnabled, activityDefaultThreshold, router, routerOptions, unstable_screenErrorBoundary, }: NavigatorProps<T>): any
expo-router · TabRouter(args: TabRouterOptions): Router<TabNavigationState<ParamListBase>, Action | TabActionType>(options: TabRouterOptions): Omit<Router<TabNavigationState<ParamListBase>, CommonNavigationAction | TabActionType>, "getStateForAction"> & { getStateForAction(state: TabNavigationState<ParamListBase>, action: CommonNavigationAction | TabActionType, options: RouterConfigOptions): RouterActionHandling.Unhandled | RouterActionResult<TabNavigationState<ParamListBase>>; }
expo-router · Unmatched(): any(): React.JSX.Element
expo-router · ResultStatePartial<Omit<Readonly<{ key: string; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type: string; stale: false; }>, "stale" | "routes">> & Readonly<{ stale?: true | undefined; routes: PartialRoute<Route<string, object | undefined>>[]; }> & { state?: ResultState | undefined; }Partial<Omit<Readonly<{ key: string; routeKeySeq: number; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type?: string | undefined; stale: false; }>, "routes" | "stale">> & Readonly<{ stale?: true | undefined; routes: PartialRoute<Route<string, object | undefined>>[]; }> & { state?: ResultState | undefined; }
expo-router · ScreenProps{ name?: string | undefined; redirect?: boolean | undefined; initialParams?: Record<string, any> | undefined; options?: TOptions | ((prop: { route: RouteProp<ParamListBase, string>; navigation: any; }) => TOptions) | undefined; listeners?: Partial<{ [EventName in keyof (TEventMap & EventMapCore<TState>)]: EventListenerCallback<TEventMap & EventMapCore<TState>, EventName, (TEventMap & EventMapCore<TState>)[EventName]["canPreventDefault"]>; }> | ((prop: { route: RouteProp<ParamListBase, string>; navigation: any; }) => Partial<{ [EventName in keyof (TEventMap & EventMapCore<TState>)]: EventListen…{ name?: string | undefined; options?: TOptions | ((prop: { route: DescriptorRouteProp<ParamListBase, string>; navigation: any; }) => TOptions) | undefined; listeners?: Partial<{ [EventName in keyof (TEventMap & EventMapCore<TState>)]: EventListenerCallback<TEventMap & EventMapCore<TState>, EventName, (TEventMap & EventMapCore<TState>)[EventName]["canPreventDefault"]>; }> | ((prop: { route: RouteProp<ParamListBase, string>; navigation: any; }) => Partial<{ [EventName in keyof (TEventMap & EventMapCore<TState>)]: EventListenerCallback<TEventMap & EventMapCore<TState>, EventName, (TEventMap & Ev…
expo-router · SitemapType{ contextKey: string; filename: string; href: string | HrefObject; isInitial: boolean; isInternal: boolean; isGenerated: boolean; children: SitemapType[]; }{ contextKey: string; filename: string; href: string | HrefObject; isInternal: boolean; isGenerated: boolean; children: SitemapType[]; }
expo-router · StackRouter(options: StackRouterOptions): Router<StackNavigationState<ParamListBase>, Action | StackActionType>(options: StackRouterOptions): Omit<Router<StackNavigationState<ParamListBase>, CommonNavigationAction | StackActionType>, "getStateForAction"> & { getStateForAction(state: StackNavigationState<ParamListBase>, action: CommonNavigationAction | StackActionType, options: RouterConfigOptions): RouterActionHandling.Unhandled | RouterActionResult<StackNavigationState<ParamListBase>>; }
expo-router · useRoutePath(): string | undefined(): string
expo-router · ThemeProvider({ value, children }: Props): any({ value, children }: Props): React.JSX.Element
expo-router · useNavigation<T = Omit<NavigationProp<RootParamList>, "getState"> & { getState(): Readonly<{ key: string; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type: string; stale: false; }> | undefined; }>(parent?: string | HrefObject | undefined): T<T = Omit<NavigationProp<RootParamList>, "getState"> & { getState(): Readonly<{ key: string; routeKeySeq: number; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type?: string | undefined; stale: false; }> | undefined; }>(parent?: string | HrefObject | undefined): T
expo-router · ImperativeRouter{ back: () => void; canGoBack: () => boolean; push: (href: string | HrefObject, options?: NavigationOptions | undefined) => void; navigate: (href: string | HrefObject, options?: NavigationOptions | undefined) => void; replace: (href: string | HrefObject, options?: NavigationOptions | undefined) => void; dismiss: (count?: number | undefined) => void; dismissTo: (href: string | HrefObject, options?: NavigationOptions | undefined) => void; dismissAll: () => void; canDismiss: () => boolean; setParams: <T extends RoutePath>(params: Partial<RouteInputParams<T>>) => void; reload: () => void; prefetch…{ back: (options?: TransitionOptions | undefined) => void; canGoBack: () => boolean; push: (href: string | HrefObject, options?: NavigationOptions | undefined) => void; navigate: (href: string | HrefObject, options?: NavigationOptions | undefined) => void; replace: (href: string | HrefObject, options?: NavigationOptions | undefined) => void; dismiss: (count?: number | undefined, options?: TransitionOptions | undefined) => void; dismissTo: (href: string | HrefObject, options?: NavigationOptions | undefined) => void; dismissAll: (options?: TransitionOptions | undefined) => void; canDismiss: () =…
expo-router · RouteInputParamsExtract<HrefObject, { pathname: T; }> extends never ? never : Extract<HrefInputParamsObject, { pathname: T; }>["params"]T extends string ? UnknownInputParams : never
expo-router · useRootNavigation(): NavigationContainerRef<RootParamList> | null(): NavigationContainerRef<ParamListBase> | null
expo-router · withLayoutContext<TOptions extends object, T extends ComponentType<any>, TState extends NavigationState, TEventMap extends EventMapBase>(Nav: T, processor?: ((options: ScreenProps[]) => ScreenProps[]) | undefined, useOnlyUserDefinedScreens?: boolean | undefined): any<TOptions extends object = Record<string, any>, T extends ComponentType<any> = ComponentType<any>, TState extends NavigationState = Readonly<{ key: string; routeKeySeq: number; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type?: string | undefined; stale: false; }>, TEventMap extends EventMapBase = EventMapBase>(Nav: T, processScreens?: ((screens: (ScreenProps<TOptions, TState, TEventMap> & { name: string; })[]) => (ScreenProps<TOptions, TState, TEventMap> & { name: string; })[]) | undefined): any
expo-router · TabNavigationStateOmit<Readonly<{ key: string; index: number; routeNames: Extract<keyof ParamList, string>[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamList, keyof ParamList>[]; type: string; stale: false; }>, "history"> & { type: "tab"; history: { type: "route"; key: string; params?: object | undefined; }[]; preloadedRouteKeys: string[]; }Omit<Readonly<{ key: string; routeKeySeq: number; index: number; routeNames: Extract<keyof ParamList, string>[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamList, keyof ParamList>[]; type?: string | undefined; stale: false; }>, "history"> & { type?: "tab" | undefined; history?: { type: "route"; key: string; params?: object | undefined; }[] | undefined; }
expo-router · UnknownOutputParams{ [x: string]: string | string[]; }{ [x: string]: string | string[] | undefined; }
expo-router · StackNavigationStateReadonly<{ key: string; index: number; routeNames: Extract<keyof ParamList, string>[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamList, keyof ParamList>[]; type: string; stale: false; }> & { type: "stack"; preloadedRoutes: NavigationRoute<ParamList, keyof ParamList>[]; }Readonly<{ key: string; routeKeySeq: number; index: number; routeNames: Extract<keyof ParamList, string>[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamList, keyof ParamList>[]; type?: string | undefined; stale: false; }> & { type?: "stack" | undefined; }
expo-router · NativeStackOptionsArgsNativeStackScreenProps<ParamList, RouteName, NavigatorID> & { theme: NativeTheme; }Omit<NativeStackScreenProps<ParamList, RouteName, NavigatorID>, "route"> & { route: DescriptorRouteProp<ParamList, RouteName>; theme: NativeTheme; }
expo-router · useRootNavigationState(): Readonly<{ key: string; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type: string; stale: false; }>(): Readonly<{ key: string; routeKeySeq: number; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type?: string | undefined; stale: false; }>
expo-router · NativeStackNavigationPropOmit<NavigationHelpersCommon<ParamList, StackNavigationState<ParamList>>, "getParent"> & { getParent<T = NavigationProp<ParamListBase, string, string | undefined, Readonly<{ key: string; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type: string; stale: false; }>, {}, {}> | undefined>(id?: NavigatorID | undefined): T; setOptions(options: Partial<NativeStackNavigationOptions>): void; } & NavigationHelpersRoute<ParamList, RouteName> & EventConsumer<NativeStackNavigationEventMap & EventMapCore<StackNavigationState<ParamList…Omit<NavigationHelpersCommon<ParamList, StackNavigationState<ParamList>>, "getParent"> & { getParent<T = NavigationProp<ParamListBase, string, string | undefined, Readonly<{ key: string; routeKeySeq: number; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type?: string | undefined; stale: false; }>, {}, {}> | undefined>(id?: NavigatorID | undefined): T; setOptions(options: Partial<NativeStackNavigationOptions>): void; } & NavigationHelpersRoute<ParamList, RouteName> & EventConsumer<NativeStackNavigationEventMap & EventMapC…
expo-router · IntegrateWithRouterOptions{ useOnlyUserDefinedScreens?: boolean | undefined; } & CreatePropsOption<State, CreateProps>CreatePropsOption<State, CreateProps> & { activityDefaultThreshold?: number | undefined; processState?: ((state: State, descriptors: PlaceholderDescriptorMap<NavigatorOptions>, describe: DescribePlaceholderRoute<NavigatorOptions>) => State) | undefined; processDescriptors?: ((descriptors: PlaceholderDescriptorMap<NavigatorOptions>, state: State, describe: DescribePlaceholderRoute<NavigatorOptions>) => PlaceholderDescriptorMap<NavigatorOptions>) | undefined; processScreens?: ((screens: (ScreenProps<NavigatorOptions, State, EventMap> & { name: string; })[]) => (ScreenProps<NavigatorOptions, Stat…
expo-router · unstable_integrateWithRouter<NavigatorOptions extends object, State extends NavigationState, EventMap extends StandardNavigatorEventMapBase, NavigatorProps extends object, RouterOptions extends DefaultRouterOptions, CreateProps extends object = object>(navigator: any, router: RouterFactory<State, Readonly<{ type: string; payload?: object | undefined; source?: string | undefined; target?: string | undefined; }>, RouterOptions>, ...[options]: IntegrateWithRouterOptionsTuple<State, NoInfer<CreateProps>>): any<NavigatorOptions extends object, State extends NavigationState, EventMap extends StandardNavigatorEventMapBase, NavigatorProps extends object, RouterOptions extends DefaultRouterOptions, CreateProps extends object = object>(navigator: any, router: RouterFactory<State, Readonly<{ type: string; payload?: object | undefined; source?: string | undefined; target?: string | undefined; }>, RouterOptions>, ...[options]: IntegrateWithRouterOptionsTuple<State, NoInfer<CreateProps>, NavigatorOptions, EventMap>): any
expo-router · ExperimentalStackNavigationPropOmit<NavigationHelpersCommon<ParamList, StackNavigationState<ParamList>>, "getParent"> & { getParent<T = NavigationProp<ParamListBase, string, string | undefined, Readonly<{ key: string; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type: string; stale: false; }>, {}, {}> | undefined>(id?: NavigatorID | undefined): T; setOptions(options: Partial<ExperimentalStackNavigationOptions>): void; } & NavigationHelpersRoute<ParamList, RouteName> & EventConsumer<ExperimentalStackNavigationEventMap & EventMapCore<StackNavigationSta…Omit<NavigationHelpersCommon<ParamList, StackNavigationState<ParamList>>, "getParent"> & { getParent<T = NavigationProp<ParamListBase, string, string | undefined, Readonly<{ key: string; routeKeySeq: number; index: number; routeNames: string[]; history?: unknown[] | undefined; routes: NavigationRoute<ParamListBase, string>[]; type?: string | undefined; stale: false; }>, {}, {}> | undefined>(id?: NavigatorID | undefined): T; setOptions(options: Partial<ExperimentalStackNavigationOptions>): void; } & NavigationHelpersRoute<ParamList, RouteName> & EventConsumer<ExperimentalStackNavigationEventMap…
expo-router · ExperimentalStackNavigationEventMap{ transitionStart: { data: { closing: boolean; }; }; transitionEnd: { data: { closing: boolean; }; }; gestureCancel: { data: undefined; }; }{ removePrevented: { data: { action: Readonly<{ type: string; payload?: object | undefined; source?: string | undefined; target?: string | undefined; }>; }; }; transitionStart: { data: { closing: boolean; }; }; transitionEnd: { data: { closing: boolean; }; }; gestureCancel: { data: undefined; }; }
expo-router · StandardUseNavigationBuilderOptionsDefaultRouterOptions<string> & ({ children: React.ReactNode; layout?: ((props: { state: State; navigation: NavigationHelpers<ParamListBase, {}>; descriptors: Record<string, Descriptor<NavigatorOptions, NavigationProp<ParamListBase, string, string | undefined, State, NavigatorOptions, EventMap & StandardNavigatorEventMapBase>, RouteProp<ParamListBase, string>>>; children: React.ReactNode; }) => React.ReactElement) | undefined; screenListeners?: Partial<{ [EventName in keyof (EventMap & StandardNavigatorEventMapBase & EventMapCore<State>)]: EventListenerCallback<EventMap & StandardNavigatorEvent…DefaultRouterOptions<string> & ({ children: React.ReactNode; activityEnabled?: (State extends { type?: "stack" | undefined; } ? number | boolean : boolean) | undefined; layout?: ((props: { state: State; navigation: NavigationHelpers<ParamListBase, {}>; descriptors: Record<string, Descriptor<NavigatorOptions, NavigationProp<ParamListBase, string, string | undefined, State, NavigatorOptions, EventMap>, RouteProp<ParamListBase, string>>>; children: React.ReactNode; }) => React.ReactElement) | undefined; screenListeners?: Partial<{ [EventName in keyof (EventMap & EventMapCore<State>)]: EventListen…
expo-router · unstable_createStandardRouterNavigator<NavigatorOptions extends object, State extends NavigationState, EventMap extends StandardNavigatorEventMapBase, NavigatorProps extends object, RouterOptions extends DefaultRouterOptions, CreateProps extends object = object>(NavigatorContent: ComponentType<any>, router: RouterFactory<State, Readonly<{ type: string; payload?: object | undefined; source?: string | undefined; target?: string | undefined; }>, RouterOptions>, ...options: IntegrateWithRouterOptionsTuple<State, NoInfer<CreateProps>>): any<NavigatorOptions extends object, State extends NavigationState, EventMap extends StandardNavigatorEventMapBase, NavigatorProps extends object, RouterOptions extends DefaultRouterOptions, CreateProps extends object = object>(NavigatorContent: ComponentType<any>, router: RouterFactory<State, Readonly<{ type: string; payload?: object | undefined; source?: string | undefined; target?: string | undefined; }>, RouterOptions>, ...options: IntegrateWithRouterOptionsTuple<State, NoInfer<CreateProps>, NavigatorOptions, EventMap>): any

Removed class or interface members

None detected.

Changed class or interface members

memberBeforeAfter
LinkMenuProps.elementSize"small" | "auto" | "medium" | "large" | undefined"small" | "medium" | "large" | "auto" | undefined

Newly deprecated

export@deprecated
expo-router · withLayoutContextUse `integrateWithRouter` instead.
expo-router · unstable_integrateWithRouterUse `integrateWithRouter` instead.
expo-router · unstable_createStandardRouterNavigatorUse `createStandardRouterNavigator` instead.

Requirement changes (engines, peer dependencies)

BeforeAfter
peerDependencies.expo-linking^57.0.13^58.0.13
peerDependencies.@expo/log-box^57.0.4^58.0.12
peerDependencies.expo-constants^57.0.22^58.0.12
peerDependencies.@expo/metro-runtime^57.0.17^58.0.14
peerDependencies.react-native-screens^4.26.0^4.30.0 || ^5.0.0-alpha.3
peerDependencies.react-server-dom-webpack~19.0.4 || ~19.1.5 || ~19.2.4~19.0.4 || ~19.1.5 || ~19.2.4 || ~19.3.0
peerDependencies.@testing-library/react-native>= 13.2.0>= 14.0.0
peerDependencies.@expo/ui—^58.0.18
peerDependencies.expo-symbols—^58.0.4
peerDependencies.react-native-worklets—*
New exports (54)
importexportkind
expo-routerRoutertype
expo-routerRouteSourcetype
expo-routerextendRouterfunction
expo-routerRouterFactorytype
expo-routerTabActionTypetype
expo-routerLocaleDirectiontype
expo-routerNativeStackViewfunction
expo-routerNavigationStatetype
expo-routerRouterExtensiontype
expo-routerStackActionTypetype
expo-routerisActionHandledfunction
expo-routerNavigationActiontype
expo-routerattachRouteStatefunction
expo-routerusePreventRemovefunction
expo-routerRouterActionResulttype
expo-routercreateBaseTabPropsfunction
expo-routerRouterActionContexttype
expo-routerRouterActionReducertype
expo-routerRouterConfigOptionstype
expo-routerextendRouterActionsfunction
expo-routerintegrateWithRouterfunction
expo-routerDefaultRouterOptionstype
expo-routerNativeStackViewStatetype
expo-routerPreventRemoveOptionstype
expo-routerRouterActionHandlingenum
expo-routerRouterPageMarkDetailinterface
expo-routercreateBaseStackPropsfunction
expo-routerunstable_performancevariable
expo-routerRouterPageBlurredMarktype
expo-routerRouterPageFocusedMarktype
expo-routerRouterPageRemovedMarktype
expo-routerRouterPerformanceMarktype
expo-routerStandardNavigatorEmittype
expo-routerCommonNavigationActiontype
expo-routerRouterActionMarkDetailinterface
expo-routerRouterExtensionContexttype
expo-routerRouterExtensionOptionstype
expo-routercreateNativeStackPropsfunction
expo-routerIsWithinNativeNavigatorvariable
expo-routerNavigationAwareActivityfunction
expo-routerRouterPagePreloadedMarktype
expo-routerNativeStackDescriptorMaptype
expo-routerNavigationTransitionModetype
expo-routerRouterActionEnqueuedMarktype
expo-routerunstable_useIsNavigatingfunction
expo-routerBaseRouterPerformanceMarkinterface
expo-routerRouterActionDispatchedMarktype
expo-routerRouterBrowserHistoryActiontype
expo-routerRouterPerformanceMarkByNametype
expo-routerStandardNavigatorDescriptorinterface
expo-routerenableLegacyHeaderAppearancefunction
expo-routerunstable_PerformanceObserverclass
expo-routercreateStandardRouterNavigatorfunction
expo-routerunstable_enablePerformanceIntegrationfunction

Give your AI agent these facts

Vigia is a free MCP server: your coding agent checks versions, breaking changes and vulnerabilities before it writes code. No signup, no API key.

claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp

Add to CursorAdd to VS Code★ Star on GitHub

Any other MCP client
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Agent skill (SKILL.md): tells the agent when to use Vigia · GitHub Action for pull requests

Frequently asked questions

What are the breaking changes when upgrading expo-router from 57 to 58?

Between expo-router 57.0.28 and 58.0.20, Vigia found 24 removed exports, 28 changed signatures and 1 removed or changed class or interface members.

What became deprecated in expo-router 58?

3 exports or members are newly marked as deprecated in expo-router 58.0.20.

For agents

GET https://vigia.coredls.cloud/v1/packages/npm/expo-router/upgrade?from=57.0.28&to=58.0.20