Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
FREEDOM251

Freedom251 › Blog › API migration

Shopify Checkout Extension Performance: Bundle Limits, Compatibility, and Migration FAQs

By Freedom251 Team · · 9 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Short answer: A fast Shopify checkout UI extension renders useful content quickly, reaches buyer interactivity soon after, and stays within Shopify’s compressed bundle limit. For extensions using API version 2025-10 or later, that limit is 64 KB per extension at deployment. Performance also depends on network calls, initialization work, rendering logic, target placement, and the buyer’s device. Teams maintaining older extensions should check their API version now: Shopify’s October 1, 2026 deployability deadline for existing UI extensions using API version 2026-01 or later has passed.

What Shopify checkout extension performance actually measures

A checkout UI extension runs separately from Shopify’s checkout page. The useful question is not simply “How many kilobytes is it?” but “How soon can the buyer see and use it?” Shopify’s merchant audit guidance separates two milestones:

As an Amazon Associate I earn from qualifying purchases.

  • extension_visible: the extension’s content appears on screen.
  • extension_buyer_usable: the extension can accept buyer input.

An extension may become visible quickly but remain unusable while validation, data loading, or event setup completes. Conversely, a relatively larger bundle can feel responsive if it renders immediately and does little work before first paint. Shopify therefore recommends ranking installed extensions by visible time, then examining the gap to buyer usability, rather than sorting by bundle size alone.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Checkout performance is also target-specific. An extension placed at one checkout location can have different available components and constraints from one placed elsewhere. Extensions cannot access the checkout page’s real DOM or render arbitrary HTML; they must use Shopify’s supplied components and APIs. Information, shipping, and payment-step extensions are available only to stores on Shopify Plus. See Shopify’s Checkout UI extensions API reference and web components documentation for the current target and capability rules.

What is the Shopify checkout UI extension bundle-size limit?

For UI extensions using API version 2025-10 or later, Shopify documents a 64 KB compressed JavaScript bundle limit per extension. Shopify enforces that limit when you deploy, so a bundle that works in local development can still be rejected during deployment. The rule applies to each extension, not to an entire app’s combined JavaScript.

Extension type or version Documented compressed allowance How it applies
UI extensions using API version 2025-10 or later 64 KB per extension Checkout extensions must fit this limit; Shopify checks it at deployment.
Full-page customer account extensions 128 KB This larger allowance is for full-page customer account extensions, not checkout extensions.

The 128 KB figure is a common source of confusion. Do not use it as a checkout allowance. Shopify’s bundle optimization documentation explains the separate limits and measurement workflow.

How to measure a bundle before changing code

Generate Shopify’s esbuild metafile

Shopify CLI version 3.92.0 or higher emits an esbuild metafile for each extension when you build. The file is written in that extension’s dist/ directory and shows which modules contribute to the output.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Check the installed CLI version and update it if it is older than 3.92.0.
  2. Run shopify app build from the app project directory.
  3. Open each extension’s dist/ folder and inspect the generated esbuild metafile.
  4. Record the compressed bundle size and identify the largest dependencies before removing or replacing anything.

Measure first so that an optimization addresses an actual contributor. The metafile can reveal duplicate packages, a library imported for a small feature, or translations and data that should be loaded through a native mechanism.

Split independently enabled capabilities

If merchants can enable features independently, keep those capabilities in separate extensions or separate targets where Shopify’s model permits it. Avoid putting code for targets that never render together into one bundle. Splitting reduces the amount parsed and transferred for a particular checkout surface, while also making it easier to identify which feature owns a performance problem.

What usually makes a checkout extension feel slow?

External requests before first render

Shopify states: “Every network call your extension makes at load time adds latency before the buyer sees your UI.” Remove requests that are not required to display the initial state. Use checkout APIs for checkout context. Store app-owned data in metafields or metaobjects when that avoids a round trip to your app server. Shopify recommends the Storefront API only as a last resort for catalog data that checkout APIs do not expose. The detailed recommendations are in Shopify’s checkout UI extension performance guide.

