react: schedule transport close as microtask to avoid strict mode issues#57
Merged
react: schedule transport close as microtask to avoid strict mode issues#57
Conversation
Coverage Report
File Coverage
|
||||||||||||||||||||||||||||||||||||||
6e4aa98 to
412c19e
Compare
412c19e to
ad9a2d3
Compare
Changed `TransportProvider` to schedule the transport close as a microtask on unmount, ensuring React's Strict Mode remount cycle cancels the close during development. Updated corresponding test to verify behavior.
ad9a2d3 to
2740a29
Compare
kaschula
approved these changes
Apr 16, 2026
Contributor
kaschula
left a comment
There was a problem hiding this comment.
Looks good. I have tested it locally as well and its working.
I had to do some. research into how react in strict behaves and how your fix works but I now get it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The problem in the use-chat demo app is actually on Vercel's side and I am going to raise an issue there. In production mode everything works fine. The issue is that in strict mode in development, React does a fake mount-unmount, which results in new transport creation and old transport disposal, although
useChatcontinues using the old transport (that is already closed).Changed
TransportProviderto schedule the transport close as a microtask on unmount, ensuring React's Strict Mode remount cycle cancels the close during development.