Vigia

Memperbarui expo-router dari 57.x ke 58.x

Perbandingan API publik expo-router 57.0.28 dan 58.0.20, dihitung otomatis dari tipe TypeScript-nya. Tanda tangan yang berubah adalah kemungkinan perubahan tidak kompatibel, bukan kepastian.

Ringkasan

Jalur impor yang dihapus15
Ekspor yang dihapus24
Tanda tangan yang berubah28
Anggota kelas atau antarmuka yang dihapus0
Anggota kelas atau antarmuka yang berubah1
Baru ditandai usang3
Perubahan persyaratan (engines, dependensi peer)10
Ekspor baru54

Jalur impor yang dihapus

Jalur impor yang dihapus
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

Ekspor yang dihapus

importexportkindSebelum
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

Tanda tangan yang berubah

exportSebelumSesudah
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

Anggota kelas atau antarmuka yang dihapus

Tidak ada yang terdeteksi.

Anggota kelas atau antarmuka yang berubah

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

Baru ditandai usang

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

Perubahan persyaratan (engines, dependensi peer)

SebelumSesudah
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—*
Ekspor baru (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

Berikan fakta ini ke agen AI Anda

Vigia adalah server MCP gratis: agen coding Anda memeriksa versi, perubahan yang merusak kompatibilitas, dan kerentanan sebelum menulis kode. Tanpa pendaftaran, tanpa kunci API.

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

Tambahkan ke CursorTambahkan ke VS Code★ Bintang di GitHub

Klien MCP lainnya
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Skill agen (SKILL.md): memberi tahu agen kapan memakai Vigia · GitHub Action untuk pull request

Pertanyaan umum

Apa saja perubahan tidak kompatibel saat memperbarui expo-router dari 57 ke 58?

Antara expo-router 57.0.28 dan 58.0.20, Vigia menemukan 24 ekspor yang dihapus, 28 tanda tangan yang berubah, dan 1 anggota kelas atau antarmuka yang dihapus atau berubah.

Apa yang ditandai usang di expo-router 58?

3 ekspor atau anggota baru ditandai usang di expo-router 58.0.20.

Untuk agen

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