#563 – June 28, 2026
the right choice depends on how far apart the components are and what type of data they need to share
Component communication patterns in React applications
23 minutes by Neciu Dan
React components can share data in several ways, and the right choice depends on how far apart the components are and what type of data they need to share. Start with props and callbacks for nearby components, lift state to a shared parent for siblings, and use composition to avoid passing data through unrelated components. For data needed across many components, context works well for slow-changing values like themes, while Zustand suits frequently updated global state, TanStack Query handles server data, and the URL stores view-related state like filters and pagination.
When React hooks stop scaling: Moving complex state to zustand
3 minutes by Oren Farhi
Speech recognition logic started in a custom hook, which worked until multiple components needed the same state and updates came from outside React. Stale data bugs revealed that the hook had grown into shared application state. Moving state to Zustand gave it a clear home, so browser events update the store directly and components subscribe to only what they need.
Module system dependency injection
6 minutes by Jay Freestone
Using the module system to swap dependencies at build time can be useful, but it breaks testability and prevents having multiple implementations in the same app. The better approach is to keep business logic in functions that accept dependencies as arguments, so tests can use simple inline stubs. Reserve module-level substitution for swapping out infrastructure like analytics or feature flags between environments. Choose defaults there, but don't hide every dependency decision inside it.
React router v8
7 minutes by Brooks Lybrand
React Router v8 is out, and the upgrade is intentionally simple. Most breaking changes were already available as opt-in flags in v7, so migrating means updating dependencies, adopting those flags, and removing a few deprecated APIs. The new minimum versions are Node 22, React 19, and Vite 7. Looking ahead, the team plans yearly major releases and is working toward stable Server Components support.
RSC server functions are not an API boundary
7 minutes by Long Ho
React Server Components let frameworks turn server calls into what looks like ordinary function calls. But those calls still cross a network, using compiler-generated IDs that can silently change when code is refactored or frameworks are upgraded. This creates real problems during rolling deploys, where old clients may hold references the new server no longer recognizes. Treat any server function that needs stability, versioning, or broad reuse as a real API instead.
And the most popular article from the last issue was: