Skip to content

Uncaught undefined in in the <MatchInnerImpl> component #7457

Closed

Description

@ryanagillie

Which project does this relate to?

Router

Describe the bug

This is a bit of a complicated one, but I think I've found a race condition where an undefined is thrown inside the <MatchInnerImpl> component after a beforeLoad redirect that causes the routes to fail to display.

It only fails on first load, and usually a refresh or HMR will fix it.

I only wrote this because some of these exact conditions were met in a private work repository and it took me 2 hours to create a stable reproduction.

Stack Trace
defaultOnUncaughtError          @ react-dom_client.js?v=be4189c8:5256
logUncaughtError                @ react-dom_client.js?v=be4189c8:5286
runWithFiberInDEV               @ react-dom_client.js?v=be4189c8:850
lane.callback                   @ react-dom_client.js?v=be4189c8:5314
callCallback                    @ react-dom_client.js?v=be4189c8:4094
commitCallbacks                 @ react-dom_client.js?v=be4189c8:4102
runWithFiberInDEV               @ react-dom_client.js?v=be4189c8:850
commitLayoutEffectOnFiber       @ react-dom_client.js?v=be4189c8:6985
flushLayoutEffects              @ react-dom_client.js?v=be4189c8:8670
commitRoot                      @ react-dom_client.js?v=be4189c8:8583
commitRootWhenReady             @ react-dom_client.js?v=be4189c8:8078
performWorkOnRoot               @ react-dom_client.js?v=be4189c8:8050
performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=be4189c8:9058
performWorkUntilDeadline        @ react-dom_client.js?v=be4189c8:35

<MatchInnerImpl>
exports.jsx                     @ react_jsx-runtime.js?v=eeebbf31:192
MatchView                       @ @tanstack_react-rout….js?v=9b2a07b8:6384
react_stack_bottom_frame        @ react-dom_client.js?v=be4189c8:12867
renderWithHooksAgain            @ react-dom_client.js?v=be4189c8:4267
renderWithHooks                 @ react-dom_client.js?v=be4189c8:4218
updateFunctionComponent         @ react-dom_client.js?v=be4189c8:5568
beginWork                       @ react-dom_client.js?v=be4189c8:6139
runWithFiberInDEV               @ react-dom_client.js?v=be4189c8:850
performUnitOfWork               @ react-dom_client.js?v=be4189c8:8428
workLoopSync                    @ react-dom_client.js?v=be4189c8:8324
renderRootSync                  @ react-dom_client.js?v=be4189c8:8308
performWorkOnRoot               @ react-dom_client.js?v=be4189c8:7993
performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=be4189c8:9058
performWorkUntilDeadline        @ react-dom_client.js?v=be4189c8:35

<MatchView>
exports.jsx                     @ react_jsx-runtime.js?v=eeebbf31:192
MatchImpl                       @ @tanstack_react-rout….js?v=9b2a07b8:6328
react_stack_bottom_frame        @ react-dom_client.js?v=be4189c8:12867
renderWithHooksAgain            @ react-dom_client.js?v=be4189c8:4267
renderWithHooks                 @ react-dom_client.js?v=be4189c8:4218
updateFunctionComponent         @ react-dom_client.js?v=be4189c8:5568
updateSimpleMemoComponent       @ react-dom_client.js?v=be4189c8:5431
updateMemoComponent             @ react-dom_client.js?v=be4189c8:5406
beginWork                       @ react-dom_client.js?v=be4189c8:6209
runWithFiberInDEV               @ react-dom_client.js?v=be4189c8:850
performUnitOfWork               @ react-dom_client.js?v=be4189c8:8428
workLoopSync                    @ react-dom_client.js?v=be4189c8:8324
renderRootSync                  @ react-dom_client.js?v=be4189c8:8308
performWorkOnRoot               @ react-dom_client.js?v=be4189c8:7993
performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=be4189c8:9058
performWorkUntilDeadline        @ react-dom_client.js?v=be4189c8:35

<MatchImpl>
exports.jsx                     @ react_jsx-runtime.js?v=eeebbf31:192
MatchesInner                    @ @tanstack_react-rout….js?v=9b2a07b8:6671
react_stack_bottom_frame        @ react-dom_client.js?v=be4189c8:12867
renderWithHooksAgain            @ react-dom_client.js?v=be4189c8:4267
renderWithHooks                 @ react-dom_client.js?v=be4189c8:4218
updateFunctionComponent         @ react-dom_client.js?v=be4189c8:5568
beginWork                       @ react-dom_client.js?v=be4189c8:6139
runWithFiberInDEV               @ react-dom_client.js?v=be4189c8:850
performUnitOfWork               @ react-dom_client.js?v=be4189c8:8428
workLoopSync                    @ react-dom_client.js?v=be4189c8:8324
renderRootSync                  @ react-dom_client.js?v=be4189c8:8308
performWorkOnRoot               @ react-dom_client.js?v=be4189c8:7993
performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=be4189c8:9058
performWorkUntilDeadline        @ react-dom_client.js?v=be4189c8:35

<MatchesInner>
exports.jsx                     @ react_jsx-runtime.js?v=eeebbf31:192
Matches                         @ @tanstack_react-rout….js?v=9b2a07b8:6662
react_stack_bottom_frame        @ react-dom_client.js?v=be4189c8:12867
renderWithHooksAgain            @ react-dom_client.js?v=be4189c8:4267
renderWithHooks                 @ react-dom_client.js?v=be4189c8:4218
updateFunctionComponent         @ react-dom_client.js?v=be4189c8:5568
beginWork                       @ react-dom_client.js?v=be4189c8:6139
runWithFiberInDEV               @ react-dom_client.js?v=be4189c8:850
performUnitOfWork               @ react-dom_client.js?v=be4189c8:8428
workLoopSync                    @ react-dom_client.js?v=be4189c8:8324
renderRootSync                  @ react-dom_client.js?v=be4189c8:8308
performWorkOnRoot               @ react-dom_client.js?v=be4189c8:7956
performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=be4189c8:9058
performWorkUntilDeadline        @ react-dom_client.js?v=be4189c8:35

<Matches>
exports.jsx                     @ react_jsx-runtime.js?v=eeebbf31:192
RouterProvider                  @ @tanstack_react-rout….js?v=9b2a07b8:6848
react_stack_bottom_frame        @ react-dom_client.js?v=be4189c8:12867
renderWithHooksAgain            @ react-dom_client.js?v=be4189c8:4267
renderWithHooks                 @ react-dom_client.js?v=be4189c8:4218
updateFunctionComponent         @ react-dom_client.js?v=be4189c8:5568
beginWork                       @ react-dom_client.js?v=be4189c8:6139
runWithFiberInDEV               @ react-dom_client.js?v=be4189c8:850
performUnitOfWork               @ react-dom_client.js?v=be4189c8:8428
workLoopSync                    @ react-dom_client.js?v=be4189c8:8324
renderRootSync                  @ react-dom_client.js?v=be4189c8:8308
performWorkOnRoot               @ react-dom_client.js?v=be4189c8:7956
performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=be4189c8:9058
performWorkUntilDeadline        @ react-dom_client.js?v=be4189c8:35

<RouterProvider>
exports.jsxDEV                  @ react_jsx-dev-runtime.js?v=eeebbf31:192
(anonymous)                     @ main.tsx:59

Complete minimal reproducer

https://stackblitz.com/edit/github-udgl2qav

Steps to Reproduce the Bug

  1. Open link
  2. Page fails to load
  3. Open console
  4. Check error stack trace

Expected behavior

Should not be throwing an undefined and fail to render the page

Screenshots or Videos

No response

Platform

  • Router / Start Version: 1.170.5
  • OS: Any
  • Browser: Chrome
  • Browser Version: 148.0.7778.168
  • Bundler: vite
  • Bundler Version: 8.0.13

Additional context

No response

Activity

  1. codeart1st commented on May 21, 2026

    @codeart1st
  2. spark-altoira commented on May 29, 2026

    @spark-altoira

    Confirming this is reproducible on an older minor too — hitting it on @tanstack/[email protected] + @tanstack/[email protected] (Vite), so it's not specific to 1.170.x.

    Scenario

    File-based routing with this structure:

      src/app/parent/
        route.tsx               // createFileRoute('/parent') — bare wrapper
        not-authorized.tsx
        _authenticated/
          route.tsx             // ssr: false, async beforeLoad that populates context
          index.tsx             // URL: /parent
          onboarding/
            route.tsx           // beforeLoad reads context.X and conditionally throws redirect({ to: '/parent', replace: true })
    

    Direct hard-load of /parent/onboarding. The parent's async beforeLoad populates context, then the onboarding route's beforeLoad reads it and redirects back to /parent (a sibling under the same shared /parent + _authenticated parents). On first load this throws undefined; subsequent in-app navigations are fine, consistent with what @ryanagillie observed.

    Stack Trace

    defaultOnUncaughtError @ react-dom_client.js?v=0cdc0a44:5257
    logUncaughtError @ react-dom_client.js?v=0cdc0a44:5287
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    lane.callback @ react-dom_client.js?v=0cdc0a44:5315
    callCallback @ react-dom_client.js?v=0cdc0a44:4095
    commitCallbacks @ react-dom_client.js?v=0cdc0a44:4103
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    commitLayoutEffectOnFiber @ react-dom_client.js?v=0cdc0a44:6986
    flushLayoutEffects @ react-dom_client.js?v=0cdc0a44:8671
    commitRoot @ react-dom_client.js?v=0cdc0a44:8584
    commitRootWhenReady @ react-dom_client.js?v=0cdc0a44:8079
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:8051
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchInnerImpl>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    MatchView @ Match.js?v=0cdc0a44:95
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchView>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    MatchImpl @ Match.js?v=0cdc0a44:44
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    updateSimpleMemoComponent @ react-dom_client.js?v=0cdc0a44:5432
    updateMemoComponent @ react-dom_client.js?v=0cdc0a44:5407
    beginWork @ react-dom_client.js?v=0cdc0a44:6210
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchImpl>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    OutletImpl @ Match.js?v=0cdc0a44:273
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    updateSimpleMemoComponent @ react-dom_client.js?v=0cdc0a44:5432
    updateMemoComponent @ react-dom_client.js?v=0cdc0a44:5407
    beginWork @ react-dom_client.js?v=0cdc0a44:6210
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <OutletImpl>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    (anonymous) @ Match.js?v=0cdc0a44:188
    mountMemo @ react-dom_client.js?v=0cdc0a44:4931
    useMemo @ react-dom_client.js?v=0cdc0a44:13024
    exports.useMemo @ react.js?v=0cdc0a44:736
    MatchInnerImpl @ Match.js?v=0cdc0a44:185
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4213
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    updateSimpleMemoComponent @ react-dom_client.js?v=0cdc0a44:5432
    updateMemoComponent @ react-dom_client.js?v=0cdc0a44:5407
    beginWork @ react-dom_client.js?v=0cdc0a44:6210
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchInnerImpl>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    MatchView @ Match.js?v=0cdc0a44:96
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchView>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    MatchImpl @ Match.js?v=0cdc0a44:44
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    updateSimpleMemoComponent @ react-dom_client.js?v=0cdc0a44:5432
    updateMemoComponent @ react-dom_client.js?v=0cdc0a44:5407
    beginWork @ react-dom_client.js?v=0cdc0a44:6210
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchImpl>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    OutletImpl @ Match.js?v=0cdc0a44:273
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    updateSimpleMemoComponent @ react-dom_client.js?v=0cdc0a44:5432
    updateMemoComponent @ react-dom_client.js?v=0cdc0a44:5407
    beginWork @ react-dom_client.js?v=0cdc0a44:6210
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <OutletImpl>
    exports.jsxDEV @ react_jsx-dev-runtime.js?v=0cdc0a44:193
    (anonymous) @ __root.tsx:72
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4213
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <RootLayout>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    (anonymous) @ Match.js?v=0cdc0a44:187
    mountMemo @ react-dom_client.js?v=0cdc0a44:4931
    useMemo @ react-dom_client.js?v=0cdc0a44:13024
    exports.useMemo @ react.js?v=0cdc0a44:736
    MatchInnerImpl @ Match.js?v=0cdc0a44:185
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4213
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    updateSimpleMemoComponent @ react-dom_client.js?v=0cdc0a44:5432
    updateMemoComponent @ react-dom_client.js?v=0cdc0a44:5407
    beginWork @ react-dom_client.js?v=0cdc0a44:6210
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchInnerImpl>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    MatchView @ Match.js?v=0cdc0a44:96
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchView>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    MatchImpl @ Match.js?v=0cdc0a44:44
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    updateSimpleMemoComponent @ react-dom_client.js?v=0cdc0a44:5432
    updateMemoComponent @ react-dom_client.js?v=0cdc0a44:5407
    beginWork @ react-dom_client.js?v=0cdc0a44:6210
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopSync @ react-dom_client.js?v=0cdc0a44:8325
    renderRootSync @ react-dom_client.js?v=0cdc0a44:8309
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7994
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchImpl>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    MatchesInner @ Matches.js?v=0cdc0a44:32
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopConcurrentByScheduler @ react-dom_client.js?v=0cdc0a44:8425
    renderRootConcurrent @ react-dom_client.js?v=0cdc0a44:8408
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7957
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <MatchesInner>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    Matches @ Matches.js?v=0cdc0a44:23
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopConcurrentByScheduler @ react-dom_client.js?v=0cdc0a44:8425
    renderRootConcurrent @ react-dom_client.js?v=0cdc0a44:8408
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7957
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <Matches>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    RouterProvider @ RouterProvider.js?v=0cdc0a44:39
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopConcurrentByScheduler @ react-dom_client.js?v=0cdc0a44:8425
    renderRootConcurrent @ react-dom_client.js?v=0cdc0a44:8408
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7957
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <RouterProvider>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    children @ StartClient.js?t=1780082822866&v=0cdc0a44:10
    AwaitInner @ awaited.js?v=0cdc0a44:28
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopConcurrentByScheduler @ react-dom_client.js?v=0cdc0a44:8425
    renderRootConcurrent @ react-dom_client.js?v=0cdc0a44:8408
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7957
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <AwaitInner>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    Await @ awaited.js?v=0cdc0a44:19
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopConcurrentByScheduler @ react-dom_client.js?v=0cdc0a44:8425
    renderRootConcurrent @ react-dom_client.js?v=0cdc0a44:8408
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7957
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <Await>
    exports.jsx @ react_jsx-runtime.js?v=0cdc0a44:193
    StartClient @ StartClient.js?t=1780082822866&v=0cdc0a44:8
    react_stack_bottom_frame @ react-dom_client.js?v=0cdc0a44:12868
    renderWithHooksAgain @ react-dom_client.js?v=0cdc0a44:4268
    renderWithHooks @ react-dom_client.js?v=0cdc0a44:4219
    updateFunctionComponent @ react-dom_client.js?v=0cdc0a44:5569
    beginWork @ react-dom_client.js?v=0cdc0a44:6140
    runWithFiberInDEV @ react-dom_client.js?v=0cdc0a44:851
    performUnitOfWork @ react-dom_client.js?v=0cdc0a44:8429
    workLoopConcurrentByScheduler @ react-dom_client.js?v=0cdc0a44:8425
    renderRootConcurrent @ react-dom_client.js?v=0cdc0a44:8408
    performWorkOnRoot @ react-dom_client.js?v=0cdc0a44:7957
    performWorkOnRootViaSchedulerTask @ react-dom_client.js?v=0cdc0a44:9059
    performWorkUntilDeadline @ react-dom_client.js?v=0cdc0a44:36
    <StartClient>
    exports.jsxDEV @ react_jsx-dev-runtime.js?v=0cdc0a44:193
    (anonymous) @ client.tsx:9
    exports.startTransition @ react.js?v=0cdc0a44:682
    (anonymous) @ client.tsx:5
    

    Platform

    • Router / Start Version: 1.168.5
    • Browser: Chrome
    • Browser Version:
    • Bundler: Vite 6
    • Note: app uses ssr: false on the layout route that owns the async beforeLoad
  3. jamesknelson commented on Jun 10, 2026

    @jamesknelson

    As a workaround for what I think is the same issue, I'm imperatively calling the deprecated navigate function in a beforeLoad instead of throwing a redirect.

  4. added 3 commits that reference this issue on Jun 15, 2026
    9698aee
    3cb972f
    eeedf96
  5. added 3 commits that reference this issue on Jun 25, 2026
    4f35374
    aadf3ba
    e9acd3a
  6. xofromthemoon commented on Jul 27, 2026

    @xofromthemoon

    Running into the same bug :(

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions