Skip to content

Conversation

@dependabot
Copy link

@dependabot dependabot bot commented on behalf of github Jan 9, 2026

Bumps react-router from 7.10.1 to 7.12.0.

Release notes

Sourced from react-router's releases.

v7.12.0

See the changelog for release notes: https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7120

v7.11.0

See the changelog for release notes: https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7110

Changelog

Sourced from react-router's changelog.

7.12.0

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)

... (truncated)

Commits
  • 26653a6 chore: Update version for release (#14712)
  • 7ac2346 chore: Update version for release (pre) (#14709)
  • 75b1ef5 Add origin checks for UI route submissions (#14708)
  • c05ef93 Validate redirect locations (#14706)
  • c89c32c Escape HTML in scroll restoration keys (#14705)
  • cbcbf30 fix: pass nonce to importmap script when using subResourceIntegrity (#14675)
  • 30f6c1d fix(react-router): handle parameters with static suffixes in generatePath (#1...
  • 7f140e0 Handle data requests with trailing slash consistently (#14644)
  • 1954af6 Preserve hydrate property on client loaders during instrumentation (#14674)
  • 5ce5cd4 chore: format
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.10.1 to 7.12.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.12.0/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.12.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Jan 9, 2026
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

Greptile Overview

Greptile Summary

This PR bumps react-router from 7.10.1 to 7.12.0, a minor version update that includes security enhancements and bug fixes.

Major Changes in React Router 7.12.0:

  • CSRF Protection Enhancement: React Router now rejects form submissions to UI routes from external origins by default. This is a security improvement but may affect applications if they receive form submissions from different origins.
  • Bug fixes for generatePath with suffixed params, HTML escaping in scroll restoration, and redirect location validation
  • New unstable features for trailing slash handling and subresource integrity

Impact on authkit-react-router:

  • This library primarily uses loaders (GET requests) which are not affected by the new CSRF protection
  • The README documents action handlers (POST) for sign-out functionality that users implement in their apps
  • Users of this library may be affected if they have action handlers that receive requests from external origins
  • No breaking changes to the library's API or functionality

What Users Should Know:
If users of this library have action handlers that need to accept form submissions from external origins, they will need to configure allowedActionOrigins in their react-router.config.ts file. The default behavior (blocking external origins) is a security best practice and should be maintained unless explicitly required.

Confidence Score: 4/5

  • This PR is safe to merge with minimal risk - it's a standard dependency update with beneficial security improvements
  • This is a routine dependency update (minor version bump) that adds security improvements and bug fixes. The new CSRF protection in React Router 7.12.0 is a positive security enhancement that doesn't break this library's functionality. The library primarily uses loaders (not affected by CSRF changes), and any action handlers are implemented by users in their apps. Score of 4 (not 5) because users may need to be aware of the new CSRF behavior if they implement action handlers that accept external origins, though this is uncommon and the default blocking behavior is the secure choice.
  • No files require special attention

Important Files Changed

File Analysis

Filename Score Overview
package-lock.json 4/5 React Router dependency bumped from 7.10.1 to 7.12.0, includes new CSRF protection and bug fixes

Sequence Diagram

sequenceDiagram
    participant User
    participant App as User's App
    participant Library as authkit-react-router
    participant RR as React Router 7.12.0
    participant WorkOS
    
    Note over RR: New CSRF Protection Active
    
    User->>App: Submit Form (POST)
    App->>RR: action() handler receives request
    RR->>RR: Check Origin header
    alt Origin matches app domain
        RR->>Library: Pass request to action
        Library->>WorkOS: API call (signOut, etc)
        WorkOS-->>Library: Response
        Library-->>RR: Redirect response
        RR-->>App: Handle redirect
        App-->>User: Success
    else Origin is external
        RR-->>App: Reject (403 Forbidden)
        App-->>User: CSRF Error
    end
    
    Note over RR: Configure allowedActionOrigins<br/>in react-router.config.ts if needed
Loading

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 javascript Pull requests that update javascript code

Development

Successfully merging this pull request may close these issues.

1 participant