Stop inserting null placeholders for non-executed loaders in staticHandler.query #13223
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Do not add
null
tostaticHandler.query()
loaderData
if routes do not have loadersThis was an implementation detail required in Remix v2 because we used
JSON.stringify()
to serialize theloaderData
of the client and it would stripundefined
values which would cause issues for client-side router hydration. This should have been removed in React Router v7 because Single Fetch does not have the same restrictions but it was missed.We used to check
loaderData[routeId] !== undefined
to see if a given route already had any data or not. Once we began allowing loaders to returnundefined
, our check ofloaderData[routeId] !== undefined
was no longer valid and we adjusted to a check ofrouteId in loaderData
. This check can produce false positives if null values are inserted.createStaticHandler()
/<StaticRouterProvider>
, and usingcontext.loaderData
to control<RouterProvider>
hydration behavior on the client.