Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
OpenTelemetry Node.js Setup That Actually Traces
A working OpenTelemetry Node.js setup needs four packages, two startup flags and a sampling decision, and ESM apps need one flag more.
-
Standard Schema: TypeScript Validation Without Adapters
Standard Schema lets a TypeScript tool accept Zod, Valibot or ArkType through one property, and here is what quietly breaks when you swap.
-
Server-Sent Events vs WebSockets: How to Choose
SSE gives you automatic reconnection and event replay over plain HTTP, while WebSockets buy a client-to-server channel most streaming features never use.
-
node:sqlite vs better-sqlite3: When to Switch
node:sqlite matches better-sqlite3 for everyday queries and drops the native build step, but it is still a release candidate with no transaction helper.
-
Passkeys in Node.js Without Locking Users Out
How to add passkeys to a Node.js app with @simplewebauthn, from registration and conditional-UI login to the credential lifecycle that prevents lockouts.
-
Astro Server Islands: Cache the Page, Not the User
Astro server islands defer one component with server:defer so the rest of the page stays static and CDN-cacheable, plus the traps to avoid.
-
CSS Anchor Positioning: Replace Floating UI
CSS anchor positioning now ships in Chrome, Firefox and Safari, so dropdowns and tooltips can follow their trigger without Floating UI.
-
TypeScript 7 Migration: Fix Your tsconfig First
TypeScript 7 removes a dozen deprecated compiler options, flips eight tsconfig defaults and ships no API, so here is the upgrade order.
-
Vite 8 Rolldown Migration: What Actually Breaks
Vite 8 replaces esbuild and Rollup with Rolldown; the migration breaks build.rollupOptions, manualChunks, decorators and the esbuild minifier.
-
Node's Built-In Test Runner: Ready to Replace Jest?
Node's built-in test runner handles suites, mocking, snapshots and coverage with no dependencies, though watch mode and module mocking are experimental.
-
Hydrogen vs Next.js for a Shopify Storefront
Hydrogen hands you Shopify's cart, caching and customer accounts on Oxygen; Next.js hands you a runtime choice and the rest of the work.
-
How to Fix INP: Diagnose It Before You Optimise
How to fix INP: use web-vitals attribution and the Long Animation Frames API to name the slow script, then fix the phase that dominates.