Cutting Redundant Data Fetches with React’s `cache` in React 19
React 19’s cache memoizes server calls per request. Wrap a fetch or DB query, call it from multiple server components, and React runs it once. Fewer duplicate hits, faster pages, consistent data. The cache clears after render. Use it in Next.js 15 with RSC.
Fresh vs. Next.js 15
I tried Fresh after another hydration bug. It shipped HTML, woke just the interactive islands, and my laptop sighed in relief. Next 15 felt heavier but battle-tested. My take: use Fresh for speed and clarity, Next when you need every plugin and playbook.
Exponential Backoff in Modern JavaScript
Stop hammering a sick API. Exponential backoff—with jitter and caps—turns retries into resilience. I show how to wire it in React/Next.js (client + Route Handlers) and Fastify, when to retry vs bail, and how to keep users happy in 2025.
Are React Server Components Improving Your Apps?
React Server Components (RSCs) can deliver real performance wins. One team rebuilt their Next.js site with RSCs and achieved a 62 % drop in JavaScript bundle size and a 63 % boost in Google’s Speed Index. Less client‑side React logic means faster first paints.
Why You Should Avoid Using Server Actions for Data Fetching in Next.js 15
Next.js’s Server Actions make it easy to call server code directly from components via POST requests. They work great for mutations like form submissions or database writes. But using them for data fetching can hurt performance and complicate caching and concurrency.
A Year with Next.js Server Actions: Lessons Learned
Server Actions in Next.js let you write server-side code directly in React components, cutting down boilerplate and simplifying client-server communication. They shine for data mutations and UI-tied operations, but require care to avoid tight coupling, overuse, or vendor lock-in.
Managing complexity: Shared business logic in Next.js (Part 1: Server-Side Architecture)
In Next.js 14+, structuring shared business logic through repositories, action functions, and standardized error handling cuts duplication and keeps API routes and Server Actions consistent. This layered approach boosts maintainability, type safety, and sleep quality.