Expensive module-scope work

Code executed at module scope runs before the extension’s render callback. Large synchronous parsing operations, validation setup, data transformation, or eager library initialization can postpone the first visible output even when the final UI is small. Defer work until it is needed, and initialize only the capability required by the current target.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Over-broad reactive subscriptions

With Preact Signals, read a signal in the smallest, most specific component that needs to update. Read values that do not affect the UI inside an effect or event handler instead of during a parent render. This limits unnecessary parent rerenders and keeps updates close to the control that uses them.

Too much work after the buyer acts

When an extension changes checkout data, apply the change only after buyer intent is clear, and only when the new value differs from the current value. Batch related changes where possible. Shopify warns that excessive changes may be rate-limited. For text or other rapidly changing input, debounce the API call rather than sending one request per keystroke. See Applying changes for the constraints and patterns.

How to audit which installed extension slows checkout

A merchant audit should use a real checkout, not the checkout editor. The editor includes extra tooling that can distort timings. Shopify’s documented workflow is:

  1. Open a Chrome incognito window and navigate through a real checkout.
  2. Disable the browser cache in DevTools while the Network panel is open.
  3. Throttle the connection to Slow 4G.
  4. Filter Network requests to extension assets so downloads and transfer sizes can be attributed.
  5. Record a Performance trace while the checkout loads and the extension becomes usable.
  6. Repeat under mobile emulation and on a real phone. CPU speed can change which extension ranks as the bottleneck.

Keep the checkout step, cart, browser settings, and throttling consistent when comparing extensions. Record visible time, buyer-usable time, downloaded and decoded bundle size, target placement, network dependencies, and device/network conditions. A small extension waiting on an app-server request can appear later than a larger extension that renders from local data.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Interpret the two timing milestones

  • A late extension_visible event means the extension delays its own appearance. It can become a candidate for the checkout’s largest contentful paint element.
  • A long interval between extension_visible and extension_buyer_usable indicates an interactivity problem after rendering, such as delayed event wiring, validation, or a required request.

Actions a merchant can take

  • Remove extensions that have no active surface assignments.
  • Consolidate overlapping functions so several extensions do not perform the same work.
  • Share the timing trace and asset data with the extension developer when one extension is consistently the bottleneck.

The merchant can establish a baseline and identify the slow surface, but the extension developer controls the bundle and render logic.

Which API version should a checkout extension use?

Version compatibility has several parts: the extension’s API version, its component implementation, its target, the APIs available at that version, and the merchant’s Shopify plan.

Deployability requirement for existing extensions

Shopify’s September 17, 2026 changelog says existing UI extensions must use API version 2026-01 or later to remain deployable after October 1, 2026. That date has passed. If an existing project still targets an older version, verify its current deployment status and upgrade before making further releases. Shopify documents an exception request for unavoidable bundle weight after optimization; it is not a substitute for updating an unsupported API version. See Shopify’s bundle-size exception notice.

React support ended with API version 2025-07

Shopify’s versioned checkout documentation identifies 2025-07 as the last API version supporting React-based UI components. Later versions use Polaris web components. The API-version page is available at Checkout UI extensions, API version 2025-07.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Plan restrictions still apply

Changing API versions does not change plan eligibility. Checkout extensions for information, shipping, and payment steps require Shopify Plus, and every target remains subject to the components and APIs Shopify exposes for that location.

How to migrate a React checkout UI extension

