Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
Shopify Product Recommendations API: Theme and Headless
Fetch related or complementary products with the Shopify product recommendations API, in Hydrogen or a theme, and fix empty results after a migration.
-
fetchpriority=high: Load Your LCP Image First
Add fetchpriority="high" to the LCP image, drop loading="lazy", and preload only when the browser finds the hero late, then confirm it in DevTools.
-
Migrate Gift Cards to Shopify Without Losing Balances
To migrate gift cards to Shopify, recreate each live card with giftCardCreate using its old code and remaining balance, then reconcile at cutover.
-
Shopify Oxygen Environment Variables: Set, Pull, Deploy
Shopify Oxygen environment variables are set per environment, read from context.env in Hydrogen loaders, and only change after a redeploy.
-
Node.js --env-file: Load .env Without dotenv
Load a .env file in Node without dotenv using --env-file or process.loadEnvFile, plus the precedence and syntax rules that break migrations.
-
Shopify App Proxy: Verify the Signature, Serve Liquid
A Shopify app proxy serves your app from the store domain; verify its HMAC signature, trust only the signed customer ID and return Liquid.
-
Shopify GraphQL Rate Limits: Budget by Query Cost
Shopify GraphQL rate limits charge points per query, not per request. Read throttleStatus, wait for the restore rate and retry THROTTLED safely.
-
Uint8Array toBase64: Retire btoa and Buffer Hacks
Uint8Array toBase64 and fromBase64 encode bytes natively in browsers and Node 26, with base64url, hex and strict decoding built in.
-
Shopify Delivery Customization: Hide and Rename Rates
How a Shopify delivery customization function hides, renames and reorders checkout shipping rates, with working code and the limits that catch builds out.
-
Shopify Theme Check in CI: Fail on What Matters
Run shopify theme check in CI with the right fail level, the asset size checks the recommended preset leaves off, and a baseline for older themes.
-
Next.js Middleware to Proxy: What the Rename Changes
Next.js 16 renames middleware.ts to proxy.ts and pins it to Node.js, so here is the codemod, the renamed flags and when to keep middleware.
-
Shopify Draft Order API: Quote to Paid Order
Shopify's draft order API turns a quote into a paid order in four mutations: create, calculate, invoice, complete, without losing stock.