Skip to content

Release v8.4.0 - #15460

Open
ryanflorence wants to merge 1 commit into
mainfrom
release-v8-pr
Open

Release v8.4.0#15460
ryanflorence wants to merge 1 commit into
mainfrom
release-v8-pr

Conversation

@ryanflorence

@ryanflorence ryanflorence commented Sep 2, 2026

Copy link
Copy Markdown
Member

This PR is managed by the release workflow. Do not edit it manually.

Releases

Package Version
react-router 8.3.18.4.0
@react-router/architect 8.3.18.4.0
@react-router/cloudflare 8.3.18.4.0
@react-router/dev 8.3.18.4.0
@react-router/express 8.3.18.4.0
@react-router/fs-routes 8.3.18.4.0
@react-router/node 8.3.18.4.0
@react-router/remix-routes-option-adapter 8.3.18.4.0
@react-router/serve 8.3.18.4.0
create-react-router 8.3.18.4.0

Changelogs

react-router v8.4.0

Minor Changes

  • Deprecate the createStaticRouter({ branches }) option (#15297)

    createStaticRouter now caches route branches internally, so the branches option is no longer used and logs a deprecation warning when provided

    The deprecated EntryContext.branches property is retained for compatibility but is now always an empty array

Patch Changes

  • Switch to more granular internal router contexts to avoid unnecessary route component re-renders when unrelated data router state changes (#15376)
    • ⚠️ This contains some breaking changes to exported UNSAFE_ contexts, so please review carefully if you are using those unsafe exports

Unstable Changes

⚠️ Unstable features are not recommended for production use

  • Add a new Data Mode-only future.unstable_routePatternMatching flag to opt into more efficient @remix-run/route-pattern based route matching internally (#15298)

    • No code changes required - syntax remains the same for pubic route definitions and route match fields

    • Once opting into this flag, you should no longer user legacy matching APIs (matchRoutes/matchPath/useMatch) as they are hardcoded to the previous regex-based matcher

      • A new router.match() API exists for those use cases but it's marked private and considered unstable along with the flag
    • Path generation APIs such as generatePath and href continue to accept React Router path syntax

    • This flag also comes with a new unstable_validateParams route field which uses keyed regular expressions so a route can reject matched params and let matching continue (non-matched optional params are not validated)

      let router = createBrowserRouter(
        [
          {
            path: "/:drink",
            unstable_validateParams: {
              drink: /^(wines|whiskeys|sakes|beers)$/,
            },
          },
          {
            path: "/:food",
            unstable_validateParams: {
              food: /^(meats|veggies|cheeses|sweets)$/,
            },
          },
        ],
        {
          future: {
            unstable_routePatternMatching: true,
          },
        },
      );

@react-router/architect v8.4.0

Patch Changes

@react-router/cloudflare v8.4.0

Patch Changes

@react-router/dev v8.4.0

Patch Changes

@react-router/express v8.4.0

Patch Changes

@react-router/fs-routes v8.4.0

Patch Changes

@react-router/node v8.4.0

Patch Changes

@react-router/remix-routes-option-adapter v8.4.0

Patch Changes

@react-router/serve v8.4.0

Patch Changes

create-react-router v8.4.0

Patch Changes

  • No changes

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Preview Build Available

Preview builds have been created for this PR. You can install react-router using:

pnpm install "remix-run/react-router#preview/pr-15460&path:packages/react-router"

And/or install other packages via:

pnpm install "remix-run/react-router#preview/pr-15460&path:packages/react-router-dev"
pnpm install "remix-run/react-router#preview/pr-15460&path:packages/react-router-express"
pnpm install "remix-run/react-router#preview/pr-15460&path:packages/react-router-node"
pnpm install "remix-run/react-router#preview/pr-15460&path:packages/react-router-serve"

These preview builds will be updated automatically as you push new commits.

@ryanflorence ryanflorence changed the title Release v8.3.2 Release v8.4.0 Sep 2, 2026
@ryanflorence
ryanflorence force-pushed the release-v8-pr branch 2 times, most recently from 2710e0e to 0d8e84a Compare September 2, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants