James Coombs

Tag: #webdev

7,798 Components. Import One, Ship One.

7,798 Components. Import One, Ship One.

T7,798 generated components in one package. The real cost of the barrel file is not bundle size (it tree-shakes fine), it is build-time parse, plus a dual type-resolution trap that runs but will not type-check.

javascripttypescriptwebdevnpm
The CSS Problem Nobody Thinks Is Solvable

The CSS Problem Nobody Thinks Is Solvable

Two design systems on one page usually means a rewrite. A two-tier CSS architecture, scoped plus utilities, lets them coexist without one.

csswebdevfrontendrefactoring
Your Migration Guide Is Already Wrong

Your Migration Guide Is Already Wrong

A migration guide starts rotting the moment it is written. Separate knowledge, procedure, and data, and the guide becomes a product that stays right.

webdevrefactoringdocumentationarchitecture
46KB for Twelve Shapes: When Not to Reach for the Animation Library

46KB for Twelve Shapes: When Not to Reach for the Animation Library

A 46KB animation library for twelve shapes. The build-vs-buy math that said write the tiny requestAnimationFrame engine instead, and when that call is the right one.

javascriptwebperfanimationwebdev
Why Animating an SVG the Obvious Way Breaks It

Why Animating an SVG the Obvious Way Breaks It

The obvious way to morph an SVG shape tears it apart. Why it breaks, and the least-squares transform fit that makes the animation actually work.

javascriptsvganimationwebdev
Scoring, Gating, Ratcheting: The Migration Engine Nobody Builds

Scoring, Gating, Ratcheting: The Migration Engine Nobody Builds

Most migrations are a person reading a guide and hoping. This is the engine that automates it: five-factor confidence scoring, ratcheted state transitions, and gates that never roll backward.

webdevrefactoringarchitectureautomation
© 2026 James Coombs
Astrofy Template ⚡️
Profile image
  • Home
  • Projects
  • Case Studies
  • Blog
  • Resume
  • Contact