Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
Container Queries vs Media Queries: When to Use Which
Media queries belong to page layout and container queries to components; here is how to pick container-type, use cqi units and ship style queries safely.
-
Astro 7 Upgrade: Two Hops From 5, One From 6
Upgrading to Astro 7 from 5 means going via 6: content collections and Cloudflare break in 6, then the Rust compiler and Sätteri Markdown change in 7.
-
Shopify Storefront API Cart: Create, Mutate, Checkout
How to build a basket on the Shopify Storefront API cart: cartCreate, cartLinesAdd, buyer identity, checkoutUrl and which access token to use.
-
Astro Actions: Form Validation That Survives JS
Astro Actions form validation gives HTML forms typed server checks, field errors and zero-JavaScript submission without a hand-written API route.
-
Node.js Fetch Timeout: Cancel the Whole Request
Set a Node.js fetch timeout with AbortSignal, preserve caller cancellation, and keep the deadline active while reading the response body.
-
Serverless Postgres Connection Pooling: Pick One
Transaction-mode pooling, RDS Proxy or Hyperdrive: how to stop serverless Postgres running out of connections, and what each choice breaks.
-
stale-while-revalidate: Cache-Control for CDNs
How stale-while-revalidate actually behaves in Cache-Control, why s-maxage can silently disable it, and what CDN-Cache-Control fixes.
-
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.