Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
Shopify productSet Mutation: Upsert by Custom ID
Shopify's productSet mutation writes a product's whole state in one call, so know what it deletes, how to upsert by custom ID, and which statuses to poll.
-
Shopify changeFromQuantity: Update Stock Safely
Shopify removed compareQuantity in API version 2026-04, so here is how to pass changeFromQuantity and an idempotency key when syncing stock.
-
Style a Real Select With appearance: base-select
appearance: base-select styles a native select in Chrome 135 and Safari 27, and falls back to the platform control everywhere else.
-
Shopify Section Rendering API: Let Liquid Render It
Shopify's Section Rendering API returns rendered theme section HTML from any storefront URL, up to five sections a request, and cart calls can bundle it.
-
Shopify Cart Validation Functions: Block Checkout
A Shopify cart validation function blocks checkout server-side: the run target, error targets, buyer journey gating and the limits that bite.
-
URLPattern: Routing Without path-to-regexp
URLPattern has been Baseline since September 2025, so you can do routing with named groups in the browser, Node and Workers without a library.
-
Shopify Fulfillment Order API: Fulfil or Request
Your app's access scopes decide whether the Shopify Fulfillment Order API lets you create a fulfillment or only request one from a 3PL.
-
Shopify Selling Plans API: Your App Owns Billing
The Shopify selling plans API defines the subscription offer, but your app has to trigger every recurring charge after the first order.
-
Transition display: none Without Breaking Firefox
A CSS transition on display: none needs allow-discrete and @starting-style, and Firefox still refuses to animate the exit.
-
Shopify Customer Account API: Log Customers In
How Shopify Customer Account API authentication works: discovery endpoints, the OAuth code flow with PKCE, and refresh tokens.
-
Import Historical Orders Into Shopify With orderCreate
To import historical orders into Shopify you need the Admin API's orderCreate mutation, because the admin's CSV importer only exports orders.
-
CSS Carousels Without JavaScript: What Ships Today
Chrome and Edge 135 build carousels with no JavaScript using ::scroll-button() and ::scroll-marker, but Safari and Firefox support neither.