Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Nov 1, 2025

This PR contains the following updates:

Package Change Age Confidence
@react-router/fs-routes (source) 7.9.3 -> 7.9.5 age confidence
@react-router/node (source) 7.9.3 -> 7.9.5 age confidence
lucide-react (source) 0.544.0 -> 0.552.0 age confidence
react (source) 19.1.1 -> 19.2.0 age confidence
react-dom (source) 19.1.1 -> 19.2.0 age confidence
react-router (source) 7.9.3 -> 7.9.5 age confidence

Release Notes

remix-run/react-router (@​react-router/fs-routes)

v7.9.5

Compare Source

Patch Changes
  • Updated dependencies:
    • @react-router/dev@7.9.5

v7.9.4

Compare Source

Patch Changes
  • Updated dependencies:
    • @react-router/dev@7.9.4
remix-run/react-router (@​react-router/node)

v7.9.5

Compare Source

Patch Changes
  • Updated dependencies:
    • react-router@7.9.5

v7.9.4

Compare Source

Patch Changes
  • Validate format of incoming session ids (#​14426)
  • Updated dependencies:
    • react-router@7.9.4
lucide-icons/lucide (lucide-react)

v0.552.0: Version 0.552.0

Compare Source

What's Changed

Full Changelog: lucide-icons/lucide@0.551.0...0.552.0

v0.551.0: Version 0.551.0

Compare Source

What's Changed

Full Changelog: lucide-icons/lucide@0.550.0...0.551.0

v0.550.0: Version 0.550.0

Compare Source

What's Changed

New Contributors

Full Changelog: lucide-icons/lucide@0.549.0...0.550.0

v0.549.0: Version 0.549.0

Compare Source

What's Changed

New Contributors

Full Changelog: lucide-icons/lucide@0.548.0...0.549.0

v0.548.0: Version 0.548.0

Compare Source

What's Changed

New Contributors

Full Changelog: lucide-icons/lucide@0.547.0...0.548.0

v0.547.0: Version 0.547.0

Compare Source

What's Changed

New Contributors

Full Changelog: lucide-icons/lucide@0.546.0...0.547.0

v0.546.0: Version 0.546.0

Compare Source

What's Changed

New Contributors

Full Changelog: lucide-icons/lucide@0.545.0...0.546.0

v0.545.0: Version 0.545.0

Compare Source

What's Changed

Full Changelog: lucide-icons/lucide@0.544.0...0.545.0

facebook/react (react)

v19.2.0

Compare Source

Below is a list of all new features, APIs, and bug fixes.

Read the React 19.2 release post for more information.

New React Features
  • <Activity>: A new API to hide and restore the UI and internal state of its children.
  • useEffectEvent is a React Hook that lets you extract non-reactive logic into an Effect Event.
  • cacheSignal (for RSCs) lets your know when the cache() lifetime is over.
  • React Performance tracks appear on the Performance panel’s timeline in your browser developer tools
New React DOM Features
  • Added resume APIs for partial pre-rendering with Web Streams:
  • Added resume APIs for partial pre-rendering with Node Streams:
  • Updated prerender APIs to return a postponed state that can be passed to the resume APIs.
Notable changes
  • React DOM now batches suspense boundary reveals, matching the behavior of client side rendering. This change is especially noticeable when animating the reveal of Suspense boundaries e.g. with the upcoming <ViewTransition> Component. React will batch as much reveals as possible before the first paint while trying to hit popular first-contentful paint metrics.
  • Add Node Web Streams (prerender, renderToReadableStream) to server-side-rendering APIs for Node.js
  • Use underscore instead of : IDs generated by useId
All Changes
React
React DOM
React Server Components
React Reconciler
remix-run/react-router (react-router)

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;
    }) {
      /* ... */
    }

Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, on day 1 of the month ( * 0-3 1 * * ) (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


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

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

@renovate renovate bot added the dependencies Pull requests that update a dependency file label Nov 1, 2025
@renovate renovate bot enabled auto-merge (squash) November 1, 2025 01:53
@renovate renovate bot merged commit 5ad4a22 into main Nov 1, 2025
2 checks passed
@renovate renovate bot deleted the renovate/dependencies-non-major branch November 1, 2025 01:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant