Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot read properties of null (reading 'useContext') #10455

Open
elledienne opened this issue Jan 31, 2025 · 12 comments
Open

Cannot read properties of null (reading 'useContext') #10455

elledienne opened this issue Jan 31, 2025 · 12 comments

Comments

@elledienne
Copy link

elledienne commented Jan 31, 2025

Reproduction

Unfortunately, I can't reproduce it but can see it affecting users in production based on Sentry's reports. The first instances of the error perfectly match the day we enabled the following feature flags

  • unstable_optimizeDeps
  • v3_fetcherPersist
  • v3_throwAbortReason
  • v3_relativeSplatPath
  • v3_lazyRouteDiscovery
  • v3_routeConfig

System Info

System:
  OS: macOS 15.2
  CPU: (8) arm64 Apple M1 Pro
  Memory: 103.61 MB / 16.00 GB
  Shell: 5.9 - /bin/zsh
Binaries:
  Node: 22.12.0 - /usr/local/bin/node
  Yarn: 1.22.22 - ~/Code/passionfroot/remix/node_modules/.bin/yarn
  npm: 10.8.2 - ~/Code/passionfroot/remix/node_modules/.bin/npm
  pnpm: 8.14.0 - /usr/local/bin/pnpm
  bun: 1.1.42 - ~/.bun/bin/bun
Browsers:
  Chrome: 132.0.6834.160
  Safari: 18.2
npmPackages:
  @remix-run/dev: ^2.15.3 => 2.15.3 
  @remix-run/express: ^2.15.3 => 2.15.3 
  @remix-run/node: ^2.15.3 => 2.15.3 
  @remix-run/react: ^2.15.3 => 2.15.3 
  @remix-run/route-config: ^2.15.3 => 2.15.3 
  @remix-run/routes-option-adapter: ^2.15.3 => 2.15.3 
  vite: ^5.4.5 => 5.4.8

Used Package Manager

npm

Expected Behavior

It should not throw

Actual Behavior

Without any obvious reasons, from time to time our application crashes with the error Cannot read properties of null (reading 'useContext').
As you can see from the screenshot below, the issue is triggered by Remix - in this specific case by useParams but I've seen triggered by useNavigation, useLoaderData, etc. It also doesn't seem to be related to any specific route as we are seeing it happening a bit everywhere in the app.

Image

@tigerabrodi
Copy link

I've encountered this several times myself on the "first" load.

Might be related to how the server hands off the initial context value. 👍

@brookslybrand
Copy link
Contributor

@tigerabrodi if you can reproduce it that would be helpful

@thomaswelton
Copy link

@tigerabrodi I'm facing the same issue. I believe I've been able to replicate the issue cc @brookslybrand

This appears to happen after deployments.

  • Visit the website on the current deployed version and leave this tab open.
  • Deploy a new version of the website. In my new version the module for my root component has changed.
  • Once the new version has fully deployed go back to the website which is still running the old version.
  • Do a page transition. See that during this transition the manifest is loaded. And in the URL the version ID is still the old app version
  • See that when requesting the old app version manifest we actually get back the latest app manifest with new files for the root module
  • See that the error occurs
Collapsed section contains the manifest for the old app version `32e10548`
{
  "root": {
    "id": "root",
    "path": "",
    "hasAction": false,
    "hasLoader": true,
    "hasClientAction": false,
    "hasClientLoader": true,
    "hasErrorBoundary": true,
    "module": "https://static-staging.justpark.me/web/BWjmKKly.js",
    "imports": [
      "https://static-staging.justpark.me/web/Bm61ePuf.js",
      "https://static-staging.justpark.me/web/CLpGMVip.js",
      "https://static-staging.justpark.me/web/BSfejaqD.js",
      "https://static-staging.justpark.me/web/Bwq1-0sX.js",
      "https://static-staging.justpark.me/web/0fJqIBIq.js",
      "https://static-staging.justpark.me/web/BXWEoUpJ.js",
      "https://static-staging.justpark.me/web/B8X0Hwr4.js",
      "https://static-staging.justpark.me/web/CNwB1FlK.js",
      "https://static-staging.justpark.me/web/D6vY-tBT.js",
      "https://static-staging.justpark.me/web/CSxIm9kN.js",
      "https://static-staging.justpark.me/web/BanlcC9T.js",
      "https://static-staging.justpark.me/web/tTtJA4Ic.js",
      "https://static-staging.justpark.me/web/BG69h2D-.js",
      "https://static-staging.justpark.me/web/V2Agyv0y.js",
      "https://static-staging.justpark.me/web/zWsUlOxb.js",
      "https://static-staging.justpark.me/web/C_hRS8y3.js",
      "https://static-staging.justpark.me/web/I9OqAGuG.js",
      "https://static-staging.justpark.me/web/opeVYZuH.js",
      "https://static-staging.justpark.me/web/BEYA_Nha.js",
      "https://static-staging.justpark.me/web/CZPVoPc2.js",
      "https://static-staging.justpark.me/web/BgzOEqCK.js",
      "https://static-staging.justpark.me/web/D0I57ASd.js",
      "https://static-staging.justpark.me/web/Cu5sDBhx.js",
      "https://static-staging.justpark.me/web/BDobTYr3.js",
      "https://static-staging.justpark.me/web/B06G3sA0.js",
      "https://static-staging.justpark.me/web/CEygdyOH.js",
      "https://static-staging.justpark.me/web/Cjg7EPT0.js",
      "https://static-staging.justpark.me/web/CLfCRrBp.js",
      "https://static-staging.justpark.me/web/D0ojbdz5.js",
      "https://static-staging.justpark.me/web/DnF9fVFU.js",
      "https://static-staging.justpark.me/web/D0qWhIA-.js",
      "https://static-staging.justpark.me/web/BDAxrpDa.js",
      "https://static-staging.justpark.me/web/DaBfNPEE.js",
      "https://static-staging.justpark.me/web/CuTXKJMA.js",
      "https://static-staging.justpark.me/web/Cl5bxDLd.js",
      "https://static-staging.justpark.me/web/ChEMDZiV.js",
      "https://static-staging.justpark.me/web/CrQ6FXTT.js",
      "https://static-staging.justpark.me/web/B5CRMHyh.js",
      "https://static-staging.justpark.me/web/Chjiymov.js",
      "https://static-staging.justpark.me/web/DYCLwSnr.js",
      "https://static-staging.justpark.me/web/DE0-F26o.js",
      "https://static-staging.justpark.me/web/DN5rZzil.js",
      "https://static-staging.justpark.me/web/BrhckzxW.js",
      "https://static-staging.justpark.me/web/DYD6m9ht.js",
      "https://static-staging.justpark.me/web/DGW9Bsvz.js",
      "https://static-staging.justpark.me/web/R0vgLtgs.js",
      "https://static-staging.justpark.me/web/C5Ab5Tuj.js",
      "https://static-staging.justpark.me/web/GTdSpgAo.js",
      "https://static-staging.justpark.me/web/C_UlMdeZ.js",
      "https://static-staging.justpark.me/web/DnXDSNQ9.js",
      "https://static-staging.justpark.me/web/C9d-Ov1N.js",
      "https://static-staging.justpark.me/web/CdIFScxU.js",
      "https://static-staging.justpark.me/web/C-WhsKvP.js",
      "https://static-staging.justpark.me/web/Dtk20Uk-.js",
      "https://static-staging.justpark.me/web/74C32ll3.js",
      "https://static-staging.justpark.me/web/DJGdPz6z.js",
      "https://static-staging.justpark.me/web/OoDW-m7G.js",
      "https://static-staging.justpark.me/web/DgHgxkCZ.js",
      "https://static-staging.justpark.me/web/bsHrm4RI.js",
      "https://static-staging.justpark.me/web/y8EMDD8u.js",
      "https://static-staging.justpark.me/web/CelOk1_0.js",
      "https://static-staging.justpark.me/web/BN1BcXiO.js",
      "https://static-staging.justpark.me/web/B4onF3Ei.js",
      "https://static-staging.justpark.me/web/B5xlDGeu.js",
      "https://static-staging.justpark.me/web/Dbvu8cWh.js",
      "https://static-staging.justpark.me/web/BzEOPueY.js",
      "https://static-staging.justpark.me/web/B588DPOd.js",
      "https://static-staging.justpark.me/web/BS7ugsZD.js",
      "https://static-staging.justpark.me/web/XQdWvuVD.js",
      "https://static-staging.justpark.me/web/CmlYuIz1.js",
      "https://static-staging.justpark.me/web/Cc1vMINN.js",
      "https://static-staging.justpark.me/web/BA7foNdu.js",
      "https://static-staging.justpark.me/web/CjgWLAvl.js",
      "https://static-staging.justpark.me/web/BzQbbaX6.js",
      "https://static-staging.justpark.me/web/CLVaUnBX.js",
      "https://static-staging.justpark.me/web/DoBOrIEX.js",
      "https://static-staging.justpark.me/web/BaV66b0q.js",
      "https://static-staging.justpark.me/web/B-Vw1IIv.js",
      "https://static-staging.justpark.me/web/CdOcjeS_.js",
      "https://static-staging.justpark.me/web/BXXdfK5X.js",
      "https://static-staging.justpark.me/web/ClYg4JM2.js"
    ],
    "css": [
      "https://static-staging.justpark.me/web/assets/root-LI4xMuIk.css",
      "https://static-staging.justpark.me/web/assets/Footer-MixDlTcs.css",
      "https://static-staging.justpark.me/web/assets/index-GXWwSvrd.css",
      "https://static-staging.justpark.me/web/assets/index-r3_o6w4K.css",
      "https://static-staging.justpark.me/web/assets/index-B4IvcrtU.css",
      "https://static-staging.justpark.me/web/assets/index-DW9qsvI4.css",
      "https://static-staging.justpark.me/web/assets/getFontAwesomeSizeClassname-DrMQkjQd.css",
      "https://static-staging.justpark.me/web/assets/index-fTOcovHz.css",
      "https://static-staging.justpark.me/web/assets/index-DIYnh62M.css",
      "https://static-staging.justpark.me/web/assets/index-B12ZepDw.css",
      "https://static-staging.justpark.me/web/assets/LinkText-CpUOZEoT.css",
      "https://static-staging.justpark.me/web/assets/index-DDoLUNvU.css"
    ]
  },
  "./src/pages/Search": {
    "id": "./src/pages/Search",
    "parentId": "root",
    "path": "/search",
    "hasAction": false,
    "hasLoader": true,
    "hasClientAction": false,
    "hasClientLoader": true,
    "hasErrorBoundary": false,
    "module": "https://static-staging.justpark.me/web/G27ubw0h.js",
    "imports": [
      "https://static-staging.justpark.me/web/BCFo9957.js",
      "https://static-staging.justpark.me/web/Bm61ePuf.js",
      "https://static-staging.justpark.me/web/C5Ab5Tuj.js",
      "https://static-staging.justpark.me/web/BSfejaqD.js",
      "https://static-staging.justpark.me/web/CLpGMVip.js",
      "https://static-staging.justpark.me/web/opeVYZuH.js",
      "https://static-staging.justpark.me/web/Dtk20Uk-.js",
      "https://static-staging.justpark.me/web/DYD6m9ht.js",
      "https://static-staging.justpark.me/web/D6vY-tBT.js",
      "https://static-staging.justpark.me/web/ClHdchxn.js",
      "https://static-staging.justpark.me/web/CLVaUnBX.js",
      "https://static-staging.justpark.me/web/DENxHJIZ.js",
      "https://static-staging.justpark.me/web/CNwB1FlK.js",
      "https://static-staging.justpark.me/web/BsNqRAZx.js",
      "https://static-staging.justpark.me/web/C2u7kpr0.js",
      "https://static-staging.justpark.me/web/Bwq1-0sX.js",
      "https://static-staging.justpark.me/web/0fJqIBIq.js",
      "https://static-staging.justpark.me/web/BEYA_Nha.js",
      "https://static-staging.justpark.me/web/BI6HAyac.js",
      "https://static-staging.justpark.me/web/BjW9G7-E.js",
      "https://static-staging.justpark.me/web/CZPVoPc2.js",
      "https://static-staging.justpark.me/web/BanlcC9T.js",
      "https://static-staging.justpark.me/web/Dbvu8cWh.js",
      "https://static-staging.justpark.me/web/B4onF3Ei.js",
      "https://static-staging.justpark.me/web/BOWdxfcD.js",
      "https://static-staging.justpark.me/web/B_UwCIxV.js",
      "https://static-staging.justpark.me/web/CxKdvfFV.js",
      "https://static-staging.justpark.me/web/B8Wzp8Me.js",
      "https://static-staging.justpark.me/web/upKLkq4-.js",
      "https://static-staging.justpark.me/web/C_0uPm00.js",
      "https://static-staging.justpark.me/web/DpaYZGgj.js",
      "https://static-staging.justpark.me/web/HsvRBBzn.js",
      "https://static-staging.justpark.me/web/B7ndonnh.js",
      "https://static-staging.justpark.me/web/CpAybzHf.js",
      "https://static-staging.justpark.me/web/DoBOrIEX.js",
      "https://static-staging.justpark.me/web/BaV66b0q.js",
      "https://static-staging.justpark.me/web/CjgWLAvl.js",
      "https://static-staging.justpark.me/web/B-Vw1IIv.js",
      "https://static-staging.justpark.me/web/CdOcjeS_.js",
      "https://static-staging.justpark.me/web/CCy8Z-n8.js",
      "https://static-staging.justpark.me/web/ChEMDZiV.js",
      "https://static-staging.justpark.me/web/Cvby9U0e.js",
      "https://static-staging.justpark.me/web/V6MGsFch.js",
      "https://static-staging.justpark.me/web/DKX3cWBW.js",
      "https://static-staging.justpark.me/web/BmiJSf3W.js",
      "https://static-staging.justpark.me/web/Cw0uu9_r.js",
      "https://static-staging.justpark.me/web/C6Ty_yM_.js",
      "https://static-staging.justpark.me/web/BGFp8Pmq.js",
      "https://static-staging.justpark.me/web/DMIi-BjN.js",
      "https://static-staging.justpark.me/web/BT9BnNt5.js",
      "https://static-staging.justpark.me/web/K9Bh1yTA.js",
      "https://static-staging.justpark.me/web/DyUL2Wvx.js",
      "https://static-staging.justpark.me/web/CgBZDH8d.js",
      "https://static-staging.justpark.me/web/McAfWPlB.js",
      "https://static-staging.justpark.me/web/tTtJA4Ic.js",
      "https://static-staging.justpark.me/web/BXWEoUpJ.js",
      "https://static-staging.justpark.me/web/DnF9fVFU.js",
      "https://static-staging.justpark.me/web/Cu5sDBhx.js",
      "https://static-staging.justpark.me/web/D0ojbdz5.js",
      "https://static-staging.justpark.me/web/V2Agyv0y.js",
      "https://static-staging.justpark.me/web/Dvee8WLN.js",
      "https://static-staging.justpark.me/web/D0qWhIA-.js",
      "https://static-staging.justpark.me/web/DgjjEXPo.js",
      "https://static-staging.justpark.me/web/CSxIm9kN.js",
      "https://static-staging.justpark.me/web/B5CRMHyh.js",
      "https://static-staging.justpark.me/web/Chjiymov.js",
      "https://static-staging.justpark.me/web/DYCLwSnr.js",
      "https://static-staging.justpark.me/web/BDobTYr3.js",
      "https://static-staging.justpark.me/web/BG69h2D-.js",
      "https://static-staging.justpark.me/web/DE0-F26o.js",
      "https://static-staging.justpark.me/web/DN5rZzil.js",
      "https://static-staging.justpark.me/web/D0I57ASd.js",
      "https://static-staging.justpark.me/web/AIi5mYxF.js",
      "https://static-staging.justpark.me/web/Poeejtf6.js",
      "https://static-staging.justpark.me/web/C-WhsKvP.js",
      "https://static-staging.justpark.me/web/C_UlMdeZ.js",
      "https://static-staging.justpark.me/web/CuTXKJMA.js",
      "https://static-staging.justpark.me/web/DnXDSNQ9.js",
      "https://static-staging.justpark.me/web/B0J3a59b.js",
      "https://static-staging.justpark.me/web/CnO1JHar.js",
      "https://static-staging.justpark.me/web/BN1BcXiO.js",
      "https://static-staging.justpark.me/web/DW65tm5Q.js",
      "https://static-staging.justpark.me/web/CzhbP_FM.js",
      "https://static-staging.justpark.me/web/BrhckzxW.js",
      "https://static-staging.justpark.me/web/C_hRS8y3.js",
      "https://static-staging.justpark.me/web/I9OqAGuG.js",
      "https://static-staging.justpark.me/web/ZdLxAUHy.js",
      "https://static-staging.justpark.me/web/BDAxrpDa.js",
      "https://static-staging.justpark.me/web/OoDW-m7G.js",
      "https://static-staging.justpark.me/web/RwT8rDdy.js",
      "https://static-staging.justpark.me/web/B1aGsug-.js",
      "https://static-staging.justpark.me/web/GTdSpgAo.js",
      "https://static-staging.justpark.me/web/BzEOPueY.js",
      "https://static-staging.justpark.me/web/B588DPOd.js",
      "https://static-staging.justpark.me/web/LQLZVuQa.js",
      "https://static-staging.justpark.me/web/BA7foNdu.js",
      "https://static-staging.justpark.me/web/CMfhulnM.js",
      "https://static-staging.justpark.me/web/DJGdPz6z.js",
      "https://static-staging.justpark.me/web/BS7ugsZD.js",
      "https://static-staging.justpark.me/web/Dec41Hhw.js",
      "https://static-staging.justpark.me/web/CG5hlDDH.js",
      "https://static-staging.justpark.me/web/Bz1g6oQT.js",
      "https://static-staging.justpark.me/web/BGwiRzYs.js",
      "https://static-staging.justpark.me/web/qRPL1pD7.js",
      "https://static-staging.justpark.me/web/7OX9Wna3.js",
      "https://static-staging.justpark.me/web/RShjlWIE.js",
      "https://static-staging.justpark.me/web/mKndtfM2.js",
      "https://static-staging.justpark.me/web/Co7dFwVq.js",
      "https://static-staging.justpark.me/web/C9d-Ov1N.js",
      "https://static-staging.justpark.me/web/yQf1zG1K.js",
      "https://static-staging.justpark.me/web/BoTk_6Gk.js",
      "https://static-staging.justpark.me/web/C_PztqBG.js",
      "https://static-staging.justpark.me/web/B5xlDGeu.js",
      "https://static-staging.justpark.me/web/BgzOEqCK.js",
      "https://static-staging.justpark.me/web/BzQbbaX6.js",
      "https://static-staging.justpark.me/web/Cc1vMINN.js",
      "https://static-staging.justpark.me/web/DWrTfeYj.js",
      "https://static-staging.justpark.me/web/CrQ6FXTT.js",
      "https://static-staging.justpark.me/web/S4NIMgc6.js",
      "https://static-staging.justpark.me/web/Cl5bxDLd.js",
      "https://static-staging.justpark.me/web/CpcPKxd9.js",
      "https://static-staging.justpark.me/web/DUKEeo1p.js",
      "https://static-staging.justpark.me/web/D3b7pkS6.js",
      "https://static-staging.justpark.me/web/Khh8XJqg.js",
      "https://static-staging.justpark.me/web/DeIWjoDE.js",
      "https://static-staging.justpark.me/web/BKkZn_v8.js",
      "https://static-staging.justpark.me/web/CsIB31TE.js",
      "https://static-staging.justpark.me/web/ClYg4JM2.js",
      "https://static-staging.justpark.me/web/CEygdyOH.js",
      "https://static-staging.justpark.me/web/DaBfNPEE.js"
    ],
    "css": [
      "https://static-staging.justpark.me/web/assets/Search-UfrlFPoZ.css",
      "https://static-staging.justpark.me/web/assets/getFontAwesomeSizeClassname-DrMQkjQd.css",
      "https://static-staging.justpark.me/web/assets/getQueryParamSearchType-CF9y7ydN.css",
      "https://static-staging.justpark.me/web/assets/index-B4IvcrtU.css",
      "https://static-staging.justpark.me/web/assets/index-DLH5tKig.css",
      "https://static-staging.justpark.me/web/assets/index-_b7Hqr9j.css",
      "https://static-staging.justpark.me/web/assets/index-BzjoZlLS.css",
      "https://static-staging.justpark.me/web/assets/index-fTOcovHz.css",
      "https://static-staging.justpark.me/web/assets/index-DW9qsvI4.css",
      "https://static-staging.justpark.me/web/assets/index-DIYnh62M.css",
      "https://static-staging.justpark.me/web/assets/index-B12ZepDw.css",
      "https://static-staging.justpark.me/web/assets/index-BzfkCQ77.css",
      "https://static-staging.justpark.me/web/assets/index-BoQa7Q8X.css",
      "https://static-staging.justpark.me/web/assets/index-DIUZBqj3.css",
      "https://static-staging.justpark.me/web/assets/index-BnVctAVl.css",
      "https://static-staging.justpark.me/web/assets/index-k9sFEvtp.css",
      "https://static-staging.justpark.me/web/assets/index-oKGpw-S3.css",
      "https://static-staging.justpark.me/web/assets/index-D-5NaaI_.css",
      "https://static-staging.justpark.me/web/assets/index-ube-Mfmi.css",
      "https://static-staging.justpark.me/web/assets/BestPriceGuarantee-CFxSSNVk.css",
      "https://static-staging.justpark.me/web/assets/default_img_en-btrZGtRu.css",
      "https://static-staging.justpark.me/web/assets/index-BOFGMxlG.css",
      "https://static-staging.justpark.me/web/assets/index-r3_o6w4K.css",
      "https://static-staging.justpark.me/web/assets/TrustedAirport-BO2QTLtv.css",
      "https://static-staging.justpark.me/web/assets/getIconSizeClassname-DxG5YDo6.css",
      "https://static-staging.justpark.me/web/assets/coreListingDetailsFragment-C8sc5TYt.css",
      "https://static-staging.justpark.me/web/assets/useAddEventListenerToMap-CgLkRTeJ.css",
      "https://static-staging.justpark.me/web/assets/index-CGy7SS-L.css",
      "https://static-staging.justpark.me/web/assets/StreetViewButton-Ww9_uiJU.css",
      "https://static-staging.justpark.me/web/assets/index-C1pxK0Ne.css",
      "https://static-staging.justpark.me/web/assets/index-DzcD8tDo.css",
      "https://static-staging.justpark.me/web/assets/useIsIntersectingWithRoot-DYMl2-8E.css",
      "https://static-staging.justpark.me/web/assets/GlobalModal-CXqEbQuo.css",
      "https://static-staging.justpark.me/web/assets/index-Bd7xDcry.css",
      "https://static-staging.justpark.me/web/assets/index-DDoLUNvU.css",
      "https://static-staging.justpark.me/web/assets/index-GXWwSvrd.css",
      "https://static-staging.justpark.me/web/assets/index-0XC6j0Hc.css",
      "https://static-staging.justpark.me/web/assets/ConnectedBookWithConfidence-hFTsBBx8.css",
      "https://static-staging.justpark.me/web/assets/RadioGroup-G3Mv-ddo.css",
      "https://static-staging.justpark.me/web/assets/index-DFhp7v8x.css"
    ]
  }
}
Collapsed section contains the manifest for the new app version `e20cca2b`
{
  "root": {
    "id": "root",
    "path": "",
    "hasAction": false,
    "hasLoader": true,
    "hasClientAction": false,
    "hasClientLoader": true,
    "hasErrorBoundary": true,
    "module": "https://static-staging.justpark.me/web/Db6BZggq.js",
    "imports": [
      "https://static-staging.justpark.me/web/CLpGMVip.js",
      "https://static-staging.justpark.me/web/yT543-25.js",
      "https://static-staging.justpark.me/web/Ca5yjPmQ.js",
      "https://static-staging.justpark.me/web/BfiThCwa.js",
      "https://static-staging.justpark.me/web/EwACMNMi.js",
      "https://static-staging.justpark.me/web/DKtZ8IFk.js",
      "https://static-staging.justpark.me/web/y-le1UCs.js",
      "https://static-staging.justpark.me/web/B171zkNJ.js",
      "https://static-staging.justpark.me/web/p3f66gPK.js",
      "https://static-staging.justpark.me/web/C4r1BFHj.js",
      "https://static-staging.justpark.me/web/BivOpd27.js",
      "https://static-staging.justpark.me/web/DGbl9ioZ.js",
      "https://static-staging.justpark.me/web/CP2fEdT3.js",
      "https://static-staging.justpark.me/web/BSGa-qLN.js",
      "https://static-staging.justpark.me/web/C_hRS8y3.js",
      "https://static-staging.justpark.me/web/CJjHiVar.js",
      "https://static-staging.justpark.me/web/CcMZWvQr.js",
      "https://static-staging.justpark.me/web/zXuznnLt.js",
      "https://static-staging.justpark.me/web/Ctitjiv6.js",
      "https://static-staging.justpark.me/web/DaBfNPEE.js",
      "https://static-staging.justpark.me/web/BptsX-NY.js",
      "https://static-staging.justpark.me/web/Cy4nX1sC.js",
      "https://static-staging.justpark.me/web/D9V6N4rY.js",
      "https://static-staging.justpark.me/web/Ccj-bChu.js",
      "https://static-staging.justpark.me/web/CVowwJcN.js",
      "https://static-staging.justpark.me/web/mDOEi7oK.js",
      "https://static-staging.justpark.me/web/D0w_GsGP.js",
      "https://static-staging.justpark.me/web/BdF8THbY.js",
      "https://static-staging.justpark.me/web/zAIef8bh.js",
      "https://static-staging.justpark.me/web/CKXCZ4cH.js",
      "https://static-staging.justpark.me/web/Bqtmm_de.js",
      "https://static-staging.justpark.me/web/Chjiymov.js",
      "https://static-staging.justpark.me/web/CqPhGWKf.js",
      "https://static-staging.justpark.me/web/DN5rZzil.js",
      "https://static-staging.justpark.me/web/m5eYvnuX.js",
      "https://static-staging.justpark.me/web/KKADJhN8.js",
      "https://static-staging.justpark.me/web/BVGOJ3Yd.js",
      "https://static-staging.justpark.me/web/Bn2qrJ3W.js",
      "https://static-staging.justpark.me/web/DJhCssgq.js",
      "https://static-staging.justpark.me/web/BEYA_Nha.js",
      "https://static-staging.justpark.me/web/BLA-xuQF.js",
      "https://static-staging.justpark.me/web/CfRm5maE.js",
      "https://static-staging.justpark.me/web/PTHayPHR.js",
      "https://static-staging.justpark.me/web/BKkxsAeC.js",
      "https://static-staging.justpark.me/web/Bp3z0LGh.js",
      "https://static-staging.justpark.me/web/B6wNRkU2.js",
      "https://static-staging.justpark.me/web/B6Mayi7k.js",
      "https://static-staging.justpark.me/web/BYzefARZ.js",
      "https://static-staging.justpark.me/web/BDSGaKHm.js",
      "https://static-staging.justpark.me/web/Bro4dJV-.js",
      "https://static-staging.justpark.me/web/BPuZWrm_.js",
      "https://static-staging.justpark.me/web/Cs2lM1sA.js",
      "https://static-staging.justpark.me/web/13C335Sd.js",
      "https://static-staging.justpark.me/web/BP9vU8He.js",
      "https://static-staging.justpark.me/web/y8EMDD8u.js",
      "https://static-staging.justpark.me/web/DSBLC7mM.js",
      "https://static-staging.justpark.me/web/BN1BcXiO.js",
      "https://static-staging.justpark.me/web/C0oeNHBg.js",
      "https://static-staging.justpark.me/web/DxRuklQU.js",
      "https://static-staging.justpark.me/web/C9FUUmSc.js",
      "https://static-staging.justpark.me/web/DN_shnoo.js",
      "https://static-staging.justpark.me/web/LYuVmt5Y.js",
      "https://static-staging.justpark.me/web/BS7ugsZD.js",
      "https://static-staging.justpark.me/web/B2zvlitb.js",
      "https://static-staging.justpark.me/web/CmlYuIz1.js",
      "https://static-staging.justpark.me/web/D_il6ORt.js",
      "https://static-staging.justpark.me/web/CkNa0_bu.js",
      "https://static-staging.justpark.me/web/3kta8zOQ.js",
      "https://static-staging.justpark.me/web/C_H9rdMl.js",
      "https://static-staging.justpark.me/web/CpRaL2XH.js",
      "https://static-staging.justpark.me/web/Blq3djZD.js",
      "https://static-staging.justpark.me/web/C8436mCR.js",
      "https://static-staging.justpark.me/web/DmLFkLi-.js",
      "https://static-staging.justpark.me/web/L8q6Dt2m.js",
      "https://static-staging.justpark.me/web/CpIiPhMA.js",
      "https://static-staging.justpark.me/web/DG96qZY3.js"
    ],
    "css": [
      "https://static-staging.justpark.me/web/assets/root-LI4xMuIk.css",
      "https://static-staging.justpark.me/web/assets/Footer-MixDlTcs.css",
      "https://static-staging.justpark.me/web/assets/index-GXWwSvrd.css",
      "https://static-staging.justpark.me/web/assets/index-r3_o6w4K.css",
      "https://static-staging.justpark.me/web/assets/index-B4IvcrtU.css",
      "https://static-staging.justpark.me/web/assets/index-DW9qsvI4.css",
      "https://static-staging.justpark.me/web/assets/getFontAwesomeSizeClassname-DrMQkjQd.css",
      "https://static-staging.justpark.me/web/assets/index-fTOcovHz.css",
      "https://static-staging.justpark.me/web/assets/index-DIYnh62M.css",
      "https://static-staging.justpark.me/web/assets/index-B12ZepDw.css",
      "https://static-staging.justpark.me/web/assets/LinkText-CpUOZEoT.css",
      "https://static-staging.justpark.me/web/assets/index-DDoLUNvU.css"
    ]
  },
  "./src/pages/Search": {
    "id": "./src/pages/Search",
    "parentId": "root",
    "path": "/search",
    "hasAction": false,
    "hasLoader": true,
    "hasClientAction": false,
    "hasClientLoader": true,
    "hasErrorBoundary": false,
    "module": "https://static-staging.justpark.me/web/BD48O3R9.js",
    "imports": [
      "https://static-staging.justpark.me/web/DB28vovd.js",
      "https://static-staging.justpark.me/web/EwACMNMi.js",
      "https://static-staging.justpark.me/web/Ccj-bChu.js",
      "https://static-staging.justpark.me/web/CVowwJcN.js",
      "https://static-staging.justpark.me/web/mDOEi7oK.js",
      "https://static-staging.justpark.me/web/yT543-25.js",
      "https://static-staging.justpark.me/web/y-le1UCs.js",
      "https://static-staging.justpark.me/web/D0w_GsGP.js",
      "https://static-staging.justpark.me/web/CfRm5maE.js",
      "https://static-staging.justpark.me/web/CLpGMVip.js",
      "https://static-staging.justpark.me/web/BDSGaKHm.js",
      "https://static-staging.justpark.me/web/Bn2qrJ3W.js",
      "https://static-staging.justpark.me/web/B171zkNJ.js",
      "https://static-staging.justpark.me/web/ClHdchxn.js",
      "https://static-staging.justpark.me/web/CpRaL2XH.js",
      "https://static-staging.justpark.me/web/CxZdLXSI.js",
      "https://static-staging.justpark.me/web/C2u7kpr0.js",
      "https://static-staging.justpark.me/web/Ca5yjPmQ.js",
      "https://static-staging.justpark.me/web/BfiThCwa.js",
      "https://static-staging.justpark.me/web/BEYA_Nha.js",
      "https://static-staging.justpark.me/web/BI6HAyac.js",
      "https://static-staging.justpark.me/web/BjW9G7-E.js",
      "https://static-staging.justpark.me/web/DJhCssgq.js",
      "https://static-staging.justpark.me/web/Cy4nX1sC.js",
      "https://static-staging.justpark.me/web/C4r1BFHj.js",
      "https://static-staging.justpark.me/web/C9FUUmSc.js",
      "https://static-staging.justpark.me/web/C0oeNHBg.js",
      "https://static-staging.justpark.me/web/BOWdxfcD.js",
      "https://static-staging.justpark.me/web/B_UwCIxV.js",
      "https://static-staging.justpark.me/web/CxKdvfFV.js",
      "https://static-staging.justpark.me/web/DAz7qG_2.js",
      "https://static-staging.justpark.me/web/DarQSyHd.js",
      "https://static-staging.justpark.me/web/BT6C_2O0.js",
      "https://static-staging.justpark.me/web/bMSk60DK.js",
      "https://static-staging.justpark.me/web/BmHjgoxO.js",
      "https://static-staging.justpark.me/web/BCzWxl7g.js",
      "https://static-staging.justpark.me/web/CrxNX51S.js",
      "https://static-staging.justpark.me/web/Blq3djZD.js",
      "https://static-staging.justpark.me/web/C8436mCR.js",
      "https://static-staging.justpark.me/web/3kta8zOQ.js",
      "https://static-staging.justpark.me/web/DmLFkLi-.js",
      "https://static-staging.justpark.me/web/L8q6Dt2m.js",
      "https://static-staging.justpark.me/web/C7nhrmzL.js",
      "https://static-staging.justpark.me/web/zAIef8bh.js",
      "https://static-staging.justpark.me/web/Da98yfR2.js",
      "https://static-staging.justpark.me/web/D6Vo7V6f.js",
      "https://static-staging.justpark.me/web/DlYHhgjk.js",
      "https://static-staging.justpark.me/web/DHF9Y5QC.js",
      "https://static-staging.justpark.me/web/BZUnhWMz.js",
      "https://static-staging.justpark.me/web/ChpJzbi_.js",
      "https://static-staging.justpark.me/web/CEcUMUQV.js",
      "https://static-staging.justpark.me/web/BGDZwJVb.js",
      "https://static-staging.justpark.me/web/CSeJ_u1Y.js",
      "https://static-staging.justpark.me/web/iegH_uze.js",
      "https://static-staging.justpark.me/web/tDguouQ_.js",
      "https://static-staging.justpark.me/web/BBqMP4ED.js",
      "https://static-staging.justpark.me/web/DwJ389d3.js",
      "https://static-staging.justpark.me/web/BivOpd27.js",
      "https://static-staging.justpark.me/web/CP2fEdT3.js",
      "https://static-staging.justpark.me/web/Dvee8WLN.js",
      "https://static-staging.justpark.me/web/BptsX-NY.js",
      "https://static-staging.justpark.me/web/DGbl9ioZ.js",
      "https://static-staging.justpark.me/web/DN5rZzil.js",
      "https://static-staging.justpark.me/web/m5eYvnuX.js",
      "https://static-staging.justpark.me/web/BVGOJ3Yd.js",
      "https://static-staging.justpark.me/web/CqPhGWKf.js",
      "https://static-staging.justpark.me/web/CcMZWvQr.js",
      "https://static-staging.justpark.me/web/BLA-xuQF.js",
      "https://static-staging.justpark.me/web/zXuznnLt.js",
      "https://static-staging.justpark.me/web/DglgJtLU.js",
      "https://static-staging.justpark.me/web/p3f66gPK.js",
      "https://static-staging.justpark.me/web/Bqtmm_de.js",
      "https://static-staging.justpark.me/web/Chjiymov.js",
      "https://static-staging.justpark.me/web/Dl5au_hJ.js",
      "https://static-staging.justpark.me/web/DE7qRMY2.js",
      "https://static-staging.justpark.me/web/BYzefARZ.js",
      "https://static-staging.justpark.me/web/BKkxsAeC.js",
      "https://static-staging.justpark.me/web/D9V6N4rY.js",
      "https://static-staging.justpark.me/web/Bp3z0LGh.js",
      "https://static-staging.justpark.me/web/DnU6Oifu.js",
      "https://static-staging.justpark.me/web/FSU9OuCD.js",
      "https://static-staging.justpark.me/web/BN1BcXiO.js",
      "https://static-staging.justpark.me/web/BlXHRltp.js",
      "https://static-staging.justpark.me/web/CzhbP_FM.js",
      "https://static-staging.justpark.me/web/KKADJhN8.js",
      "https://static-staging.justpark.me/web/C_hRS8y3.js",
      "https://static-staging.justpark.me/web/CJjHiVar.js",
      "https://static-staging.justpark.me/web/CA59wB70.js",
      "https://static-staging.justpark.me/web/Ctitjiv6.js",
      "https://static-staging.justpark.me/web/Cs2lM1sA.js",
      "https://static-staging.justpark.me/web/xjvQzlyr.js",
      "https://static-staging.justpark.me/web/BEUhBM1S.js",
      "https://static-staging.justpark.me/web/PTHayPHR.js",
      "https://static-staging.justpark.me/web/DN_shnoo.js",
      "https://static-staging.justpark.me/web/LYuVmt5Y.js",
      "https://static-staging.justpark.me/web/Bp8SQH0y.js",
      "https://static-staging.justpark.me/web/CkNa0_bu.js",
      "https://static-staging.justpark.me/web/CGR80d2o.js",
      "https://static-staging.justpark.me/web/BPuZWrm_.js",
      "https://static-staging.justpark.me/web/BS7ugsZD.js",
      "https://static-staging.justpark.me/web/CEXBKqf1.js",
      "https://static-staging.justpark.me/web/D_2VpGK6.js",
      "https://static-staging.justpark.me/web/BPhBOcj5.js",
      "https://static-staging.justpark.me/web/BS01k_YE.js",
      "https://static-staging.justpark.me/web/BrE4P1Xo.js",
      "https://static-staging.justpark.me/web/DmyVjpt3.js",
      "https://static-staging.justpark.me/web/DKyCEnxC.js",
      "https://static-staging.justpark.me/web/mKndtfM2.js",
      "https://static-staging.justpark.me/web/Bl5id7x6.js",
      "https://static-staging.justpark.me/web/B6wNRkU2.js",
      "https://static-staging.justpark.me/web/yQf1zG1K.js",
      "https://static-staging.justpark.me/web/BoTk_6Gk.js",
      "https://static-staging.justpark.me/web/DUfKst7U.js",
      "https://static-staging.justpark.me/web/DxRuklQU.js",
      "https://static-staging.justpark.me/web/C_H9rdMl.js",
      "https://static-staging.justpark.me/web/D_il6ORt.js",
      "https://static-staging.justpark.me/web/DZr8aMCH.js",
      "https://static-staging.justpark.me/web/CKXCZ4cH.js",
      "https://static-staging.justpark.me/web/BWDv4hqq.js",
      "https://static-staging.justpark.me/web/BdF8THbY.js",
      "https://static-staging.justpark.me/web/CpcPKxd9.js",
      "https://static-staging.justpark.me/web/CGLYsYNB.js",
      "https://static-staging.justpark.me/web/BNQy6-Xo.js",
      "https://static-staging.justpark.me/web/CyamQF6P.js",
      "https://static-staging.justpark.me/web/DeIWjoDE.js",
      "https://static-staging.justpark.me/web/CDr9BwaG.js",
      "https://static-staging.justpark.me/web/CsIB31TE.js",
      "https://static-staging.justpark.me/web/DG96qZY3.js"
    ],
    "css": [
      "https://static-staging.justpark.me/web/assets/Search-UfrlFPoZ.css",
      "https://static-staging.justpark.me/web/assets/getFontAwesomeSizeClassname-DrMQkjQd.css",
      "https://static-staging.justpark.me/web/assets/getQueryParamSearchType-CF9y7ydN.css",
      "https://static-staging.justpark.me/web/assets/index-B4IvcrtU.css",
      "https://static-staging.justpark.me/web/assets/index-DLH5tKig.css",
      "https://static-staging.justpark.me/web/assets/index-_b7Hqr9j.css",
      "https://static-staging.justpark.me/web/assets/index-BzjoZlLS.css",
      "https://static-staging.justpark.me/web/assets/index-fTOcovHz.css",
      "https://static-staging.justpark.me/web/assets/index-DW9qsvI4.css",
      "https://static-staging.justpark.me/web/assets/index-DIYnh62M.css",
      "https://static-staging.justpark.me/web/assets/index-B12ZepDw.css",
      "https://static-staging.justpark.me/web/assets/index-BzfkCQ77.css",
      "https://static-staging.justpark.me/web/assets/index-BoQa7Q8X.css",
      "https://static-staging.justpark.me/web/assets/index-DIUZBqj3.css",
      "https://static-staging.justpark.me/web/assets/index-BnVctAVl.css",
      "https://static-staging.justpark.me/web/assets/index-k9sFEvtp.css",
      "https://static-staging.justpark.me/web/assets/index-oKGpw-S3.css",
      "https://static-staging.justpark.me/web/assets/index-D-5NaaI_.css",
      "https://static-staging.justpark.me/web/assets/index-ube-Mfmi.css",
      "https://static-staging.justpark.me/web/assets/BestPriceGuarantee-CFxSSNVk.css",
      "https://static-staging.justpark.me/web/assets/default_img_en-btrZGtRu.css",
      "https://static-staging.justpark.me/web/assets/index-BOFGMxlG.css",
      "https://static-staging.justpark.me/web/assets/index-r3_o6w4K.css",
      "https://static-staging.justpark.me/web/assets/TrustedAirport-BO2QTLtv.css",
      "https://static-staging.justpark.me/web/assets/getIconSizeClassname-DxG5YDo6.css",
      "https://static-staging.justpark.me/web/assets/coreListingDetailsFragment-C8sc5TYt.css",
      "https://static-staging.justpark.me/web/assets/useAddEventListenerToMap-CgLkRTeJ.css",
      "https://static-staging.justpark.me/web/assets/index-CGy7SS-L.css",
      "https://static-staging.justpark.me/web/assets/StreetViewButton-Ww9_uiJU.css",
      "https://static-staging.justpark.me/web/assets/index-C1pxK0Ne.css",
      "https://static-staging.justpark.me/web/assets/index-DzcD8tDo.css",
      "https://static-staging.justpark.me/web/assets/useIsIntersectingWithRoot-DYMl2-8E.css",
      "https://static-staging.justpark.me/web/assets/GlobalModal-CXqEbQuo.css",
      "https://static-staging.justpark.me/web/assets/index-Bd7xDcry.css",
      "https://static-staging.justpark.me/web/assets/index-DDoLUNvU.css",
      "https://static-staging.justpark.me/web/assets/index-GXWwSvrd.css",
      "https://static-staging.justpark.me/web/assets/index-0XC6j0Hc.css",
      "https://static-staging.justpark.me/web/assets/ConnectedBookWithConfidence-hFTsBBx8.css",
      "https://static-staging.justpark.me/web/assets/RadioGroup-G3Mv-ddo.css",
      "https://static-staging.justpark.me/web/assets/index-DFhp7v8x.css"
    ]
  }
}
</details>


@brookslybrand What is the expected behaviour here?
Previously without fog of war any users on the old app version would continue to load old assets until they manually did a full page reload. But now it seems like it's possible that during client side navigation users would load the new page modules.

I have a feeling that because the JS module that imports React has changed then we loose the reference to the shared react internals. But am unsure why that modules content changed during that deployment

@aaronadamsCA
Copy link
Contributor

aaronadamsCA commented Feb 3, 2025

Hey @brophdawg11, I'm guessing this could be an unanticipated side effect of #10447.

Per @thomaswelton, this RR7 issue sounds like it's probably the same problem similar, but most of the people there are complaining about the dev server, not builds: remix-run/react-router#12786

For now we rolled back to 2.15.2 and things seem stable again.

@thomaswelton
Copy link

Bit confusing as there are issues across both remix and react router repos. But I should have mentioned I'm running react-router 7.1.3
So I don't think it's related to #10447 as that was released in a later version.

@bran-watcha
Copy link

bran-watcha commented Feb 4, 2025

I encountered the same issue and was able to reproduce it in the exact same way.

Therefore, I temporarily set v3_lazyRouteDiscovery to false and deployed it to work around the issue.

My Remix version is 2.15.2.

So, it seems that the same issue exists in version 2.15.2 as well.

@yoni-noma
Copy link

