Notes from shipping code
Deep-dives on the problems I've debugged, the patterns I've extracted, and the decisions I'd make differently next time.
Posts

Three Tools I Add to Every Monorepo Now
Knip finds dead code, Renovate updates dependencies with cooldowns, and size-limit tracks bundle cost. Each took under an hour to configure for Nx.

Turning a Prose Style Guide into Zod Build Checks
Character limits, canonical tags, and em dash rules encoded as a Zod discriminated union. The script caught a duplicate cover image on its first run.

Replacing CSS Class Assertions with ARIA in Storybook
CSS classes break when Tailwind configs change. ARIA attributes are the semantic contract. Six rules for interaction tests that survive refactors.

Client-Side Tag Filtering Without Losing SEO URLs
One component renders Link for crawlable tag pages or button for instant client filtering. The same TagChipStrip serves both without duplicating code.

Killing Split-Brain Content with One Metadata Export
How moving cover images, titles, and excerpts into MDX metadata eliminated 680 lines of duplicate records and the silent drift between them.

Sentry Should Be Optional in Your Next.js App
A single boolean guard across three runtimes keeps Sentry from crashing local dev when the DSN is missing.

Mobile Visual Regression Without Doubling Your Test Count
A typed page config array turns 9 copy-pasted Playwright tests into a loop that runs at two viewports with zero duplication.

Correlating a Multi-Step Funnel with One sessionStorage ID
A timestamp and random suffix in sessionStorage ties scan, completion, email capture, and calendar booking into one GA4 funnel with zero backend state.

Upgrading cmdk Search with MiniSearch Field Boosting
cmdk does substring matching. Keeping its UI shell and swapping the filter engine for MiniSearch gives ranked, fuzzy results with match highlighting.

Cycling Theme Toggle: From Radio Group to Single Button
Replacing a three-button theme picker with a single cycling button and a keyboard shortcut reclaims nav space without losing discoverability.

Systematic prefers-reduced-motion Across a Component Library
Auditing every animated component for motion sensitivity reveals which animations are decorative and which need static alternatives.

Site Search Without a Server: Static Index and cmdk
A build-time search index and cmdk power Cmd+K search across 47 pages with zero API calls.