React's built-in way to make a value available to a whole subtree without prop drilling.
createContext, a Provider, and useContext (or the older Consumer component) together let a deeply nested component read a value without every component in between having to explicitly receive and pass it along. It's best suited to genuinely global, relatively stable values — the current theme, the authenticated user, the active locale — rather than fast-changing or highly localized state.
The main pitfall is performance: every component consuming a context re-renders whenever the Provider's value changes, even if that component only reads a small part of a larger value object. This is why Context isn't a drop-in replacement for a real state management library when updates are frequent or the shared value is large and composite — splitting into multiple smaller contexts, or memoizing the value passed to the Provider, are the usual mitigations.
What you'll walk away knowing