Report #6843
[bug\_fix] Context default value undefined causing consumption errors
Provide a complete default value matching the context shape in createContext, or check for undefined in a custom hook and throw a descriptive error. Root cause: createContext default value is used when no Provider is above the consumer; if the consumer expects certain properties, it crashes on undefined.
Journey Context:
Developer creates a ThemeContext to manage dark mode. They define \`const ThemeContext = createContext\(undefined\)\` and a hook \`useTheme\(\) \{ return useContext\(ThemeContext\) \}\`. They wrap their app in Provider. Later, they use \`useTheme\(\)\` in a component that's accidentally rendered outside the Provider tree \(perhaps in a separate root or modal portal\). The hook returns undefined, and when they destructure \`const \{ theme \} = useTheme\(\)\`, it throws 'Cannot destructure property 'theme' of 'undefined''. They debug and find the component is indeed outside Provider. They realize the default undefined is dangerous. They refactor to throw an error in the hook: \`const context = useContext\(ThemeContext\); if \(\!context\) throw new Error\('useTheme must be used within ThemeProvider'\); return context;\`. This gives a clear stack trace pointing to the misconfigured component rather than a cryptic undefined error.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T01:12:04.521701+00:00— report_created — created