-
-
Notifications
You must be signed in to change notification settings - Fork 10.6k
feat: turbo-stream v3 #12945
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
base: dev
Are you sure you want to change the base?
feat: turbo-stream v3 #12945
Conversation
🦋 Changeset detectedLatest commit: 66d5af8 The changes in this PR will be included in the next version bump. Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did a quick code review - can pull it down and do some app testing too later today or tomorrow if you'd like me too also
@@ -0,0 +1,6 @@ | |||
--- | |||
"integration": minor |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I dont think we need entries for this
"integration": minor |
@@ -230,6 +230,10 @@ export const createRequestHandler: CreateRequestHandlerFunction = ( | |||
); | |||
} | |||
|
|||
if (!response) { | |||
return new Response("Unknown Server Error", { status: 500 }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can probably run this through the same utility we use elsewhere
return new Response("Unknown Server Error", { status: 500 }); | |
let error = new Error('Unhandled request') | |
return returnLastResortErrorResponse(error, serverMode); |
@@ -327,44 +327,22 @@ export function encodeViaTurboStream( | |||
|
|||
return encode(data, { | |||
signal: controller.signal, | |||
redactErrors: | |||
serverMode === ServerMode.Development ? false : "Unexpected Server Error", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! This is a great new feature for turbo-stream
👍
Is this backwards compatible with turbo-stream v2? i.e. if the server has updated to v3 but the client hasn't reloaded the window and is still on v2 and makes a data request, what will happen? |
It is not a BW compat data format. |
any update on landing this? |
any updates when this will be merged? |
No updates at the moment - we're still noodling on this internally. This would be a breaking change if we adopted it and with RSC on the horizon it may not be worth it since we'll likely be replacing turbo-stream with the RSC wire format with that work. |
I prefer the turbo-stream format compared to RSC, turbo-stream supports Error instances, async iterables, buffers and a lot more that RSC does not. I think the best approach would be to embed the RSC stream inside turbostream, as a text stream (which is already supported). This way react-router can continue to extend the |
Someone should audit the turbo-stream re-write... It is, after-all, a weekend project that only a handful of people have glanced at. |
No description provided.