Stop the 'telephone game' in your React code. Learn to balance props, local state, and context with a practical guide to building scalable, high-performance component architectures.

Start local with useState, move to Context for low-frequency environment settings, use React Query for server data, and reach for a global store like Zustand or Redux only when you have complex, high-frequency client logic.
Prop drilling occurs when you pass data through multiple layers of intermediate components that do not actually use the data, acting only as "mailmen" to deliver it to a deeply nested child. A common "Rule of Three" suggests that if you are passing a prop through more than three levels—especially if the middle components are indifferent to that data—it is a red flag. At this point, you should consider using React Context or a state management library to "teleport" the data directly to where it is needed.
Context is primarily a transport system rather than a storage system; it moves data from point A to point B but still requires local state (like useState) to manage that data. It is best suited for low-frequency "environment" data such as themes, language settings, or authenticated user info. In contrast, libraries like Redux or Zustand are designed for complex "business" data and high-frequency updates. They offer better performance optimizations, such as selectors, which prevent unnecessary re-renders when only a small portion of the global state changes.
When a value in a Context Provider changes, every component "consuming" that context is forced to re-render. If you store data that updates rapidly—like a timer, a real-time chat feed, or a "God Object" containing all app data—you trigger a "render cascade" that can make the application feel laggy or stuttery. To mitigate this, developers should split contexts into smaller, focused pieces and use useMemo to ensure that the context value only changes its referential identity when the underlying data actually updates.
Modern React architecture often separates "server state" from "client state." For data fetched from an API, tools like React Query are recommended because they handle complex logic like caching, loading states, error handling, and re-fetching automatically. This often replaces about 80 percent of what developers used to put into global stores like Redux, leaving those libraries to handle only "browser-born" logic like complex form wizards or global UI settings.
"Provider Soup" happens when your root component is wrapped in a dozen different Context Providers, making the code difficult to read. You can clean this up by using "composition"—creating a single AppProvider component that wraps all your individual providers in one place. Additionally, you should evaluate if multiple contexts can be consolidated into a single organized store, such as a Zustand store, which can manage multiple pieces of state without requiring nested providers.
Creado por exalumnos de la Universidad de Columbia en San Francisco
"Instead of endless scrolling, I just hit play on BeFreed. It saves me so much time."
"I never knew where to start with nonfiction—BeFreed’s book lists turned into podcasts gave me a clear path."
"Perfect balance between learning and entertainment. Finished ‘Thinking, Fast and Slow’ on my commute this week."
"Crazy how much I learned while walking the dog. BeFreed = small habits → big gains."
"Reading used to feel like a chore. Now it’s just part of my lifestyle."
"Feels effortless compared to reading. I’ve finished 6 books this month already."
"BeFreed turned my guilty doomscrolling into something that feels productive and inspiring."
"BeFreed turned my commute into learning time. 20-min podcasts are perfect for finishing books I never had time for."
"BeFreed replaced my podcast queue. Imagine Spotify for books — that’s it. 🙌"
"It is great for me to learn something from the book without reading it."
"The themed book list podcasts help me connect ideas across authors—like a guided audio journey."
"Makes me feel smarter every time before going to work"
Creado por exalumnos de la Universidad de Columbia en San Francisco
