Skip to content

Conversation

@rickhanlonii
Copy link
Member

@rickhanlonii rickhanlonii commented Feb 3, 2026

Allows Server Components to import Context from a "use client' module and render its Provider.

That means you can now import Context in a server component and pass it a value for the Client to read without a client component wrapper:

import {Context, ClientCompoent} from './Client';


export function App() {
  return (
    <Context value="from server">
      <ClientComponent />
    </Context>
  );
}
// Client.js
"use client"

export const Context = createContext(null);

export function ClientComponent() {
  return <div>{use(Context)}</div>
}

Note: this is not server context. It's just creating the Context with a value from the server in the client bundle. You cannot use(Context) in a server component.

Only tricky part was that I needed to add REACT_CONTEXT_TYPE handling in mountLazyComponent so lazy-resolved Context types can be rendered. Previously only functions, REACT_FORWARD_REF_TYPE, and REACT_MEMO_TYPE were handled.

Tested in the Flight fixture.

ty bb claude

Closes #35340

@meta-cla meta-cla bot added the CLA Signed label Feb 3, 2026
@github-actions github-actions bot added the React Core Team Opened by a member of the React Core Team label Feb 3, 2026
@react-sizebot
Copy link

react-sizebot commented Feb 3, 2026

Comparing: 748ee74...c136795

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable/react-dom/cjs/react-dom.production.js = 6.84 kB 6.84 kB +0.05% 1.88 kB 1.88 kB
oss-stable/react-dom/cjs/react-dom-client.production.js +0.07% 609.91 kB 610.35 kB +0.04% 107.85 kB 107.89 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.84 kB 6.84 kB = 1.88 kB 1.88 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js +0.06% 675.84 kB 676.28 kB +0.04% 118.81 kB 118.85 kB
facebook-www/ReactDOM-prod.classic.js +0.06% 695.47 kB 695.91 kB +0.04% 122.24 kB 122.28 kB
facebook-www/ReactDOM-prod.modern.js +0.06% 685.85 kB 686.29 kB +0.04% 120.63 kB 120.68 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js = 127.35 kB 127.02 kB = 25.18 kB 25.16 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js = 127.33 kB 127.00 kB = 25.18 kB 25.15 kB
oss-experimental/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.production.js = 126.29 kB 125.96 kB = 24.96 kB 24.93 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js = 125.55 kB 125.22 kB = 24.81 kB 24.79 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js = 125.55 kB 125.22 kB = 24.81 kB 24.79 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js = 125.54 kB 125.21 kB = 24.81 kB 24.79 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js = 125.54 kB 125.21 kB = 24.81 kB 24.79 kB
oss-stable-semver/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.production.js = 124.49 kB 124.16 kB = 24.58 kB 24.55 kB
oss-stable/react-server-dom-unbundled/cjs/react-server-dom-unbundled-server.node.production.js = 124.49 kB 124.16 kB = 24.58 kB 24.55 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js = 120.57 kB 120.24 kB = 24.10 kB 24.08 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js = 120.57 kB 120.24 kB = 24.10 kB 24.08 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js = 119.68 kB 119.35 kB = 23.89 kB 23.87 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js = 119.33 kB 119.00 kB = 23.80 kB 23.77 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js = 118.78 kB 118.45 kB = 23.73 kB 23.70 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js = 118.78 kB 118.45 kB = 23.73 kB 23.70 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js = 118.78 kB 118.45 kB = 23.73 kB 23.71 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js = 118.78 kB 118.45 kB = 23.73 kB 23.71 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js = 117.89 kB 117.56 kB = 23.51 kB 23.49 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js = 117.89 kB 117.56 kB = 23.51 kB 23.49 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js = 117.54 kB 117.21 kB = 23.42 kB 23.40 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.browser.production.js = 117.54 kB 117.21 kB = 23.42 kB 23.40 kB

Generated by 🚫 dangerJS against c136795

@samselikoff
Copy link
Contributor

Closes #35340

@rickhanlonii rickhanlonii requested review from eps1lon and unstubbable and removed request for eps1lon February 3, 2026 03:56
@eps1lon eps1lon changed the title [flight] allow context providers from client modules [Flight] allow context providers from client modules Feb 3, 2026
rickhanlonii and others added 2 commits February 3, 2026 12:06
Add tests for lazy-loaded context providers to ReactLazy-test.internal.js.
Update existing test that expected lazy Context to throw - it now works.

Co-authored-by: Sophie Alpert <git@sophiebits.com>
@rickhanlonii rickhanlonii merged commit 3e00319 into facebook:main Feb 3, 2026
234 checks passed
@rickhanlonii rickhanlonii deleted the rh/rsc-context branch February 3, 2026 15:24
github-actions bot pushed a commit that referenced this pull request Feb 3, 2026
Allows Server Components to import Context from a `"use client'` module
and render its Provider.

Only tricky part was that I needed to add `REACT_CONTEXT_TYPE` handling
in mountLazyComponent so lazy-resolved Context types can be rendered.
Previously only functions, REACT_FORWARD_REF_TYPE, and REACT_MEMO_TYPE
were handled.

Tested in the Flight fixture.

ty bb claude

Closes #35340

---------

Co-authored-by: Sophie Alpert <git@sophiebits.com>

DiffTrain build for [3e00319](3e00319)
github-actions bot pushed a commit that referenced this pull request Feb 3, 2026
Allows Server Components to import Context from a `"use client'` module
and render its Provider.

Only tricky part was that I needed to add `REACT_CONTEXT_TYPE` handling
in mountLazyComponent so lazy-resolved Context types can be rendered.
Previously only functions, REACT_FORWARD_REF_TYPE, and REACT_MEMO_TYPE
were handled.

Tested in the Flight fixture.

ty bb claude

Closes #35340

---------

Co-authored-by: Sophie Alpert <git@sophiebits.com>

DiffTrain build for [3e00319](3e00319)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed React Core Team Opened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Server Components error when directly rendering a Context

4 participants