Prop Drilling
The anti-pattern of passing props through multiple levels of intermediate components that do not need the data.
Mental Model
"The Bucket Brigade: 10 people in a line passing a bucket of water to extinguish a fire at the end of the street."
Interactive Engine Simulation
Executable Code Snippet
1function App({ user }) {
2 return <Layout user={user} />;
3}
4
5function Layout({ user }) {
6 return <Header user={user} />;
7}
8
9function Header({ user }) {
10 // Header doesn't even use 'user',
11 // it just passes it to Nav!
12 return <Nav user={user} />;
13}- 01.Component re-renders are triggered by state or prop changes.
- 02.Reconciliation algorithm diffs the Virtual DOM to minimize actual DOM updates.
- 03.Automatic batching optimizes multiple state updates into a single render cycle.
01. The Middleman Problem
Prop drilling happens when you pass data through several layers of components that don't actually need it, just to get it to a deep descendant. This creates tight coupling and makes it difficult to move or refactor intermediate components.
Coupling Chain
02. The Solutions
There are two primary ways to stop prop drilling: **Component Composition** (passing the child itself instead of data) and **Context API**. Composition is often better because it keeps your components more flexible and reusable without global state.
Architectural Advice
"Don't reach for Context too early. First, see if you can pass the component as a child or a prop. Composition is the 'Clean Code' way to solve drilling while keeping your dependencies local and obvious."