Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
Shopify Hydrogen Redirects: storefrontRedirect on 404
Hydrogen serves the URL redirects merchants create in Shopify admin by calling storefrontRedirect on every 404: here are its matching rules and limits.
-
Cloudflare Queues Retries: Ack, Delay and Dead Letters
A Cloudflare Queues retry redelivers the whole batch unless you ack per message: how ack, retry delays, max_retries and dead letter queues fit together.
-
Shopify Storefront API Metafields: Why They Return Null
Storefront API metafields return null until the definition grants PUBLIC_READ; here is the access fix, the identifiers query and how to resolve references.
-
Shopify Webhook Retries, Duplicates and Idempotency
Shopify gives a webhook endpoint five seconds, retries failures and sends duplicates, so acknowledge fast, dedupe on the webhook id and reconcile.
-
Speculation Rules: Prerender the Next Page in Chrome
Add a speculation rules script to prerender the next page in Chrome, pick the right eagerness, and keep analytics and carts safe while the page is hidden.
-
Deploy a Shopify Theme With GitHub Actions, Safely
Deploy a Shopify theme from GitHub Actions with a Theme Access password and shopify theme push, without overwriting edits the merchant made in the editor.
-
How to Test Shopify Functions Locally, Then in CI
Test Shopify Functions locally in three layers: Vitest unit tests, Wasm fixture tests with Shopify's test helpers, and replay of real checkout runs.
-
JavaScript Set Methods: union, intersection, difference
JavaScript Set methods like union, intersection and difference ship in ES2025 and Node 22; here is what they accept, return and need from tsconfig.
-
Shopify Translations API: Register and Keep in Sync
The Shopify translations API ties each translation to a digest of the source text: register by locale or market, then re-sync outdated keys.
-
Polaris React to Web Components: Migrate in Slices
Move an embedded Shopify app from Polaris React to web components route by route: React 19 first, then the page shell, forms, save bar and tests.
-
Playwright Sharding in GitHub Actions: One Report
Split Playwright tests across GitHub Actions jobs with --shard, balance them with fullyParallel, and merge the blob reports into one HTML report.
-
Shopify Lighthouse Score: What Actually Moves It
A Shopify Lighthouse score moves on four things: the LCP image, blocking JavaScript, what loads before content_for_header, and layout shift.