Vigia

Nâng cấp expo-router từ 57.x lên 58.x

So sánh API công khai của expo-router 57.0.28 và 58.0.20, được tính tự động từ kiểu TypeScript. Chữ ký thay đổi là thay đổi có thể không tương thích, không phải điều chắc chắn.

Tóm tắt

Đường dẫn import bị xóa15
Export bị xóa24
Chữ ký thay đổi28
Thành viên lớp hoặc interface bị xóa0
Thành viên lớp hoặc interface thay đổi1
Mới bị ngừng hỗ trợ3
Thay đổi yêu cầu (engines, phụ thuộc peer)10
Export mới54

Đường dẫn import bị xóa

Đường dẫn import bị xóa
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

Export bị xóa

importexportkindTrước
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

Chữ ký thay đổi

exportTrướcSau
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

Thành viên lớp hoặc interface bị xóa

Không phát hiện.

Thành viên lớp hoặc interface thay đổi

memberTrướcSau
LinkMenuProps.elementSize"small" | "auto" | "medium" | "large" | undefined"small" | "medium" | "large" | "auto" | undefined

Mới bị ngừng hỗ trợ

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

Thay đổi yêu cầu (engines, phụ thuộc peer)

TrướcSau
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—*
Export mới (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

Cung cấp dữ liệu này cho tác tử AI của bạn

Vigia là máy chủ MCP miễn phí: tác tử lập trình của bạn kiểm tra phiên bản, thay đổi phá vỡ tương thích và lỗ hổng trước khi viết mã. Không cần đăng ký, không cần khóa API.

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

Thêm vào CursorThêm vào VS Code★ Gắn sao trên GitHub

Mọi ứng dụng MCP khác
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Kỹ năng cho tác tử (SKILL.md): cho tác tử biết khi nào dùng Vigia · GitHub Action cho pull request

Câu hỏi thường gặp

Nâng cấp expo-router từ 57 lên 58 có những thay đổi không tương thích nào?

Giữa expo-router 57.0.28 và 58.0.20, Vigia tìm thấy 24 export bị xóa, 28 chữ ký thay đổi và 1 thành viên lớp hoặc interface bị xóa hay thay đổi.

Những gì bị ngừng hỗ trợ trong expo-router 58?

3 export hoặc thành viên mới bị đánh dấu ngừng hỗ trợ trong expo-router 58.0.20.

Dành cho tác tử

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