Blog
Practical notes on JavaScript tooling, module systems and the platform decisions behind the work we do
-
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.
-
Shopify Web Pixels: App Pixel or Custom Pixel?
App pixels run in a strict web-worker sandbox and read settings from the Admin API, while custom pixels run in a lax iframe: how to choose.
-
Shopify Theme App Extensions: App Blocks or Embeds
Script tags stop running on 1 March 2027, so here is how a Shopify theme app extension works: app blocks, app embeds, limits and deep links.
-
Import Maps vs a Bundler: When to Skip the Build
Import maps resolve bare specifiers in the browser with no build step, but they never replace a bundler's tree-shaking, chunking or minification.
-
Shopify Cart Transform Functions: Bundles at Checkout
A Shopify cart transform function rewrites cart lines at checkout with three operations: expand a bundle, merge lines, or update price and title.
-
Shopify Storefront API @inContext: Local Prices
The Storefront API's @inContext directive sets country and language per query, but carts ignore the country argument and take buyerIdentity instead.
-
CSS @scope Is Baseline: Scope Styles Without a Build
CSS @scope became Baseline in March 2026: how the scope root, donut limits and scope proximity behave, and what still breaks in Safari.
-
Migrate Customers to Shopify Without Losing Consent
To migrate customers to Shopify, upsert each record with customerSet, then write marketing consent and its original date in a separate mutation.
-
Shopify Hydrogen Caching: Sub-Requests and Full Pages
Shopify Hydrogen caching works in two layers: CacheShort or CacheLong on each sub-request, and Oxygen-Cache-Control for whole pages.
-
command and commandfor: Open a Dialog, No JS
The command and commandfor attributes open a dialog or popover from a button with no JavaScript, and they went Baseline in December 2025.