Shopify’s migration announcement describes a move from React or JavaScript extension APIs to Preact, Polaris web components, and the global shopify object. It also calls out changes to checkout metafields. Use Shopify’s Polaris web components migration guides (May 13, 2026) together with the guide for your starting API version.

  1. Inventory the current extension. Record its API version, targets, React components, direct JavaScript extension APIs, checkout metafield usage, external requests, and merchant plan assumptions.
  2. Choose the destination version. Confirm that the target version is deployable under Shopify’s current rules; for existing UI extensions, that means checking the 2026-01-or-later requirement.
  3. Map components one by one. Replace React-based UI components with the corresponding Polaris web components supported by the destination target. Do not assume that a component available at one checkout location is available at another.
  4. Move state and API access. Adopt Preact patterns and the global shopify object where the migration guide specifies them. Revisit subscriptions so reactive reads occur in the smallest component that needs them.
  5. Rework checkout metafields. Compare the old metafield access pattern with the destination version’s documented model and update reads, writes, and permissions accordingly.
  6. Rebuild and inspect every extension. Run shopify app build, inspect the esbuild metafile in each dist/ directory, and remove avoidable weight before deployment.
  7. Test real checkout behavior. Verify visibility, buyer usability, input handling, checkout changes, error states, and target-specific restrictions on a real checkout rather than only in the editor.
  8. Repeat the performance audit. Use the incognito, disabled-cache, Slow 4G workflow, then repeat on mobile emulation and a real phone to check both timing milestones.

Shopify’s documentation establishes the migration direction, but no generic schedule or guarantee applies to every codebase. The amount of work depends on the number of components, targets, metafields, and dependencies that require changes.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What to do when the bundle is still over 64 KB

Remove avoidable weight first

  • Use the esbuild metafile to find the largest modules.
  • Remove duplicate dependencies and replace libraries used for a small amount of functionality.
  • Do not bundle translations when Shopify’s native localization APIs can provide them.
  • Split capabilities that merchants enable independently.
  • Eliminate code for targets that never render together.
  • Defer noncritical initialization and requests until after the initial UI is usable.

Shopify’s September 2026 exception notice specifically lists heavy libraries, duplicate dependencies, and bundled translations as examples of avoidable weight that can lead to a request being denied.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Request an exception only for unavoidable weight

After optimization, prepare the minified bundle and its esbuild metafile for Shopify’s exception process. Shopify may grant an increase when the remaining weight is genuinely unavoidable, but the published guidance does not promise approval or specify a universal increase. Keep the extension’s API version compliant even while an exception is reviewed.

Performance checklist for developers and merchants

Area Check Expected decision
Bundle Compressed JavaScript for each extension At or below 64 KB for API version 2025-10 and later, unless Shopify grants an exception.
Build Shopify CLI and esbuild metafile Use CLI 3.92.0 or higher and inspect each extension’s dist/ output.
Startup Network calls and module-scope work Remove nonessential load-time requests and defer expensive initialization.
Rendering extension_visible Prioritize extensions that delay visible content.
Interaction extension_buyer_usable Investigate a long post-visibility gap.
Updates Checkout changes from input Debounce, batch, and apply only changed values after clear intent.
Compatibility API version and component model Plan the React-to-Preact and Polaris web components migration; verify 2026-01 or later for existing deployable extensions.
Merchant setup Target and plan Confirm the target supports the required components and that Plus is available where required.

Common mistakes and their fixes

Using the 128 KB account limit for checkout

Why it fails: The 128 KB allowance is for full-page customer account extensions. Fix: budget against 64 KB compressed per checkout UI extension for API version 2025-10 and later.

Optimizing by file size alone

Why it fails: A network request or CPU-heavy initialization can delay a small bundle. Fix: compare visible and buyer-usable timings under identical conditions.

Testing only in the checkout editor

Why it fails: Editor tooling changes the environment. Fix: use a real checkout with the documented incognito, cache, throttling, and Performance-recording workflow.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Updating code without checking the API version

Why it fails: an older extension may no longer satisfy deployment rules, and React components stop at 2025-07. Fix: inventory the version first, then follow the matching migration guide and test each target.

Calling an API on every keystroke

Why it fails: frequent changes can be rate-limited and create unnecessary work. Fix: debounce input, batch related updates, and skip calls when the value has not changed.

Official documentation to keep with the project

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

API migrationbundle sizeCheckout UI extensionsPolarisPreactShopifyweb performance

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.