Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
Migrate to Shopify Expiring Offline Access Tokens
Public Shopify apps must use expiring offline access tokens from 1 January 2027: how to switch, cycle existing tokens and handle refresh failures.
-
Shopify Checkout UI Extensions: What Runs Where
Where a Shopify checkout UI extension can render, which capabilities it needs, and why blocking checkout now takes a validation function.
-
content-visibility: auto Without the Layout Shift
content-visibility: auto skips rendering for offscreen page sections; here is how to size them so the scrollbar stays put, and when to leave it off.
-
Shopify Bulk Operations: Export Without Throttling
Run a Shopify bulk operation in Admin GraphQL to export every product as JSONL, poll it properly, and import at scale.
-
Shopify Theme Blocks vs Section Blocks: The Rules
Theme blocks live in /blocks, nest, and work across sections; section blocks are local to one section and cannot be mixed with them.
-
Navigation API vs History API: What to Replace
The Navigation API became Baseline in January 2026: here is what it replaces in a History API router, and what still needs a fallback.
-
Shopify Webhook HMAC Verification, Then Dedupe
How to verify a Shopify webhook HMAC against the raw request body, respond inside five seconds, and skip duplicate deliveries.
-
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.