Skip to content

feat(rsc): ability to not load server reference module during createFromReadableStream on rsc environment#1289

Merged
hi-ogawa merged 17 commits into
mainfrom
rsc-preserve-server-references
Jul 17, 2026
Merged

feat(rsc): ability to not load server reference module during createFromReadableStream on rsc environment#1289
hi-ogawa merged 17 commits into
mainfrom
rsc-preserve-server-references

Conversation

@hi-ogawa

@hi-ogawa hi-ogawa commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Description

TODO:

  • e2e (payload producer and reviver in different runtime and verify module not loaded on reviver end)
  • docs

This PR adds createFromReadableStream options { preserveServerReferences: true } to allow not loading server reference module. The use case is demonstrated in packages/plugin-rsc/examples/cache-replay and accompanying e2e. In short, it allows rsc flight payload produced by one runtime to be consumed by other runtime and render it as a form action without importing associated server reference module.

The implementation idea is a same as $$decode-client proxy trick we already use for preserving client reference "entity" without reviving actual "module" during createFromReadableStream. This PR added $$preserve tag for server reference. This idea is illustrated in https://artifacts.hiro18181.workers.dev/vite-plugin-react-rsc-load-id-journey (this was created before this PR, so missing $$preserve mention).

This is a smaller scope of changes from #1253 where I can understand the motivation and verify the correctness. The other aspect from the original PR such as framework-owned reference format seems to have issues in entire usages of server action lifecycle (from my reading, the e2e there doesn't support progressive enhancement form action since it only intercepts loadServerAction), so it's deferred and will be investigated separately.

For further context that I haven't fully verified in my eye but raised by agents are following:

Co-authored-by: OpenCode <noreply@opencode.ai>
@hi-ogawa hi-ogawa changed the title fix(rsc): don't load server reference module from createFromReadableStream fix(rsc): don't load server reference module during createFromReadableStream Jul 16, 2026
@hi-ogawa hi-ogawa changed the title fix(rsc): don't load server reference module during createFromReadableStream fix(rsc): don't load server reference module during createFromReadableStream on rsc environment Jul 16, 2026
hi-ogawa and others added 2 commits July 16, 2026 19:07
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
@hi-ogawa hi-ogawa changed the title fix(rsc): don't load server reference module during createFromReadableStream on rsc environment feat(rsc): ability to not loading server reference module during createFromReadableStream on rsc environment Jul 16, 2026
Add a persisted Flight example covering development and production server restarts.

Co-authored-by: OpenCode <noreply@opencode.ai>
Comment thread packages/plugin-rsc/src/plugin.ts
Keep persisted Flight handling in the application root while reusing the starter framework flow.

Co-authored-by: OpenCode <noreply@opencode.ai>
Comment thread packages/plugin-rsc/examples/rsc-server-reference-replay/src/action.ts Outdated
Comment thread packages/plugin-rsc/src/react/rsc/client.ts
@hi-ogawa hi-ogawa changed the title feat(rsc): ability to not loading server reference module during createFromReadableStream on rsc environment feat(rsc): ability to not load server reference module during createFromReadableStream on rsc environment Jul 17, 2026
hi-ogawa and others added 4 commits July 17, 2026 10:54
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Comment thread packages/plugin-rsc/examples/cache-replay/README.md
hi-ogawa and others added 6 commits July 17, 2026 11:25
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Co-authored-by: OpenCode <noreply@opencode.ai>
Comment thread packages/plugin-rsc/src/plugin.ts Outdated
hi-ogawa and others added 2 commits July 17, 2026 12:10
@hi-ogawa
hi-ogawa marked this pull request as ready for review July 17, 2026 03:51
@hi-ogawa
hi-ogawa merged commit a3690f3 into main Jul 17, 2026
29 checks passed
@hi-ogawa
hi-ogawa deleted the rsc-preserve-server-references branch July 17, 2026 03:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant