Fix lazy components suspending unnecessarily when already preloaded by loadableReady #1030
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.
Summary
Currently, when using
lazy
in combination with SSR (ChunkExtractor on the server side and loadableReady on the client), hydration does not reliably succeed despite the chunks being ready.This is caused by the suspense branch suspending despite having the module ready and not being in a
loading
state. By using the existing result when state is notloading
, we can avoid suspending and hydrate reliably without mismatches.The existing logic does not work because there is no
cachedPromise
if preloaded via loadableReadyTest plan
Added two tests that replicate the babel transformed output when using the plugin.
There are lint failures on files unrelated to this PR that exist on main