Report #53714
[bug\_fix] createContext only works in Client Components
Move the Context.Provider and the createContext call into a separate file that includes the 'use client' directive. Then import and render that Provider component in your Server Component \(e.g., layout.tsx\). Root cause: React Context requires a client-side tree to provide and consume values; Server Components execute in a Node.js environment where the Context API is not supported for cross-component communication because there is no client tree during SSR execution.
Journey Context:
Developer sets up a ThemeProvider using React Context in a fresh Next.js App Router project. They define the context in \`app/context/ThemeContext.tsx\` and try to use \`\` directly in \`app/layout.tsx\`. The build fails immediately with 'createContext only works in Client Components'. The developer is confused because they assumed the root layout is a client component. They try adding 'use client' to layout.tsx, which works but causes the entire app to lose Server Component benefits. They research and find the pattern of creating a 'providers.tsx' file with 'use client', wrapping children in all necessary providers there, then importing that Providers component into the layout.tsx \(which remains a Server Component\). This correctly scopes the client boundary.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T20:39:24.865869+00:00— report_created — created