DHDan Holloraningrimicorn.hashnode.dev·16h ago · 5 min readThe Soft Navigations API: Core Web Vitals Finally Work in SPAsHere's an uncomfortable fact about every SPA you've ever shipped: your Core Web Vitals numbers describe the first page the user landed on, and nothing after that. Someone loads your product listing, c00
DHDan Holloraningrimicorn.hashnode.dev·2d ago · 4 min readDeclarative Shadow DOM: Web Components That Render Before Your JavaScript DoesThe classic knock on web components was never encapsulation. It was the blank rectangle. You shipped a <user-card> to the browser, the parser saw an unknown element with nothing inside it, and the act00
DHDan Holloraningrimicorn.hashnode.dev·4d ago · 5 min readOPFS: A Real File System in the BrowserEvery browser storage API asks you to give something up. localStorage is synchronous but strings-only and capped at a few megabytes. IndexedDB will hold structured data and blobs, but its API is a tra00
DHDan Holloraningrimicorn.hashnode.dev·Jul 10 · 4 min readCSS light-dark(): Stop Duplicating Your Dark Mode ColorsDark mode used to mean writing every color twice. You would define your palette, then duplicate the whole thing inside a @media (prefers-color-scheme: dark) block, flipping each value by hand. Miss on00
DHDan Holloraningrimicorn.hashnode.dev·Jul 8 · 4 min readURLPattern: The Browser Finally Has a Built-In RouterEvery router you have ever used, from Express to React Router, solves the same small problem in its own slightly different way: take a URL, check it against a pattern, and pull out the interesting pie00