Blog
Field notes on building for the platform — architecture, CSS, the Web APIs that quietly replace libraries, and the occasional opinion we're willing to defend.
6 posts
CSS custom properties are a design system
You already have one. It's in your :root block. The question is whether anyone on the team can find it, extend it, or trust it.
Read → Opinion · 6 minWhy we stopped reaching for React first
Not because React is bad — because reaching for it by default was making us worse at the platform we were already standing on.
Read → Shadow DOM · 10 minShadow DOM in production: lessons learned
Three years of shipping web components at scale. What broke, what held, and what we'd do differently.
Read → CSS · 7 minThe View Transitions API changed how we ship
Page transitions used to mean a framework, a router plugin, and a sprint of edge-case QA. Now they mean a callback and a stylesheet.
Read → Architecture · 9 minYou probably don't need a state library
Most UI state is local, ephemeral, or already owned by the URL. We stopped reaching for global stores and the apps got simpler.
Read → Performance · 11 minMeasuring what frameworks actually cost
Bundle size is the headline. Hydration time, memory churn, and the cost of every engineer learning the framework's dialect are the bill.
Read →