Blog
-
Shopify Admin API Search Syntax: Why Filters Fail
Shopify Admin API search query syntax explained: fields, comparators, quoting, and the silent mistakes that return every product instead of an error.
-
Shopify Migration SEO Checklist: Test Every 301
A Shopify migration SEO checklist for cutover day: test that every old URL answers with one 301 to a live page, then check canonicals and the sitemap.
-
node --run vs npm run: Faster, but Check Exit Codes
node --run starts package.json scripts about 60 ms faster than npm run, but skips pre and post hooks and reports a signal-killed script as success.
-
Shopify Thank You Page Survey: Save Answers to Orders
A Shopify thank you page survey cannot write to the order, which may not exist yet, so post the answer to your app and set an order metafield later.
-
Shopify Storefront API Sort Products: sortKey Traps
To sort products with the Shopify Storefront API, pass sortKey and reverse, but collections and the products query take different sort key enums.
-
Node.js Zstd Compression: The 8 MB Window Rule
Node.js zstd compression works in node:zlib, but levels 20 to 22 exceed the 8 MB window that Chrome and Firefox will decode.
-
Shopify app/uninstalled Webhook: Fix the Silent 500
Why the Shopify app/uninstalled webhook returns 500 for idle shops on expiring offline tokens, and a session-free handler that cleans up every time.
-
Shopify Country Selector in Liquid, No JavaScript Needed
Build a Shopify country selector in Liquid with the localization form, country_code and language_code, plus the URL and accessibility traps after it.
-
Fetch Upload Progress: Use XHR, and Distrust 100%
Fetch has no upload progress event, so use XMLHttpRequest or confirmed chunks; a request stream counts bytes read and breaks outside Chromium.
-
Publish a Shopify Product to a Sales Channel via API
Publish a Shopify product to a sales channel via API with publishablePublish: find the publication ID, hold the scopes, then read the state back.
-
Shopify Function Instruction Limit: Measure and Cut It
Shopify Functions get 11 million instructions up to 200 cart lines, so measure with the CLI, trim input and loops, and test Rust before porting.
-
Fetch keepalive vs sendBeacon: Limits, CORS and Failures
Fetch keepalive vs sendBeacon: use sendBeacon for fire-and-forget telemetry, keepalive for headers or a response, and mind their shared 64 KiB limit.