Skip to content
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

React Server Components #10043

Merged
merged 41 commits into from
Dec 22, 2024
Merged
Changes from 1 commit
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
22e4dbe
Evaluate import attributes
devongovett Dec 1, 2024
3fc1a7f
Add react-client and react-server environments
devongovett Dec 1, 2024
06a5a4f
Support "source" exports condition
devongovett Dec 1, 2024
4b7348c
Handle "use client" and "use server" directives
devongovett Dec 1, 2024
acec228
Support "use server-entry" to create isolated bundle groups
devongovett Dec 1, 2024
8cf1718
HMR
devongovett Dec 1, 2024
67353f9
Fix scope hoisted builds
devongovett Dec 2, 2024
fc7110b
Add import.meta.distDir and import.meta.publicUrl
devongovett Dec 2, 2024
a0b8bb4
RSC runtime
devongovett Dec 6, 2024
33eab53
RSC example
devongovett Dec 6, 2024
51a99fa
Register server references in client bundles correctly
devongovett Dec 8, 2024
69ab107
Don't execute module in HMR that haven't already loaded
devongovett Dec 8, 2024
c8cd3a9
Fix dependency collector bug
devongovett Dec 8, 2024
b8b44b6
Ignore of ws module is not available in HMR runtime
devongovett Dec 8, 2024
8aac352
Fix bundle graph check for async bundles
devongovett Dec 8, 2024
a160634
Fix library bundler for bundle graph change
devongovett Dec 9, 2024
86d5195
Handle internalized async dependencies
devongovett Dec 9, 2024
4eb2f66
Don't remove type=module in development to avoid multiple copies of a…
devongovett Dec 9, 2024
9ea9318
prettier
devongovett Dec 9, 2024
a256737
Resolve react relative to app
devongovett Dec 9, 2024
24f9c46
Use react-server-dom-parcel from npm
devongovett Dec 9, 2024
61f02c2
Fix default node engines in test
devongovett Dec 9, 2024
561beac
Allow parallel bundles with different contexts from the root bundle b…
devongovett Dec 10, 2024
d9b984f
Don't transpile dynamic imports in TS plugins
devongovett Dec 10, 2024
215dd5e
Remove error that "Only browser targets are supported in serve mode"
devongovett Dec 10, 2024
0fa0008
Use parcelRequire.load to load bundles
devongovett Dec 10, 2024
c0b0ee6
lint
devongovett Dec 10, 2024
e0a86c2
fix test
devongovett Dec 10, 2024
b1c3ad4
Bump react-server-dom-parcel
devongovett Dec 10, 2024
0b82b13
format
devongovett Dec 10, 2024
f12dac0
Bump react to 19
devongovett Dec 16, 2024
07f24a8
Replace typeof process with 'undefined' to avoid adding polyfill for …
devongovett Dec 16, 2024
1f7c98d
normalize publicUrl
devongovett Dec 16, 2024
1cb5ae5
treat context changes async bundles
devongovett Dec 16, 2024
6c9a184
refactor to let react insert scripts
devongovett Dec 16, 2024
9f297b1
add tests
devongovett Dec 16, 2024
6a13048
Improve inference for targets in serve mode
devongovett Dec 22, 2024
4e7c3a4
Bundle node_modules in the react-server context for now
devongovett Dec 22, 2024
4e0b155
fixes
devongovett Dec 22, 2024
93be6cf
Merge branch 'v2' of github.com:parcel-bundler/parcel into rsc2
devongovett Dec 22, 2024
1f5f005
update versions
devongovett Dec 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor to let react insert scripts
devongovett committed Dec 16, 2024
commit 6c9a18452b64afdbe5095f3ad13f84426bc627fc
2 changes: 1 addition & 1 deletion packages/examples/react-server-components/.parcelrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"extends": "@parcel/config-default",
"runtimes": ["...", "@parcel/runtime-rsc"]
"runtimes": ["@parcel/runtime-rsc", "..."]
}
8 changes: 5 additions & 3 deletions packages/examples/react-server-components/src/server.tsx
Original file line number Diff line number Diff line change
@@ -6,8 +6,8 @@ import {injectRSCPayload} from 'rsc-html-stream/server';

// Client dependencies, used for SSR.
// These must run in the same environment as client components (e.g. same instance of React).
import {createFromReadableStream} from 'react-server-dom-parcel/client' with {env: 'react-client'};
import {renderToReadableStream as renderHTMLToReadableStream} from 'react-dom/server' with {env: 'react-client'};
import {createFromReadableStream} from 'react-server-dom-parcel/client.edge' with {env: 'react-client'};
import {renderToReadableStream as renderHTMLToReadableStream} from 'react-dom/server.edge' with {env: 'react-client'};
import ReactClient from 'react' with {env: 'react-client'};

// Page components. These must have "use server-entry" so they are treated as code splitting entry points.
@@ -81,8 +81,10 @@ async function render(req, res, component, actionResult) {

// Use client react to render the RSC payload to HTML.
let [s1, s2] = stream.tee();
let data = createFromReadableStream(s1);
let data;
function Content() {
// Important: this must be constructed inside a component for preinit scripts to be inserted.
data ??= createFromReadableStream(s1);
return ReactClient.use(data);
}

2 changes: 1 addition & 1 deletion packages/packagers/js/src/index.js
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ export default (new Packager({
},
);

let name = packageName?.contents?.name ?? '';
let name = packageName?.contents ?? '';
return {
parcelRequireName: 'parcelRequire' + hashString(name).slice(-4),
unstable_asyncBundleRuntime: Boolean(
4 changes: 3 additions & 1 deletion packages/runtimes/rsc/package.json
Original file line number Diff line number Diff line change
@@ -18,14 +18,16 @@
"react-server": "./resources.js",
"source": "./src/RSCRuntime.js",
"default": "./lib/RSCRuntime.js"
}
},
"./resources": "./resources.js"
},
"engines": {
"node": ">= 12.0.0",
"parcel": "^2.8.3"
},
"dependencies": {
"@parcel/plugin": "2.13.2",
"@parcel/rust": "2.13.2",
"@parcel/utils": "2.13.2",
"nullthrows": "^1.1.1"
}
Loading