Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
TypeScript's using Keyword: Cleanup on Every Exit
The using keyword calls Symbol.dispose when the scope exits, closing connections and file handles even on a throw, and Node 24 supports it natively.
-
Shopify Metaobjects vs Metafields: Which to Use
A metafield adds one custom value to an existing Shopify resource; a metaobject is a standalone record with its own fields and its own URL.
-
WooCommerce to Shopify Redirects: The 301 Map
WooCommerce URLs do not map onto Shopify's fixed paths cleanly, so build the 301 redirect map first and bulk import it through the Admin API.
-
Next.js on Cloudflare Workers: vinext or OpenNext?
Two ways to run Next.js on Cloudflare Workers: the stable OpenNext adapter or the beta Vite-based vinext. What each supports and which to pick.
-
TanStack Start vs Next.js: How to Choose in 2026
Pick TanStack Start for interactive apps that need typed routing and portable deploys; pick Next.js for content-heavy sites built on Server Components.
-
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.