Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
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.
-
Next.js after(): Background Work Without a Queue
Next.js after() runs background work once the response is sent: where it is allowed, which request APIs work inside it, and when you need a queue.
-
Astro Content Layer: Writing a Custom Loader
How to write a custom Astro content loader for a headless CMS: the data store, digests for incremental builds, and when live collections win.
-
Speculation Rules API: Prefetch or Prerender?
The Speculation Rules API prefetches or prerenders next pages for instant navigation, and prefetch is the safer default for most sites.
-
Web Components in React 19: What Actually Works
React 19 passes every Custom Elements Everywhere test, so web components in React work without a wrapper, but the property, typing and SSR edges remain.
-
Content Security Policy: Nonces vs Hashes
Nonces need per-request HTML and hashes do not, so your Content Security Policy choice decides whether pages can stay cached.