#550 – March 29, 2026
it does it on purpose
Use(): The hook that breaks the rules (on purpose)
11 minutes by Sascha Becker
React's use() hook reads promises and context at render time, integrates with Suspense, and eliminates the most common useEffect anti-pattern. Sascha explains what it replaces, when to reach for it, and the caching pitfall nobody warns you about.
Report: 84% of teams use AI. Only 21% have efficient workflows.
sponsored by Progress Telerik
AI is speeding teams up—but not always making them better. This report reveals what’s working, what’s breaking, and how teams are scaling AI across design and development—plus what to focus on next in 2026. Explore the report here.
A TypeScript class-based WebSocket library for React
11 minutes by Max Troost
Max describes building a custom WebSocket system for React to handle real-time updates efficiently. He uses TypeScript classes and TanStack Store to manage connections, subscriptions, and messaging. The solution keeps a single connection per URL, supports automatic reconnect and resubscribe, and shares data across components. While slightly different from typical React patterns, it improves performance, scalability, and developer experience for real-time applications.
React rendering strategies
5 minutes by Vu Nguyen
Web rendering has gone through several major shifts. Early server-side apps were simple but slow and rigid, while the jQuery era added interactivity without solving deeper problems. React and SPAs moved rendering to the browser, which felt like progress until performance and SEO issues resurfaced. Now the industry blends both approaches, and understanding this history helps explain why each modern rendering pattern exists.
Test IDs are an a11y smell
6 minutes by Dominik Dorfmeister
Role-based selectors beat data-testid attributes because they mirror how real users interact with your app. If a test can't find an element by its role, that's a sign the markup has accessibility problems worth fixing. This approach catches issues like clickable divs that break keyboard navigation and screen readers. Better tests and better accessibility come as a package deal.
Start naming your useEffect functions, you will thank me later
12 minutes by Neciu Dan
Neciu says that using names for useEffect functions makes React code easier to read, debug, and organize. Named effects clearly show intent, so developers can understand behavior without reading every line. He points out this practice also reveals overly complex or unnecessary effects, encouraging better structure and separation of concerns. Overall, a small change—naming functions—improves clarity, reduces confusion, and leads to cleaner, more maintainable components.
And the most popular article from the last issue was: