Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
React Compiler: How to Adopt It Incrementally
React Compiler 1.0 is stable, but on an existing app scope it to one directory or a runtime gate first, and fix the lint errors before you compile.
-
Nuxt 5 Upgrade: What to Fix Before It Lands
Nuxt 5 is not released yet, but future.compatibilityVersion: 5 lets you fix most of the breaking changes now, before Nitro 3 lands.
-
Vitest Browser Mode: When to Replace jsdom
Vitest Browser Mode runs component tests in a real Chromium instead of jsdom, and here is what it fixes, what it costs and when jsdom still wins.
-
AsyncLocalStorage: Request Context in Node.js
AsyncLocalStorage gives Node.js request-scoped context without passing an argument through every function: the setup, the pitfalls and the cost.
-
npm Trusted Publishing: OIDC Instead of Tokens
npm trusted publishing swaps stored tokens for short-lived OIDC credentials from CI. The GitHub Actions setup, the traps, and what it leaves open.
-
SvelteKit Remote Functions: Worth the Flag?
SvelteKit remote functions replace load functions and form actions with typed server calls, but they are still behind an experimental flag.
-
Web Push Notifications on iOS: Safari's Rules
Web push works on iOS only for web apps added to the Home Screen, and Safari revokes permission if a push arrives showing nothing.
-
Popover API vs dialog: How to Choose an Overlay
Use dialog with showModal when the page behind must go inert, and the Popover API for menus, tooltips and toasts that never block it.
-
CSS Scroll-Driven Animations: Ship Them Safely
animation-timeline works in Chrome, Edge and Safari but not Firefox stable, so ship scroll-driven CSS animations behind a feature query.
-
Node.js Permission Model: What It Really Blocks
Node's --permission flag blocks the file system, child processes and addons: what the Node.js permission model covers, where it leaks, how to audit it.
-
Drizzle vs Prisma: Which ORM Fits Your Stack
Drizzle vs Prisma, settled on release status and migrations: which version you can install today and which ORM fits your stack.
-
Cloudflare KV vs D1 vs Durable Objects
Workers KV is eventually consistent, D1 is single-threaded SQLite, and a Durable Object gives one writer per key. How to pick the right store.