Skip to content

chore(deps): update dependency react-router@>=6.7.0 <6.30.6 to v7 [security] - #9554

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/npm-react-router-=6.7.0-6.30.6-vulnerability
Open

renovate[bot] wants to merge 1 commit into
masterfrom
renovate/npm-react-router-=6.7.0-6.30.6-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
react-router@>=6.7.0 <6.30.6 (source) [^6.30.6^7.18.0](https://renovatebot.com/diffs/npm/react-router@>=6.7.0 <6.30.6/6.30.6/7.18.0) age confidence

React Router: Arbitrary Constructor Injection via deserializeErrors() in React Router SSR Hydration

CVE-2026-53666 / GHSA-337j-9hxr-rhxg

More information

Details

If application code allows attacker supplied input to overwrite certain aspects of errors caught by the SSR process, then it was possible for attacker to trigger unexpected constructor execution on the client which would trigger outbound network traffic. This is only possible with very specific (and unlikely) application layer code.

[!NOTE]
This does not impact your application if you are using Declarative Mode. This only impacts Framework Mode and Data Mode applications doing manual SSR/hydration

Severity

  • CVSS Score: 6.1 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


React Router: Open redirect via backslash in and useNavigate (CVE-2025-68470 bypass)

CVE-2026-53669 / GHSA-wrjc-x8rr-h8h6

More information

Details

This is a follow up to CVE-2025-68470. React Router was alerted to certain scenarios in which the fix there was incomplete so there still existed some scenarios where attacker supplied paths passed to navigation mechanisms could result in unexpected external navigations.

Severity

  • CVSS Score: 5.1 / 10 (Medium)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

remix-run/react-router (react-router@>=6.7.0 <6.30.6)

v7.18.0

Compare Source

Patch Changes
  • Fix server handler prerender responses when using ssr: false and future.v8_trailingSlashAwareDataRequests: true. Avoids false positive "SPA Mode" detection when serving prerendered paths (#​15173)
  • Use the ServerRouter nonce for nonce-aware SSR components when they don't provide their own value so strict CSP pages can load them. (#​15170)
  • Use turbo-stream to serialize and deserialize Framework Mode hydration errors (#​15175)
  • Precompute route branch matchers to avoid recompiling route path regexes during matching (#​15186)
  • Use the constructed request URL host when validating action request origins. (#​15185)
  • Remove the un-documented custom error serialization logic from Data Mode SSR built-in hydration flows (#​15175)
  • Validate protocols in RSC render redirects (#​15177)
  • Consolidate url normalization logic and better handle mixed slashes (#​15176)

v7.17.0

Compare Source

Minor Changes
  • Ship a subset of the official documentation inside the react-router package (#​15121)

    • Markdown docs are now available in node_modules/react-router/docs, letting AI coding agents and the React Router agent skills read official docs locally
    • Excludes auto-generated API docs (api/), community/ content, and tutorials (tutorials/)

v7.16.0

Compare Source

Minor Changes
  • Stabilize future.unstable_trailingSlashAwareDataRequests as future.v8_trailingSlashAwareDataRequests (#​15098)
Patch Changes
  • Disable manifest path when lazy route dicovery is disabled (#​15068)

  • Fix browser URL creation to use the configured history window instead of the global window. (#​15066)

    • Pass the history/router window through to createBrowserURLImpl so custom window contexts keep the correct URL origin.
  • Fix useNavigation() return type to preserve discriminated union across navigation states (#​15095)

  • Widen MetaDescriptor script:ld+json type from LdJsonObject to LdJsonObject | LdJsonObject[] to permit multiple JSON-LD schemas in a single <script type="application/ld+json"> tag emitted by <Meta /> (#​15082)

v7.15.1

Compare Source

Patch Changes
  • Update router to operate on fetcher Maps in an immutable manner to avoid delayed React renders from potentially reading an updated but not yet committed Map. This could result in brief flickers in some fetcher-driven optimistic UI scenarios. (#​15028)
  • Fix serverLoader() returning stale SSR data when a client navigation aborts pending hydration before the hydration clientLoader resolves (#​15022)
  • Fix RouterProvider onError callback not being called for synchronous initial loader errors in SPA mode (#​15039) (#​14942)
  • Memoize useFetchers to return a stable identity and only change if fetchers changed (#​15028)
  • Internal refactor to consolidate mutation request detection through shared utility (#​15033)
Unstable Changes

⚠️ Unstable features are not recommended for production use

  • Add a new unstable_useRouterState() hook that consolidates access to active and pending router states (RFC: #​12358) (#​15017)
    • Data/Framework/RSC only — throws when used without a data router

    • This should allow you to consolidate usages of the following hooks which will likely be deprecated and removed in a future major version

      • useLocation
      • useSearchParams
      • useParams
      • useMatches
      • useNavigationType
      • useNavigation
      let { active, pending } = unstable_useRouterState();
      
      // Active is always populated with the current location
      active.location; // replaces `useLocation()`
      active.searchParams; // replaces `useSearchParams()[0]`
      active.params; // replaces `useParams()`
      active.matches; // replaces `useMatches()`
      active.type; // replaces `useNavigationType()`
      
      // Pending is only populated during a navigation
      pending.location; // replaces `useNavigation().location`
      pending.searchParams; // equivalent to `new URLSearchParams(useNavigation().search)`
      pending.params; // Not directly accessible today
      pending.matches; // Not directly accessible today
      pending.type; // Not directly accessible today
      pending.state; // replaces `useNavigation().state`
      pending.formMethod; // replaces useNavigation().formMethod
      pending.formAction; // replaces useNavigation().formAction
      pending.formEncType; // replaces useNavigation().formEncType
      pending.formData; // replaces useNavigation().formData
      pending.json; // replaces useNavigation().json
      pending.text; // replaces useNavigation().text

v7.15.0

Compare Source

Minor Changes
  • Stabilize unstable_defaultShouldRevalidate as defaultShouldRevalidate on <Link>, <Form>, useLinkClickHandler, useSubmit, fetcher.submit, and setSearchParams (a993f09)

    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • Stabilize the instrumentation APIs. unstable_instrumentations is now instrumentations and unstable_pattern is now pattern (a993f09)

    • The unstable_ServerInstrumentation, unstable_ClientInstrumentation, unstable_InstrumentRequestHandlerFunction, unstable_InstrumentRouterFunction, unstable_InstrumentRouteFunction, and unstable_InstrumentationHandlerResult types have had their unstable_ prefixes removed
    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • Stabilize unstable_mask as mask on <Link>, useLinkClickHandler, and useNavigate, and rename the corresponding Location.unstable_mask field to Location.mask (a993f09)

    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • Stabilize the unstable_normalizePath option on staticHandler.query and staticHandler.queryRoute as normalizePath (a993f09)

    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • Stabilize future.unstable_passThroughRequests as future.v8_passThroughRequests (a993f09)

    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • Remove unstable_subResourceIntegrity from the runtime FutureConfig type; the flag is now controlled by the top-level subResourceIntegrity option in react-router.config.ts (a993f09)

    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • Stabilize unstable_url as url on loader, action, and middleware function args (a993f09)

    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
  • Stabilize unstable_useTransitions as useTransitions on <BrowserRouter>, <HashRouter>, <HistoryRouter>, <MemoryRouter>, <Router>, <RouterProvider>, <HydratedRouter>, and useLinkClickHandler (a993f09)

    • ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
Patch Changes
  • Add nonce to <Scripts> <link rel="modulepreload"> elements (if provided) (af5d49b)

  • Fix a bug with unstable_defaultShouldRevalidate={false} where parent routes that did not export a shouldRevalidate function could be incorrectly included in the single fetch call for new child route data (#​15012)

  • Improve server-side route matching performance by pre-computing flattened/cached route branches (#​14967) (af5d49b)

    • Performance benchmarks showed roughly a 10-15% improvement in server-side request handling performance
  • Mark mask as an optional field in Location for easier mocking in unit tests (#​14999)

  • Cache flattened/ranked route branches to optimize server-side route matching (#​14967)

  • Improve route matching performance in Framework/Data Mode (#​14971) (af5d49b)

    • Avoiding unnecessary calls to matchRoutes in data router scenarios
      • This includes adding back the optimization that was removed in 7.6.0 (#​13562)
      • The issues that prompted the revert have been addressed by using the available router matches but always updating match.route to the latest route in the manifest
    • Leverage pre-computed pre-computing flattened/cached route branches during client side route matching
    • Performance benchmarks showed roughly a 15-30% improvement in server-side request handling performance

v7.14.2

Compare Source

Patch Changes
  • Remove the un-documented custom error serialization logic from the internal turbo-stream implementation. React Router only automatically handles serialization of Error and it's standard subtypes (SyntaxError, TypeError, etc.). ([aabf4a1)

  • Properly handle parent middleware redirects during fetcher.load ([aabf4a1)

  • Remove redundant Omit<RouterProviderProps, "flushSync"> from react-router/dom RouterProvider ([aabf4a1)

  • Improved types for generatePath's param arg ([aabf4a1)

    Type errors when required params are omitted:

    // Before
    // Passes type checks, but throws at runtime 💥
    generatePath(":required", { required: null });
    
    // After
    generatePath(":required", { required: null });
    //                          ^^^^^^^^ Type 'null' is not assignable to type 'string'.ts(2322)

    Allow omission of optional params:

    // Before
    generatePath(":optional?", {});
    //                         ^^ Property 'optional' is missing in type '{}' but required in type '{ optional: string | null | undefined; }'.ts(2741)
    
    // After
    generatePath(":optional?", {});

    Allows extra keys:

    // Before
    generatePath(":a", { a: "1", b: "2" });
    //                           ^ Object literal may only specify known properties, and 'b' does not exist in type '{ a: string; }'.ts(2353)
    
    // After
    generatePath(":a", { a: "1", b: "2" });

v7.14.1

Compare Source

Patch Changes
  • Fix a potential race condition that can occur when rendering a HydrateFallback and initial loaders land before the router.subscribe call happens in the RouterProvider layout effect
  • Normalize double-slashes in redirect paths

v7.14.0

Compare Source

Patch Changes
  • UNSTABLE RSC FRAMEWORK MODE BREAKING CHANGE - Existing route module exports remain unchanged from stable v7 non-RSC mode, but new exports are added for RSC mode. If you want to use RSC features, you will need to update your route modules to export the new annotations. (#​14901)

    If you are using RSC framework mode currently, you will need to update your route modules to the new conventions. The following route module components have their own mutually exclusive server component counterparts:

    Server Component Export Client Component
    ServerComponent default
    ServerErrorBoundary ErrorBoundary
    ServerLayout Layout
    ServerHydrateFallback HydrateFallback

    If you were previously exporting a ServerComponent, your ErrorBoundary, Layout, and HydrateFallback were also server components. If you want to keep those as server components, you can rename them and prefix them with Server. If you were previously importing the implementations of those components from a client module, you can simply inline them.

    Example:

    Before

    import { ErrorBoundary as ClientErrorBoundary } from "./client";
    
    export function ServerComponent() {
      // ...
    }
    
    export function ErrorBoundary() {
      return <ClientErrorBoundary />;
    }
    
    export function Layout() {
      // ...
    }
    
    export function HydrateFallback() {
      // ...
    }

    After

    export function ServerComponent() {
      // ...
    }
    
    export function ErrorBoundary() {
      // previous implementation of ClientErrorBoundary, this is now a client component
    }
    
    export function ServerLayout() {
      // rename previous Layout export to ServerLayout to make it a server component
    }
    
    export function ServerHydrateFallback() {
      // rename previous HydrateFallback export to ServerHydrateFallback to make it a server component
    }
  • rsc Link prefetch (#​14902)

  • Remove recursion from turbo-stream v2 allowing for encoding / decoding of massive payloads. (#​14838)

  • encodeViaTurboStream leaked memory via unremoved AbortSignal listener (#​14900)

v7.13.2

Compare Source

Patch Changes
  • Fix clientLoader.hydrate when an ancestor route is also hydrating a clientLoader (#​14835)

  • Fix type error when passing Framework Mode route components using Route.ComponentProps to createRoutesStub (#​14892)

  • Fix percent encoding in relative path navigation (#​14786)

  • Add future.unstable_passThroughRequests flag (#​14775)

    By default, React Router normalizes the request.url passed to your loader, action, and middleware functions by removing React Router's internal implementation details (.data suffixes, index + _routes query params).

    Enabling this flag removes that normalization and passes the raw HTTP request instance to your handlers. This provides a few benefits:

    • Reduces server-side overhead by eliminating multiple new Request() calls on the critical path
    • Allows you to distinguish document from data requests in your handlers base don the presence of a .data suffix (useful for observability purposes)

    If you were previously relying on the normalization of request.url, you can switch to use the new sibling unstable_url parameter which contains a URL instance representing the normalized location:

    // ❌ Before: you could assume there was no `.data` suffix in `request.url`
    export async function loader({ request }: Route.LoaderArgs) {
      let url = new URL(request.url);
      if (url.pathname === "/path") {
        // This check will fail with the flag enabled because the `.data` suffix will
        // exist on data requests
      }
    }
    
    // ✅ After: use `unstable_url` for normalized routing logic and `request.url`
    // for raw routing logic
    export async function loader({ request, unstable_url }: Route.LoaderArgs) {
      if (unstable_url.pathname === "/path") {
        // This will always have the `.data` suffix stripped
      }
    
      // And now you can distinguish between document versus data requests
      let isDataRequest = new URL(request.url).pathname.endsWith(".data");
    }
  • Internal refactor to consolidate framework-agnostic/React-specific route type layers - no public API changes (#​14765)

  • Sync protocol validation to rsc flows (#​14882)

  • Add a new unstable_url: URL parameter to route handler methods (loader, action, middleware, etc.) representing the normalized URL the application is navigating to or fetching, with React Router implementation details removed (.datasuffix, index/_routes query params) (#​14775)

    This is being added alongside the new future.unstable_passthroughRequests future flag so that users still have a way to access the normalized URL when that flag is enabled and non-normalized request's are being passed to your handlers. When adopting this flag, you will only need to start leveraging this new parameter if you are relying on the normalization of request.url in your application code.

    If you don't have the flag enabled, then unstable_url will match request.url.

v7.13.1

Compare Source

Patch Changes
  • fix null reference exception in bad codepath leading to invalid route tree comparisons (#​14780)

  • fix: clear timeout when turbo-stream encoding completes (#​14810)

  • Improve error message when Origin header is invalid (#​14743)

  • Fix matchPath optional params matching without a "/" separator. (#​14689)

    • matchPath("/users/:id?", "/usersblah") now returns null.
    • matchPath("/test_route/:part?", "/test_route_more") now returns null.
  • add RSC unstable_getRequest (#​14758)

  • Fix HydrateFallback rendering during initial lazy route discovery with matching splat route (#​14740)

  • [UNSTABLE] Add support for <Link unstable_mask> in Data Mode which allows users to navigate to a URL in the router but "mask" the URL displayed in the browser. This is useful for contextual routing usages such as displaying an image in a model on top of a gallery, but displaying a browser URL directly to the image that can be shared and loaded without the contextual gallery in the background. (#​14716)

    // routes/gallery.tsx
    export function clientLoader({ request }: Route.LoaderArgs) {
      let sp = new URL(request.url).searchParams;
      return {
        images: getImages(),
        // When the router location has the image param, load the modal data
        modalImage: sp.has("image") ? getImage(sp.get("image")!) : null,
      };
    }
    
    export default function Gallery({ loaderData }: Route.ComponentProps) {
      return (
        <>
          <GalleryGrid>
            {loaderData.images.map((image) => (
              <Link
                key={image.id}
                {/* Navigate the router to /galley?image=N */}}
                to={`/gallery?image=${image.id}`}
                {/* But display /images/N in the URL bar */}}
                unstable_mask={`/images/${image.id}`}
              >
                <img src={image.url} alt={image.alt} />
              </Link>
            ))}
          </GalleryGrid>
    
          {/* When the modal data exists, display the modal */}
          {data.modalImage ? (
            <dialog open>
              <img src={data.modalImage.url} alt={data.modalImage.alt} />
            </dialog>
          ) : null}
        </>
      );
    }

    Notes:

    • The masked location, if present, will be available on useLocation().unstable_mask so you can detect whether you are currently masked or not.
    • Masked URLs only work for SPA use cases, and will be removed from history.state during SSR.
    • This provides a first-class API to mask URLs in Data Mode to achieve the same behavior you could do in Declarative Mode via manual backgroundLocation management.
  • RSC: Update failed origin checks to return a 400 status and appropriate UI instead of a generic 500 (#​14755)

  • Preserve query parameters and hash on manifest version mismatch reload (#​14813)

v7.13.0

Compare Source

Minor Changes
  • Add crossOrigin prop to Links component (#​14687)
Patch Changes
  • Fix double slash normalization for useNavigate colon urls (#​14718)
  • Update failed origin checks to return a 400 status instead of a 500 (#​14737)
  • Bugfix #​14666: Inline criticalCss is missing nonce (#​14691)
  • Loosen allowedActionOrigins glob check so ** matches all domains (#​14722)

v7.12.0

Compare Source

Minor Changes
  • Add additional layer of CSRF protection by rejecting submissions to UI routes from external origins. If you need to permit access to specific external origins, you can specify them in the react-router.config.ts config allowedActionOrigins field. (#​14708)
Patch Changes
  • Fix generatePath when used with suffixed params (i.e., "/books/:id.json") (#​14269)

  • Export UNSAFE_createMemoryHistory and UNSAFE_createHashHistory alongside UNSAFE_createBrowserHistory for consistency. These are not intended to be used for new apps but intended to help apps usiong unstable_HistoryRouter migrate from v6->v7 so they can adopt the newer APIs. (#​14663)

  • Escape HTML in scroll restoration keys (#​14705)

  • Validate redirect locations (#​14706)

  • [UNSTABLE] Pass <Scripts nonce> value through to the underlying importmap script tag when using future.unstable_subResourceIntegrity (#​14675)

  • [UNSTABLE] Add a new future.unstable_trailingSlashAwareDataRequests flag to provide consistent behavior of request.pathname inside middleware, loader, and action functions on document and data requests when a trailing slash is present in the browser URL. (#​14644)

    Currently, your HTTP and request pathnames would be as follows for /a/b/c and /a/b/c/

    URL /a/b/c HTTP pathname request pathname`
    Document /a/b/c /a/b/c
    Data /a/b/c.data /a/b/c
    URL /a/b/c/ HTTP pathname request pathname`
    Document /a/b/c/ /a/b/c/
    Data /a/b/c.data /a/b/c ⚠️

    With this flag enabled, these pathnames will be made consistent though a new _.data format for client-side .data requests:

    URL /a/b/c HTTP pathname request pathname`
    Document /a/b/c /a/b/c
    Data /a/b/c.data /a/b/c
    URL /a/b/c/ HTTP pathname request pathname`
    Document /a/b/c/ /a/b/c/
    Data /a/b/c/_.data ⬅️ /a/b/c/

    This a bug fix but we are putting it behind an opt-in flag because it has the potential to be a "breaking bug fix" if you are relying on the URL format for any other application or caching logic.

    Enabling this flag also changes the format of client side .data requests from /_root.data to /_.data when navigating to / to align with the new format. This does not impact the request pathname which is still / in all cases.

  • Preserve clientLoader.hydrate=true when using <HydratedRouter unstable_instrumentations> (#​14674)

v7.11.0

Compare Source

Minor Changes
  • Stabilize <HydratedRouter onError>/<RouterProvider onError> (#​14546)
Patch Changes
  • add support for throwing redirect Response's at RSC render time (#​14596)

  • Support for throwing data() and Response from server component render phase. Response body is not serialized as async work is not allowed as error encoding phase. If you wish to transmit data to the boundary, throw data() instead. (#​14632)

  • Fix unstable_useTransitions prop on <Router> component to permit omission for backewards compatibility (#​14646)

  • routeRSCServerRequest replace fetchServer with serverResponse (#​14597)

  • [UNSTABLE] Add a new unstable_defaultShouldRevalidate flag to various APIs to allow opt-ing out of standard revalidation behaviors. (#​14542)

    If active routes include a shouldRevalidate function, then your value will be passed as defaultShouldRevalidate in those function so that the route always has the final revalidation determination.

    • <Form method="post" unstable_defaultShouldRevalidate={false}>
    • submit(data, { method: "post", unstable_defaultShouldRevalidate: false })
    • <fetcher.Form method="post" unstable_defaultShouldRevalidate={false}>
    • fetcher.submit(data, { method: "post", unstable_defaultShouldRevalidate: false })

    This is also available on non-submission APIs that may trigger revalidations due to changing search params:

    • <Link to="/" unstable_defaultShouldRevalidate={false}>
    • navigate("/?foo=bar", { unstable_defaultShouldRevalidate: false })
    • setSearchParams(params, { unstable_defaultShouldRevalidate: false })
  • Allow redirects to be returned from client side middleware (#​14598)

  • Handle dataStrategy implementations that return insufficient result sets by adding errors for routes without any available result (#​14627)

v7.10.1

Compare Source

Patch Changes
  • Update the useOptimistic stub we provide for React 18 users to use a stable setter function to avoid potential useEffect loops - specifically when using <Link viewTransition> (#​14628)

v7.10.0

Compare Source

Minor Changes
  • Stabilize fetcher.reset() (#​14545)

    • ⚠️ This is a breaking change if you have begun using fetcher.unstable_reset()
  • Stabilize the dataStrategy match.shouldRevalidateArgs/match.shouldCallHandler() APIs. (#​14592)

    • The match.shouldLoad API is now marked deprecated in favor of these more powerful alternatives

    • If you're using this API in a custom dataStrategy today, you can swap to the new API at your convenience:

      // Before
      const matchesToLoad = matches.filter((m) => m.shouldLoad);
      
      // After
      const matchesToLoad = matches.filter((m) => m.shouldCallHandler());
    • match.shouldRevalidateArgs is the argument that will be passed to the route shouldRevaliate function

    • Combined with the parameter accepted by match.shouldCallHandler, you can define a custom revalidation behavior for your dataStrategy:

    const matchesToLoad = matches.filter((m) => {
      const defaultShouldRevalidate = customRevalidationBehavior(
        match.shouldRevalidateArgs,
      );
      return m.shouldCallHandler(defaultShouldRevalidate);
      // The argument here will override the internal `defaultShouldRevalidate` value
    });
Patch Changes
  • Fix a Framework Mode bug where the defaultShouldRevalidate parameter to shouldRevalidate would not be correct after action returned a 4xx/5xx response (true when it should have been false) (#​14592)

    • If your shouldRevalidate function relied on that parameter, you may have seen unintended revalidations
  • Fix fetcher.submit failing with plain objects containing a tagName property (#​14534)

  • [UNSTABLE] Add unstable_pattern to the parameters for client side unstable_onError, refactor how it's called by RouterProvider to avoid potential strict mode issues (#​14573)

  • Add new unstable_useTransitions flag to routers to give users control over the usage of React.startTransition and React.useOptimistic. (#​14524)

    • Framework Mode + Data Mode:
      • <HydratedRouter unstable_transition>/<RouterProvider unstable_transition>
      • When left unset (current default behavior)
        • Router state updates are wrapped in React.startTransition
        • ⚠️ This can lead to buggy behaviors if you are wrapping your own navigations/fetchers in React.startTransition
        • You should set the flag to true if you run into this scenario to get the enhanced useOptimistic behavior (requires React 19)
      • When set to true
        • Router state updates remain wrapped in React.startTransition (as they are without the flag)
        • Link/Form navigations will be wrapped in React.startTransition
        • A subset of router state info will be surfaced to the UI during navigations via React.useOptimistic (i.e., useNavigation(), useFetchers(), etc.)
          • ⚠️ This is a React 19 API so you must also be React 19 to opt into this flag for Framework/Data Mode
      • When set to false
        • The router will not leverage React.startTransition or React.useOptimistic on any navigations or state changes
    • Declarative Mode
      • <BrowserRouter unstable_useTransitions>
      • When left unset
        • Router state updates are wrapped in React.startTransition
      • When set to true
        • Router state updates remain wrapped in React.startTransition (as they are without the flag)
        • Link/Form navigations will be wrapped in React.startTransition
      • When set to false
        • the router will not leverage React.startTransition on any navigations or state changes
  • Fix the promise returned from useNavigate in Framework/Data Mode so that it properly tracks the duration of popstate navigations (i.e., navigate(-1)) (#​14524)

  • Fix internal type error in useRoute types that surfaces when skipLibCheck is disabled (#​14577)

  • Preserve statusText on the ErrorResponse instance when throwing data() from a route handler (#​14555)

  • Optimize href() to avoid backtracking regex on splat (#​14329)

v7.9.6

Compare Source

Patch Changes
  • [UNSTABLE] Add location/params as arguments to client-side unstable_onError to permit enhanced error reporting. (#​14509)

    ⚠️ This is a breaking change if you've already adopted unstable_onError. The second errorInfo parameter is now an object with location and params:

    // Before
    function errorHandler(error: unknown, errorInfo?: React.errorInfo) {
      /*...*/
    }
    
    // After
    function errorHandler(
      error: unknown,
      info: {
        location: Location;
        params: Params;
        errorInfo?: React.ErrorInfo;
      },
    ) {
      /*...*/
    }
  • Properly handle ancestor thrown middleware errors before next() on fetcher submissions (#​14517)

  • Fix issue with splat routes interfering with multiple calls to patchRoutesOnNavigation (#​14487)

  • Normalize double-slashes in resolvePath (#​14529)

v7.9.5

Compare Source

Patch Changes
  • Move RSCHydratedRouter and utils to /dom export. (#​14457)

  • useRoute: return type-safe handle (#​14462)

    For example:

    // app/routes/admin.tsx
    const handle = { hello: "world" };
    // app/routes/some-other-route.tsx
    export default function Component() {
      const admin = useRoute("routes/admin");
      if (!admin) throw new Error("Not nested within 'routes/admin'");
      console.log(admin.handle);
      //                ^? { hello: string }
    }
  • Ensure action handlers run for routes with middleware even if no loader is present (#​14443)

  • Add unstable_instrumentations API to allow users to add observablity to their apps by instrumenting route loaders, actions, middlewares, lazy, as well as server-side request handlers and client side navigations/fetches (#​14412)

    • Framework Mode:
      • entry.server.tsx: export const unstable_instrumentations = [...]
      • entry.client.tsx: <HydratedRouter unstable_instrumentations={[...]} />
    • Data Mode
      • createBrowserRouter(routes, { unstable_instrumentations: [...] })

    This also adds a new unstable_pattern parameter to loaders/actions/middleware which contains the un-interpolated route pattern (i.e., /blog/:slug) which is useful for aggregating performance metrics by route

v7.9.4

Compare Source

Patch Changes
  • handle external redirects in from server actions (#​14400)

  • New (unstable) useRoute hook for accessing data from specific routes (#​14407)

    For example, let's say you have an admin route somewhere in your app and you want any child routes of admin to all have access to the loaderData and actionData from admin.

    // app/routes/admin.tsx
    import { Outlet } from "react-router";
    
    export const loader = () => ({ message: "Hello, loader!" });
    
    export const action = () => ({ count: 1 });
    
    export default function Component() {
      return (
        <div>
          {/* ... */}
          <Outlet />
          {/* ... */}
        </div>
      );
    }

    You might even want to create a reusable widget that all of the routes nested under admin could use:

    import { unstable_useRoute as useRoute } from "react-router";
    
    export function AdminWidget() {
      // How to get `message` and `count` from `admin` route?
    }

    In framework mode, useRoute knows all your app's routes and gives you TS errors when invalid route IDs are passed in:

    export function AdminWidget() {
      const admin = useRoute("routes/dmin");
      //                      ^^^^^^^^^^^
    }

    useRoute returns undefined if the route is not part of the current page:

    export function AdminWidget() {
      const admin = useRoute("routes/admin");
      if (!admin) {
        throw new Error(`AdminWidget used outside of "routes/admin"`);
      }
    }

    Note: the root route is the exception since it is guaranteed to be part of the current page.
    As a result, useRoute never returns undefined for root.

    loaderData and actionData are marked as optional since they could be accessed before the action is triggered or after the loader threw an error:

    export function AdminWidget() {
      const admin = useRoute("routes/admin");
      if (!admin) {
        throw new Error(`AdminWidget used outside of "routes/admin"`);
      }
      const { loaderData, actionData } = admin;
      console.log(loaderData);
      //          ^? { message: string } | undefined
      console.log(actionData);
      //          ^? { count: number } | undefined
    }

    If instead of a specific route, you wanted access to the current route's loaderData and actionData, you can call useRoute without arguments:

    export function AdminWidget() {
      const currentRoute = useRoute();
      currentRoute.loaderData;
      currentRoute.actionData;
    }

    This usage is equivalent to calling useLoaderData and useActionData, but consolidates all route data access into one hook: useRoute.

    Note: when calling useRoute() (without a route ID), TS has no way to know which route is the current route.
    As a result, loaderData and actionData are typed as unknown.
    If you want more type-safety, you can either narrow the type yourself with something like zod or you can refactor your app to pass down typed props to your AdminWidget:

    export function AdminWidget({
      message,
      count,
    }: {
      message: string;
      count: number;
    }) {
      /* ... */
    }

v7.9.3

Compare Source

Patch Changes
  • Do not try to use turbo-stream to decode CDN errors that never reached the server (#​14385)

    • We used to do this but lost this check with the adoption of single fetch
  • Fix Data Mode regression causing a 404 during initial load in when middleware exists without any loader functions (#​14393)

v7.9.2

Compare Source

Patch Changes
    • Update client-side router to run client middleware on initial load even if no loaders exist (#​14348)
    • Update createRoutesStub to run route middleware
      • You will need to set the <RoutesStub future={{ v8_middleware: true }} /> flag to enable the proper context type
  • Update Lazy Route Discovery manifest requests to use a singular comma-separated paths query param instead of repeated p query params (#​14321)

    • This is because Cloudflare has a hard limit of 100 URL search param key/value pairs when used as a key for caching purposes
    • If more that 100 paths were included, the cache key would be incomplete and could produce false-positive cache hits
  • [UNSTABLE] Add fetcher.unstable_reset() API (#​14206)

  • Made useOutlet element reference have stable identity in-between route chages (#​13382)

  • feat: enable full transition support for the rsc router (#​14362)

  • In RSC Data Mode, handle SSR'd client errors and re-try in the browser (#​14342)

  • Support middleware prop on <Route> for usage with a data router via createRoutesFromElements (#​14357)

  • Handle encoded question mark and hash characters in ancestor splat routes (#​14249)

  • Fail gracefully on manifest version mismatch logic if sessionStorage access is blocked (#​14335)

v7.9.1

Compare Source

Patch Changes
  • Fix internal Future interface naming from middleware -> v8_middleware (#​14327)

v7.9.0

Compare Source

Minor Changes
Patch Changes
  • Escape HTML in meta() JSON-LD content (#​14316)
  • Add react-server Await component implementation (#​14261)
  • In RSC Data Mode when using a custom basename, fix hydration errors for routes that only have client loaders (#​14264)
  • Make href function available in a react-server context (#​14262)
  • decode each time getPayload() is called to allow for "in-context" decoding and hoisting of contextual assets (#​14248)
  • href() now correctly processes routes that have an extension after the parameter or are a single optional parameter. (#​13797)

v7.8.2

Compare Source

Patch Changes
  • [UNSTABLE] Remove Data Mode future.unstable_middleware flag from createBrowserRouter (#​14213)

    • This is only needed as a Framework Mode flag because of the route modules and the getLoadContext type behavior change
    • In Data Mode, it's an opt-in feature because it's just a new property on a route object, so there's no behavior changes that necessitate a flag
  • [UNSTABLE] Add <RouterProvider unstable_onError>/<HydratedRouter unstable_onError> prop for client side error reporting (#​14162)

  • server action revalidation opt out via $SKIP_REVALIDATION field (#​14154)

  • Properly escape interpolated param values in generatePath() (#​13530)

  • Maintain ReadonlyMap and ReadonlySet types in server response data. (#​13092)

  • [UNSTABLE] Delay serialization of .data redirects to 202 responses until after middleware chain (#​14205)

  • Fix TypeError if you throw from `patchRoutesOnNavigat

Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copilot AI lite review requested due to automatic review settings September 4, 2026 04:47
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

COMPARE TO master

Total Size Diff 📉 -465 Bytes

Diff by File
Name Diff
package.json 0 Bytes
pnpm-lock.yaml 📉 -465 Bytes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new react-router override targets v8 while the resolved dependency graph remains on React Router v6/React 18, creating a likely incompatibility and undermining the intended security upgrade.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR (Renovate-generated) attempts to address React Router security advisories by updating the root-level pnpm override for react-router and refreshing the lockfile accordingly.

Changes:

  • Updates the root pnpm.overrides entry for react-router@>=6.7.0 <6.30.6 from ^6.30.6 to ^8.0.0
  • Updates pnpm-lock.yaml overrides to reflect the new react-router override and includes some incidental lockfile normalization changes
File summaries
File Description
package.json Changes root pnpm.overrides to force react-router to v8 for affected dependency ranges
pnpm-lock.yaml Updates lockfile override metadata and related snapshot entries
Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file
  • Files reviewed: 1/2 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment thread package.json Outdated
"prismjs@<1.30.0": "^1.30.0",
"qs@>=6.11.1 <6.15.2": "^6.15.2",
"react-router@>=6.7.0 <6.30.6": "^6.30.6",
"react-router@>=6.7.0 <6.30.6": "^8.0.0",
Comment thread pnpm-lock.yaml
Comment on lines 52 to 56
postcss@<8.5.18: ^8.5.18
prismjs@<1.30.0: ^1.30.0
qs@>=6.11.1 <6.15.2: ^6.15.2
react-router@>=6.7.0 <6.30.6: ^6.30.6
react-router@>=6.7.0 <6.30.6: ^8.0.0
react-router-dom@>=6.7.0 <6.30.6: ^6.30.6
Copilot AI review requested due to automatic review settings September 4, 2026 04:55
@renovate
renovate Bot force-pushed the renovate/npm-react-router-=6.7.0-6.30.6-vulnerability branch from 0c21e87 to 0898174 Compare September 4, 2026 04:55
@renovate renovate Bot changed the title chore(deps): update dependency react-router@>=6.7.0 <6.30.6 to v8 [security] chore(deps): update dependency react-router@>=6.7.0 <6.30.6 to v7 [security] Sep 4, 2026
@github-actions github-actions Bot added size/xs and removed size/xs labels Sep 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The override update does not result in react-router@7.18.0 being resolved in the lockfile (it remains 6.30.6), so the intended security upgrade is not actually applied and may cause inconsistent installs.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

pnpm-lock.yaml:56

  • This override forces react-router "^7.18.0" only for dependency specs in the ">=6.7.0 <6.30.6" range, but the lockfile still contains react-router@6.30.6 and react-router-dom@6.30.6, so the PR doesn’t actually update the installed React Router version. Consider updating the override selector (and react-router-dom) so the resolved versions become v7.18.0, then re-run pnpm to regenerate pnpm-lock.yaml.
  • Files reviewed: 1/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread package.json
Comment on lines 93 to 96
"qs@>=6.11.1 <6.15.2": "^6.15.2",
"react-router@>=6.7.0 <6.30.6": "^6.30.6",
"react-router@>=6.7.0 <6.30.6": "^7.18.0",
"react-router-dom@>=6.7.0 <6.30.6": "^6.30.6",
"rollup@>=4.0.0 <4.59.0": "^4.59.0",
Copilot AI review requested due to automatic review settings September 4, 2026 06:41
@renovate
renovate Bot force-pushed the renovate/npm-react-router-=6.7.0-6.30.6-vulnerability branch from 0898174 to 84e9f9a Compare September 4, 2026 06:41
@renovate renovate Bot changed the title chore(deps): update dependency react-router@>=6.7.0 <6.30.6 to v7 [security] chore(deps): update dependency react-router@>=6.7.0 <6.30.6 to v8 [security] Sep 4, 2026
@github-actions github-actions Bot added size/xs and removed size/xs labels Sep 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The override bumps react-router to a breaking major (v8) that is likely incompatible with the repo’s current React 18 setup and also appears inconsistent with the current lockfile resolution.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • The override bumps react-router from the v6 line to v8, which is a breaking major upgrade and is likely incompatible with this repo’s current React 18 setup (see pnpm.peerDependencyRules.allowedVersions.react: ^18.0.0 in this same file). Also, the lockfile currently resolves react-router@6.30.6 (no react-router@8.x present), so this override doesn’t appear to be taking effect. Prefer keeping the security override within v6 (e.g. ^6.30.6) to address the vulnerable range without introducing a major-version upgrade.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",

pnpm-lock.yaml:55

  • This lockfile override forces react-router to ^8.0.0 for the vulnerable selector range, but the lockfile itself currently contains react-router@6.30.6 and no react-router@8.x entries, so the override is either unused or the lockfile wasn’t regenerated after changing it. To avoid an accidental future major bump (and keep react-router aligned with react-router-dom@6.30.6), pin this override to ^6.30.6 instead.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings September 4, 2026 06:48
@renovate
renovate Bot force-pushed the renovate/npm-react-router-=6.7.0-6.30.6-vulnerability branch from 84e9f9a to e7a8c78 Compare September 4, 2026 06:48
@renovate renovate Bot changed the title chore(deps): update dependency react-router@>=6.7.0 <6.30.6 to v8 [security] chore(deps): update dependency react-router@>=6.7.0 <6.30.6 to v7 [security] Sep 4, 2026
@github-actions github-actions Bot added size/xs and removed size/xs labels Sep 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The lockfile still resolves react-router@6.30.6 and contains no react-router@7.18.0, so the intended security upgrade is not actually applied.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:96

  • The overrides entry bumps react-router to ^7.18.0, but react-router-dom is still held at ^6.30.6 and workspace packages appear to depend on react-router-dom@^6.30.2 (so a real v7 upgrade would likely require aligning react-router-dom to v7 and adjusting any breaking API usage). As-is, the lockfile still resolves react-router@6.30.6, so this change does not actually apply the intended security upgrade.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
      "react-router-dom@>=6.7.0 <6.30.6": "^6.30.6",
      "rollup@>=4.0.0 <4.59.0": "^4.59.0",

pnpm-lock.yaml:56

  • pnpm-lock.yaml does not contain any react-router@7.18.0 entries and still resolves react-router@6.30.6 (including via react-router-dom@6.30.6). This means the override change is currently ineffective and the lockfile is inconsistent with the intended dependency update; please regenerate the lockfile after updating the actual dependency constraints so the resolved versions match.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings September 4, 2026 07:07
@renovate
renovate Bot force-pushed the renovate/npm-react-router-=6.7.0-6.30.6-vulnerability branch from e7a8c78 to 64599a0 Compare September 4, 2026 07:07
@renovate renovate Bot changed the title chore(deps): update dependency react-router@>=6.7.0 <6.30.6 to v7 [security] chore(deps): update dependency react-router@>=6.7.0 <6.30.6 to v8 [security] Sep 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The stated v7/security update is currently a no-op for the workspace dependency graph.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This override does not upgrade the dependency used by this workspace: the lockfile still resolves only react-router-dom@6.30.6 and its react-router@6.30.6 dependency, with no react-router@7.18.0, while account, console, and experience all consume react-router-dom 6.x. The stated v7/security update is therefore a no-op for the current graph. Please either migrate those consumers and the react-router-dom override to the v7 pair and regenerate the lockfile, or keep the v6.30.6 override if the intention is only to pin the fixed v6 line.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The v8 upgrade is not applied to the installed graph and required platform and consumer migrations are missing.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This override does not upgrade the dependency used by the repository: the lockfile still resolves react-router-dom@6.30.6 with react-router@6.30.6, and all application packages depend on react-router-dom 6.x. If a matching pre-6.30.6 react-router dependency were introduced, forcing it to v8 would also be incompatible with the v6 DOM package (and this repo's React 18 setup). Keep the patched v6 override, or perform the required v8 migration across the consumers instead of changing only this override.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",

pnpm-lock.yaml:55

  • This override does not actually resolve React Router v8: the lockfile still contains only react-router@6.30.6, pulled by react-router-dom@6.30.6, whose exact dependency is outside the >=6.7.0 <6.30.6 selector. Consequently this PR leaves the installed graph unchanged; and forcing v8 would require migrating the many react-router-dom imports plus React 19.2.7 (the workspace currently standardizes on React 18). Please either target a compatible fixed v6 dependency or make the complete v8 migration rather than changing only this override.
  • Files reviewed: 1/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread package.json Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The override does not upgrade the installed React Router 6 dependency pair to v7.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This changes only an override selector whose current installed dependency does not match it: the lockfile still resolves react-router-dom@6.30.6 with its exact react-router@6.30.6 dependency (pnpm-lock.yaml:27312-27321), and there is no react-router@7.18.0 entry. Consequently, the application remains on React Router 6 and this PR does not deliver the stated v7 security upgrade. Please either upgrade the react-router-dom/react-router pair and adapt its consumers together, or keep the v6 override if 6.30.6 is the intended security-fixed version.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The isolated override does not apply the advertised v8 upgrade; a coordinated migration is required.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file
  • Files reviewed: 1/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread package.json Outdated
"prismjs@<1.30.0": "^1.30.0",
"qs@>=6.11.1 <6.15.2": "^6.15.2",
"react-router@>=6.7.0 <6.30.6": "^6.30.6",
"react-router@>=6.7.0 <6.30.6": "^8.0.0",

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The security update has no runtime effect until the compatible react-router-dom dependency and lockfile are updated.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This override does not upgrade the dependency that the workspace actually installs: all consumers declare react-router-dom 6.x, whose resolved package still depends on react-router 6.30.6, and the selector here explicitly excludes 6.30.6. The lockfile contains no react-router 7.18.0 entry, so this security update has no runtime effect; update the react-router-dom dependency/override and its callers together for a v7 migration, or keep the existing v6.30.6 override if v6 is intended.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",

pnpm-lock.yaml:55

  • This lockfile records the override as ^7.18.0, but its package and snapshot sections still resolve react-router-dom@6.30.6 -> react-router@6.30.6 (pnpm-lock.yaml:14285-14296 and 27312-27321). Thus a frozen install from this PR continues to use the v6 router and does not receive the advertised security update; regenerate the lockfile after updating the compatible react-router-dom dependency as well.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The override forces a major-version jump (react-router v6→v8) for a selector intended to patch older v6 ranges, which can introduce unexpected breaking/peer-dependency issues if it ever takes effect.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

pnpm-lock.yaml:56

  • This lockfile override forces react-router@>=6.7.0 <6.30.6 to ^8.0.0, which is a major-version jump for a selector that is meant to patch older v6 ranges and may break consumers expecting the v6 API if this override is ever applied. Align this with the minimal patched version used elsewhere in the lockfile (currently 6.30.6) unless you are intentionally migrating the codebase to React Router v8.
    package.json:95
  • The pnpm.overrides selector targets React Router versions <6.30.6 (a patch-level security pin), but it is currently being forced to ^8.0.0, which is a major-version jump and can introduce breaking API/peer-dependency mismatches if any transitive dependency actually resolves through this selector. Since the lockfile currently resolves react-router to 6.30.6, this override likely isn’t doing anything today, but it could cause unexpected breakage in the future when a dependency brings in an older v6 range again.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",
      "react-router-dom@>=6.7.0 <6.30.6": "^6.30.6",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The override forces a major-version jump (react-router v6 selector → v7 target) while the lockfile still resolves react-router@6.30.6, creating a high risk of incompatibility and likely not changing the installed dependency set as intended.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • The override selector targets React Router v6 consumers (<6.30.6) but forces a v7.x version. This is a major-version jump that can break packages expecting the v6 API, and the current lockfile resolves react-router to 6.30.6 anyway (no react-router@7.x entries), so this change likely doesn’t actually change what gets installed.

Consider keeping this override within the v6 line (e.g. 6.30.6) unless you’re intentionally migrating the codebase (and react-router-dom) to v7 in the same PR.

      "react-router@>=6.7.0 <6.30.6": "^7.18.0",

pnpm-lock.yaml:55

  • This lockfile override forces react-router v7.x for dependencies requesting v6 (<6.30.6). Since the lockfile currently resolves react-router@6.30.6 (and contains no react-router@7.x), the override appears unused and/or risks introducing an incompatible major version if a v6 consumer matches this selector.

Recommend keeping the override within the v6 major unless you’re upgrading react-router-dom and any app usage to v7 together.

  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The React Router v8 migration is incomplete and the advertised upgrade is not delivered.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This does not actually upgrade the router: all consumers still declare react-router-dom 6.x, whose 6.30.6 package depends on react-router 6.30.6 (as shown by pnpm-lock.yaml:27312-27317), and the lockfile still contains no react-router v8 entry. Either keep the compatible 6.30.6 override for this security fix, or perform the full v8 migration (including replacing react-router-dom/imports and meeting v8's React and Node requirements); changing this override alone leaves the installed dependency unchanged.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",

pnpm-lock.yaml:55

  • This selector does not upgrade anything in the current workspace: all consumers declare react-router-dom (for example, packages/account/package.json:99), and the lockfile still resolves react-router-dom@6.30.6 to react-router@6.30.6 (lines 27312-27321); there is no react-router@8 entry. Since v8 also removes react-router-dom, this standalone core override cannot deliver the advertised upgrade. Update the DOM-router consumers as a coordinated migration, or keep the patched v6 pair instead.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Update the consumer stack and regenerate the lockfile, or retain a compatible patched v6 override.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This change does not upgrade the dependency actually installed by this workspace: the lockfile still contains only react-router@6.30.6, and react-router-dom@6.30.6 resolves to that version (pnpm-lock.yaml:27312-27319). Because this override selector only matches versions <6.30.6, no current dependency matches it, so the PR's v7 security update is absent from the resolved graph. If v7 is required, update the react-router-dom/consumer stack and regenerate the lockfile together; otherwise keep the compatible patched v6 override.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The dependency graph still resolves React Router 6.30.6 instead of the advertised v8 upgrade.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file
  • Files reviewed: 1/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread package.json Outdated
"prismjs@<1.30.0": "^1.30.0",
"qs@>=6.11.1 <6.15.2": "^6.15.2",
"react-router@>=6.7.0 <6.30.6": "^6.30.6",
"react-router@>=6.7.0 <6.30.6": "^8.0.0",

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Update the React Router consumers and lockfile together, or explicitly retain a patched v6 resolution.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This override does not affect the versions actually installed: its selector only matches react-router versions <6.30.6, while all three workspace consumers resolve react-router-dom@6.30.6, which depends on react-router@6.30.6; the lockfile contains no react-router@7.18.0. As a result, this security update neither installs v7 nor changes the runtime dependency. If v7 is intended, update the react-router-dom consumers and lockfile together (forcing v7 under v6 react-router-dom would be incompatible); otherwise keep/use the patched v6 resolution explicitly.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The override and lockfile are inconsistent, and the v8 migration is incomplete.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This override does not upgrade any dependency in this workspace: all three consumers declare react-router-dom 6.x, and the lockfile still contains only react-router-dom@6.30.6 with its react-router@6.30.6 dependency—there is no react-router@8.x snapshot. If a package later matches this selector, forcing v8 would also be incompatible with the existing react-router-dom v6 imports and React 18.3.1 (v8 removes react-router-dom and requires React 19.2.7). Please either keep the patched v6 override or perform the coordinated v8 migration instead of changing this selector alone.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",

pnpm-lock.yaml:55

  • The lockfile does not contain the dependency this override requests: it still resolves react-router-dom@6.30.6 to react-router@6.30.6 (see the package and snapshot entries around lines 14292 and 27317), with no react-router@8 entry. This means the committed lockfile does not represent the changed override; frozen installs can reject it as stale or continue using v6. Regenerate the lockfile with the intended dependency graph before merging.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The advertised React Router v7 upgrade is not installed, and the override could create an incompatible dependency graph.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This changes only the replacement for vulnerable react-router versions <6.30.6, but the repository's actual graph still resolves react-router-dom@6.30.6 with react-router@6.30.6 (the lockfile has no 7.18.0 entry). Thus the advertised v7 upgrade is not installed, while any future dependency matching this selector would be forced from v6 to an incompatible major without upgrading react-router-dom and the consuming code. Keep the patched v6 override here, or make the v7 migration a coordinated update of both router packages and their usages.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Complete the React Router v8 migration and regenerate the lockfile, or target a compatible patched v6 dependency.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This override does not actually install React Router v8: the selector only matches requests below 6.30.6, while the workspace packages depend on react-router-dom 6.x, whose locked dependency remains react-router@6.30.6; the lockfile contains no v8 package. Forcing v8 onto this graph would also require the v8 migration (including replacing react-router-dom and upgrading the repo's React 18 setup), so please make that migration and regenerate the lockfile, or target a compatible patched v6 dependency instead.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The security update is ineffective because the lockfile still installs React Router 6.30.6.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This override does not affect the dependency graph currently committed: the selector only matches react-router versions below 6.30.6, while react-router-dom@6.30.6 still installs react-router@6.30.6 (pnpm-lock.yaml:27312-27319), and the lockfile contains no 7.18.0 entry. Consequently this security PR leaves the installed React Router version unchanged; please either upgrade the react-router-dom consumers to a compatible 7.18.0 pair and regenerate the lockfile, or remove this no-op override.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The override does not affect current React Router 6 workspaces and requires a coordinated React Router and React 19 migration.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This does not actually upgrade the dependency used by the workspaces: they all consume react-router-dom 6.x, whose resolved package still depends on react-router@6.30.6 (pnpm-lock.yaml:27312-27319), and the lockfile contains no react-router@8.x entry. The new selector therefore currently matches nothing, while applying v8 to a future 6.x react-router-dom dependency would be incompatible. Please either perform the coordinated v8 migration (including replacing react-router-dom) or keep the compatible v6.30.6 override.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",

package.json:94

  • Even if the selector were broadened, React Router v8 requires React 19.2.7, but the account, console, and experience packages still pin React/React DOM 18.3.1. Installing v8 without upgrading those consumers would leave the workspace with unsupported peer versions, so this cannot be a dependency-only override.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The installed dependency graph remains on React Router 6.30.6, so the security upgrade is ineffective.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This selector only matches react-router requests below 6.30.6, but every workspace consumer gets react-router through react-router-dom@6.30.6, whose lockfile entry still depends on react-router@6.30.6 (pnpm-lock.yaml:27312-27319). Consequently react-router@7.18.0 is absent from the lockfile and this security upgrade has no effect on the installed graph. Please either retain the already-patched ^6.30.6 override or migrate the three react-router-dom consumers to the v7 package and regenerate the lockfile rather than mixing a v7 router with the v6 wrapper.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The installed dependency remains on 6.30.6, so the security update is not applied.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This override only matches react-router versions below 6.30.6, but the workspace consumers use react-router-dom 6.x and its locked dependency is exactly react-router@6.30.6 (pnpm-lock.yaml:27312-27319). As a result, this change installs no v8 package and leaves the runtime on 6.30.6, so it does not apply the security update. Please update the actual React Router consumer to a compatible patched line (and perform the required react-router-dom/React/Node migration if targeting v8), or target the appropriate v6 fix instead.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The requested security upgrade is not installed; the dependency graph remains on React Router 6.30.6.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This override is not applied to the dependency actually installed here: every workspace consumer uses react-router-dom 6.30.6, whose lockfile entry pins react-router to 6.30.6 (see pnpm-lock.yaml:27312-27317), which is outside the >=6.7.0 <6.30.6 selector. The lockfile contains no react-router 7.18.0, so this PR does not deliver the advertised security upgrade; please perform a coherent React Router v7 migration (including react-router-dom and its callers) or target a compatible patched v6 version instead.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",

pnpm-lock.yaml:55

  • The lockfile records the override as ^7.18.0, but it still contains only react-router@6.30.6 and react-router-dom@6.30.6 snapshots, with the latter depending on the former. This lockfile therefore does not install the version this PR claims to update; regenerate it after updating the effective react-router-dom dependency graph.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The dependency remains on React Router 6 and the proposed v8 requirements are incompatible with the supported runtime matrix.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (3)

package.json:94

  • React Router 8's published requirements are not compatible with this repository's supported matrix: v8 requires Node >=22.22.0 and React >=19.2.7, while the root and UI packages declare Node ^22.14.0 and React 18.3.1 (with the root peer rules explicitly allowing React 18). Even after migrating the DOM package, this override would make the dependency unsupported until those runtime and React constraints are updated together.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",

package.json:94

  • This override does not upgrade the router used by the workspace: the UI packages still depend on react-router-dom 6, and the lockfile resolves its child as react-router@6.30.6 (pnpm-lock.yaml:27312-27319). Since the override selector stops before 6.30.6, the new ^8.0.0 target is never applied, so this security update leaves the existing runtime in place. Please either use a compatible patched v6 release or migrate react-router-dom and its imports together with the required v8 changes.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",

pnpm-lock.yaml:55

  • The lockfile still resolves only react-router@6.30.6; react-router-dom@6.30.6 also depends on that exact version. Because this override selector ends at <6.30.6, it does not match the resolved package, so this PR does not install 8.x or remediate the dependency it is meant to update. Please change the dependency graph/selector and regenerate the lockfile so the resulting graph contains the intended patched version.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The intended v7 update is not installed, and the override must be aligned with consumers and the lockfile.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This override has no matching request in the current workspace: the consumers declare react-router-dom ^6.30.2, and the lockfile resolves that package to 6.30.6 with react-router@6.30.6. Therefore no 7.18.0 is installed, so this change does not perform the stated update; if a future dependency matches this selector, it would instead be silently forced across a major version without a corresponding migration. Keep the override at the patched v6 range, or update the actual consumers and lockfile together as a deliberate v7 migration.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",

pnpm-lock.yaml:55

  • The lockfile still contains only react-router@6.30.6; react-router@7.18.0 is absent, and react-router-dom@6.30.6 continues to depend on react-router@6.30.6. Thus this override change does not update the installed graph, while it can inject a major version into any future matching v6 request. Keep the lockfile on the patched v6 override, or update all consumers to v7 together.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The installed dependency remains on React Router 6.30.6, so the security upgrade is not effective.

Get a fresh assessment by requesting another Copilot review.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file
  • Files reviewed: 1/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread package.json Outdated
"prismjs@<1.30.0": "^1.30.0",
"qs@>=6.11.1 <6.15.2": "^6.15.2",
"react-router@>=6.7.0 <6.30.6": "^6.30.6",
"react-router@>=6.7.0 <6.30.6": "^8.0.0",

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The security fix is not present in the installed dependency graph; upgrade the paired router dependencies and regenerate the lockfile.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This selector only applies to react-router versions below 6.30.6, but the workspace's react-router-dom@6.30.6 resolves its nested dependency exactly to react-router@6.30.6 (see pnpm-lock.yaml:27312-27319). The resulting lockfile contains no react-router@7.18.0, so this PR has no effect on the installed router despite the v7 upgrade described by the PR. Please update the router/dom dependency set together (or otherwise target the dependency that is actually resolved) and regenerate the lockfile.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",

pnpm-lock.yaml:55

  • This override does not upgrade the router actually used by the workspace: every consumer declares react-router-dom 6.x, and the lockfile still resolves react-router-dom@6.30.6 with its exact react-router@6.30.6 dependency (there is no react-router@7.18.0 snapshot). Because the selector excludes that exact 6.30.6 request, the security fix is not present in the installed graph. Upgrade the paired react-router-dom dependency to the compatible v7 release (and migrate any affected APIs) or otherwise resolve a patched router version, then regenerate the lockfile.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The advertised v8 security update is not applied; coordinate a compatible migration or target a patched v6 release.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This override change does not upgrade the dependency used by the workspace: all consumers depend on react-router-dom 6.x, whose lockfile entry still resolves react-router to 6.30.6 (pnpm-lock.yaml:27312-27319), and the selector here only matches requests below 6.30.6. Thus the advertised v8 security update is absent from the installed graph. If v8 is required, this needs a coordinated migration because v8 removes react-router-dom and requires React 19.2.7, while these packages use React 18; otherwise the override should target a patched v6 version that is actually compatible with the current consumers.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The lockfile still resolves React Router 6.30.6, so the advertised v7.18.0 security update is not applied.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This override still targets only react-router versions <6.30.6, so it cannot match the react-router@6.30.6 dependency that is actually installed. The lockfile consequently still resolves react-router@6.30.6 under react-router-dom@6.30.6 (pnpm-lock.yaml:27312-27321), meaning the advertised v7.18.0 security update is not applied; please update the compatible router/dom dependency graph and regenerate the lockfile.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The workspace still installs React Router 6.30.6, so the security remediation is not applied.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This does not update the router used by the workspace: all three applications depend on react-router-dom 6.x, whose locked dependency is the exact react-router@6.30.6, so this range-specific override does not match it (and the lockfile contains no v8 package). Moreover, React Router v8 removes react-router-dom and requires React 19.2.7, while these apps use React 18. Please make this a coordinated router/React migration (including the import changes), or use a security-fixed version compatible with the existing v6 stack; as written, the vulnerable dependency remains installed.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",

pnpm-lock.yaml:55

  • The lockfile still resolves the only react-router instance to 6.30.6 (react-router-dom@6.30.6 depends on that exact version at pnpm-lock.yaml:27317), so this override change does not install v8 or remediate the security update. Regenerate the lockfile after updating the dependency graph and verify that the resolved router version is the intended fixed version.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Update the effective React Router dependency path and regenerate the lockfile.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (1)

package.json:94

  • This override still only matches react-router requests in >=6.7.0 <6.30.6, but the lockfile resolves the only runtime dependency as react-router-dom@6.30.6react-router@6.30.6 (pnpm-lock.yaml:27312-27321), which does not satisfy that selector. Consequently changing the replacement to ^7.18.0 installs no v7 package and does not deliver the security upgrade described by this PR; update the actual react-router-dom/react-router dependency path and regenerate the lockfile.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Complete the coordinated React Router v8 migration or retain the patched v6 graph and regenerate the lockfile.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • React Router v8 is not drop-in compatible with this workspace: packages/account, packages/console, and packages/experience still depend on react-router-dom ^6.30.2, while v8 removes react-router-dom; those packages also use React 18.3.1, below v8's required React 19.2.7. Applying this override would therefore either leave the graph on v6 or create an incompatible mixed graph. Keep the patched v6 override, or perform the full v8 migration (including imports and React) as a coordinated change.
      "react-router@>=6.7.0 <6.30.6": "^8.0.0",

pnpm-lock.yaml:55

  • react-router is still locked at 6.30.6 (see the package and snapshot entries at pnpm-lock.yaml:14292 and pnpm-lock.yaml:27319), and this lockfile contains no 8.x entry. A frozen install therefore does not install the version advertised by this override, so the dependency update is not actually represented in the lockfile. Please regenerate the lockfile after applying a compatible upgrade/migration, or retain the patched v6 graph.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The security update is not applied to the resolved dependency graph; compatible consumers and the lockfile must be updated.

Review details

Files not reviewed (1)

  • pnpm-lock.yaml: Generated file

Suppressed comments (2)

package.json:94

  • This override does not update the dependency actually installed by this workspace: react-router-dom@6.30.6 still declares react-router: 6.30.6, and the lockfile contains no react-router@7.18.0 snapshot (see pnpm-lock.yaml:27312-27319). As a result, the security update advertised by this PR is not applied to the current graph. Either retain the compatible v6 fix if 6.30.6 is sufficient, or upgrade the react-router-dom consumers and regenerate the lockfile so the patched v7 package is genuinely resolved.
      "react-router@>=6.7.0 <6.30.6": "^7.18.0",

pnpm-lock.yaml:55

  • This override is not reflected in the lockfile: there is no react-router@7.18.0 entry, and react-router-dom@6.30.6 still resolves react-router@6.30.6 (pnpm-lock.yaml:27312-27321). A frozen install will therefore keep the old router and this security update has no effect. Please regenerate the lockfile and update the matching dependency edges together, while keeping the react-router-dom/react-router versions compatible.
  • Files reviewed: 1/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

1 participant