fix(browser): Ensure keepalive flag is correctly set for parallel requests #7553
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.
We noticed that sometimes request would remain in a seemingly pending state.
After some investigation, we found out that the limit of 64kb for keepalive-enabled fetch requests is not per request but for all parallel requests running at the same time.
This PR fixes this by keeping track of how large the pending body sizes are, and setting
keepalive
accordingly.I tried this in my local reproduction app, where it now worked as expected!
When do we use keepalive now
We use keepalive if:
This should defensively work for relevant cases.
Why do we want to have keepalive, when possible?
Especially for replays and transactions, having keepalive enabled means we can capture more data when a user leaves the page, which would otherwise be lost. This lead to problems with Next.js transaction collection, for example. In Replay, we want to be able to make sure to do a final flush before the user leaves the page.
Spec reference
Fixes #7546
Fixes #6049