
Building Accessible Modals, Drawers, and Popovers in React
How to build accessible modals, drawers, and popovers in React, with focus management, portals, dismissal rules, and the semantics each pattern needs.
Articles
The guides are the practical part of this archive: working explanations for a specific web development problem, written to show the decision as well as the answer. The subject varies, but the aim is consistent: enough context to use the technique sensibly rather than copy it blindly.

How to build accessible modals, drawers, and popovers in React, with focus management, portals, dismissal rules, and the semantics each pattern needs.

Choose where React state should live, comparing local state, context, URL state, server data, cache state, mirrored values, and ownership questions.

How to turn Lighthouse findings into a credible engineering roadmap, separating signal from noise and scores from real user impact teams can act on.

useTransition and useDeferredValue to Keep React Interfaces ResponsiveuseTransition and useDeferredValue explained with search, filtering, pending states, and how to keep React interfaces responsive under heavy work.

useMemoProfile React re‑renders before adding useMemo, using DevTools, render reasons, prop identity, state placement, context updates, and list strategies.

Stale closures in React explained through renders, handlers, effects, timers, refs, dependency arrays, why callbacks read old state, and how to fix them.

Debugging hydration mismatches in React and Next.js, including common causes, repeatable fixes, and how to stop server and client renders drifting apart.

Measure GEO with honest evidence from Search Console, analytics, query sets, AI‑assisted journeys, attribution patterns, and outcomes instead of fake scores.

Lessons from running Next.js Pages Router at scale in 2026, including governance, performance discipline, and why older patterns sometimes still make sense.

How to de‑risk a CMS migration before the real move starts, by testing workflows, content assumptions, integrations, ownership, and technical contracts early.

Structure technical AEO content for direct answers without FAQ spam, using extractable passages, visible text, schema discipline, and topic depth.

Build an LRU cache in TypeScript with a hash map and doubly linked list, then compare it with a simpler JavaScript Map implementation and O(1) operations.

How to make content easier for generative engines to trust, with clearer claims, stronger authorship, better sourcing, and structure that reduces ambiguity.

Diagnose Sass colours that survive compilation but break in Next.js production CSS when minification creates invalid mixed‑unit legacy rgb() values.

Mastering Server Components in Next.js, including client boundaries, data fetching, caching, streaming, and the mistakes that make App Router code messy.

Maximum Subarray and Kadane's Algorithm explained with TypeScript, showing how a linear pass tracks current and best sums across positive and negative values.

Converting objects to query strings is essential for handling URLs in JavaScript. Here, I explore encoding, parsing, and managing query parameters in Next.js.

ETag and Last-ModifiedETag and Last-Modified drive conditional HTTP requests and 304 responses. See how precedence, weak validators, CDNs, and cache policy affect revalidation.