using react-router v7.1.4 and it happens to me as well on production after deployment on tabs that holds the "old" version.
for now i cant rollback to v2, ive added a logic on errorBoundary that checks for the current build version and just before presenting the crash error to the user if there is a newer version im refreshing.. better ux but i dont like it, hoping to find a better solution 🙏

@thomaswelton
Copy link

@yoni-noma There is a function here https://github.com/remix-run/react-router/blob/3b45394fc7bd7c4aa58b802fda2558093217baca/packages/react-router/lib/dom/ssr/fog-of-war.ts#L29 called isFogOfWarEnabled. There is no way to turn this off via any config. However I've just patched the react-router module to edit this code to always return false.

By doing this I can see my routerManifest on first page load has all of my app routes and the app no longer makes network requests to fetch the manifest. As a result I think this will stop the issue from happening completely.

If you are using yarn > 2 you can patch this with https://yarnpkg.com/cli/patch
Or you can try this (which I've not used) https://www.npmjs.com/package/patch-package

@camthompson
Copy link

@tigerabrodi I'm facing the same issue. I believe I've been able to replicate the issue cc @brookslybrand

This appears to happen after deployments.

  • Visit the website on the current deployed version and leave this tab open.
  • Deploy a new version of the website. In my new version the module for my root component has changed.
  • Once the new version has fully deployed go back to the website which is still running the old version.
  • Do a page transition. See that during this transition the manifest is loaded. And in the URL the version ID is still the old app version
  • See that when requesting the old app version manifest we actually get back the latest app manifest with new files for the root module
  • See that the error occurs

Collapsed section contains the manifest for the old app version 32e10548
Collapsed section contains the manifest for the new app version e20cca2b

I just want to confirm that this is caused by deployments and has affected our application using both Remix v2 with future flags enabled and React Router 7.

We can reliably recreate this issue using the steps listed above and see a surge of exceptions on every deployment. We migrated our application to RR 7 and routes.ts configuration in an attempt to mitigate, but that wasn't effective.

@brookslybrand It's unfortunately difficult to create a repro for this, but it feels like a serious regression from Remix v2. Is this expected behavior from the framework that we should be working around as application developers? Would an issue opened in the RR repo be helpful?

@yoni-noma
Copy link

@yoni-noma There is a function here https://github.com/remix-run/react-router/blob/3b45394fc7bd7c4aa58b802fda2558093217baca/packages/react-router/lib/dom/ssr/fog-of-war.ts#L29 called isFogOfWarEnabled. There is no way to turn this off via any config. However I've just patched the react-router module to edit this code to always return false.

By doing this I can see my routerManifest on first page load has all of my app routes and the app no longer makes network requests to fetch the manifest. As a result I think this will stop the issue from happening completely.

If you are using yarn > 2 you can patch this with https://yarnpkg.com/cli/patch Or you can try this (which I've not used) https://www.npmjs.com/package/patch-package

Interesting, it basically tells it to act SPA, but it means that all of the js from the manifest are downloaded like an SPA, or that in your deployment architecture you never remove old files?

@thomaswelton
Copy link

@yoni-noma so I think this change is the equivalent of turning off the old 'future.v3_lazyRouteDiscovery' feature flag.

So now on first page load the manifest variable on the window contains the manifest for all of your routes.
So if a new version is deployed any client side navigation still loads in the old assets as specified by the manifest.

And yes. We serve all static assets from a CDN, and old files are always available.

We've now deployed this to production and will be monitoring.

@rossipedia
Copy link
Contributor

Opened a new discussion topic for possible solutions to this.

I started seeing this issue crop up a few months ago but I didn't make the connection to React context and how it relates to the changed module graph until seeing this thread.

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

No branches or pull requests

9 participants