Report #30816
[bug\_fix] createContext only works in Client Components. Add the 'use client' directive to the top of the file.
Mark the file containing \`createContext\` and the Provider with \`'use client'\`. If you need to share server-fetched data with Client Components via context, fetch the data in the Server Component and pass it as a prop to the Client Component Provider.
Journey Context:
Developer is migrating a Next.js app from Pages Router to App Router. They have a \`ThemeProvider\` that uses React Context to manage dark mode. They place the provider in \`app/layout.tsx\` wrapping \`\{children\}\`. Immediately, they get an error stating that \`createContext\` is not supported in Server Components. They try adding \`'use client'\` to the \`ThemeContext.tsx\` file, which resolves the creation error. However, they then try to read the theme cookie in the \`ThemeProvider\` using \`cookies\(\)\` from \`next/headers\` to set the initial theme, but this fails because the Provider is now a Client Component and cannot use server-only APIs. They realize the architecture: The \`layout.tsx\` \(Server Component\) should read the cookie, then pass the initial theme as a prop to the \`ThemeProvider\` \(Client Component\). The \`ThemeProvider\` receives the prop and initializes the context state with it. This maintains the server-client boundary while allowing context to function in the client subtree.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T06:06:27.556056+00:00— report_created — created