Blog

Debounce vs Throttle: When to Use Each (and Why It Matters)

6 min read

Debounce and throttle both limit how often a function runs, but they solve different problems. Learn when to use each, how to build them as React hooks, and the mistakes that trip up most developers.

#react#javascript#hooks#performance

Stop Fetching Data Sequentially When It Could Be Parallel

7 min read

Fetching independent data one request at a time is one of the most common — and most expensive — performance mistakes in React apps. Here's how to spot it and fix it with Promise.all.

#fetching#promises#performance#async

You Probably Don't Need Redux Yet

5 min read

Most React apps don't need global state libraries at the start. Server state, local state, and context cover almost everything — here's when to actually reach for Zustand or Redux.

#react#state-management#context#hooks

When to Replace Multiple useState with useReducer

6 min read

Multiple useState calls that change together, handlers calling three setters in a row, state that gets out of sync — these are the signs it's time to reach for useReducer.

#useState#useReducer#refactoring

New way of passing ref to child in React 19

4 min read

React 19 simplifies ref forwarding by treating ref as a normal prop. Learn how this change reduces boilerplate and improves component ergonomics.

#react19#refs

Composition vs Compound Components in React

3 min read

Understand the key differences between composition and compound component patterns in React, and when to use each approach for building reusable UI.

#compound-components#composition#context