Blog
Notes on React, Next.js, and building for the web.
1 min read
Small Accessibility Wins That Compound
You don't need an audit to start. Semantic headings, honest focus states, and reduced-motion guards — small habits that quietly make every page better.
1 min read
Caching in Next.js: A Practical Mental Model
Build-time prerendering, ISR revalidation, and request-time rendering — how I decide which pages get which strategy, with the tradeoffs spelled out.
1 min read
Migrating to Tailwind CSS v4: What Actually Changes
No more tailwind.config.ts, a CSS-first theme, and a handful of renamed utilities. Notes from migrating a production Next.js site to Tailwind v4.
2 min read
Understanding React Server Components Without the Hype
RSC is not about killing client-side React — it's about choosing where each component pays its cost. A mental model that finally made it click for me.
1 min read
TypeScript Narrowing Patterns I Use Every Day
Discriminated unions, exhaustive switches, and type predicates — three small patterns that remove almost every 'as' cast from a codebase.