Shopify Functions vs Scripts: What Replaced Script Editor
Shopify Scripts stopped running June 30, 2026. Compare Functions vs Scripts, map each Script type to the right Function API, and decide when a public app beats a custom Function build.
Shopify Scripts were deprecated June 30, 2026 and no longer execute. Shopify Functions (WebAssembly modules shipped in apps) run during the buyer journey for discounts, delivery customization, payment customization, cart transforms, and validations. Use the Scripts customizations report to inventory what existed. Public App Store apps with Functions work on paid plans; custom Function apps require Plus. Flow cannot replace checkout-time price logic.
What Happened to Shopify Scripts in Admin?
Shopify Scripts were deprecated on June 30, 2026. They no longer execute at checkout. Script Editor is retired as a live customization surface. What remains in admin is the Scripts customizations report—a historical inventory of what your store ran before deprecation, with links to migration guidance.
Merchant-safe first step: open the Scripts customizations report in Shopify admin and export or screenshot what it lists. Developer step: classify each row by behavior type—discount, shipping, payment, line-item transform—and note whether native Shopify discounts could replace it without a Function.
How Do Shopify Functions Compare to Scripts?
Shopify Functions are not a new Script Editor with a different syntax. They are WebAssembly modules invoked by Shopify during the buyer journey, deployed through apps with versioning, permissions, and Partner Dashboard workflows.
Scripts stopped executing after June 30, 2026. Functions ship inside apps as WebAssembly modules and run during the buyer journey.
Dimension
Shopify Scripts (deprecated)
Shopify Functions
Runtime
Ruby in Script Editor
WebAssembly in apps
Admin surface
Script Editor textarea
App install + configuration
Execution
Checkout (Plus)
Cart and checkout during buyer journey
External API calls
Limited patterns
Not at runtime—pre-compute data
Status after June 2026
No longer executes
Current path for checkout logic
Plan gate
Plus only
Public app Functions: paid plans; custom apps: Plus
Custom App, Public App, or Native Discounts?
The migration decision is not 'rewrite every Script in Rust.' It is a portfolio choice: native Shopify discounts, a public App Store app with Functions, or a custom Function app you maintain.
Path
Best when
Tradeoffs
Native Shopify discounts
Simple percentage/fixed/buy-X-get-Y rules
No custom logic; limited compared to legacy Scripts
Public App Store Function app
Commodity rules (tiered discounts, shipping filters) with merchant UI
Prefer native discounts when they cover the rule. Prefer public apps for commodity logic with a maintained admin UI. Reserve custom Function apps for rules that are genuinely proprietary and justify development cost.
Which Function APIs Are Plus-Only?
Plan gating is nuanced. Public apps can expose Functions on lower plans, but individual APIs retain Plus-only capabilities—payment customization with net terms is a common example. Confirm each API's current plan requirements on shopify.dev before you publish a capability table.
How Do You Map Script Types to Function APIs?
Scripts often mixed discount, shipping, and line-item logic in one file. Functions split these into separate APIs that run at specific points in the buyer journey. Conflating them causes double discounts or shipping rules that never fire.
Use the Scripts customizations report as your inventory—then map each rule to the Function API that runs at the same point in checkout.
Line item or cart structure changes → Cart Transform API.
Price changes and discount stacking → Discount Function API (unified path on latest API versions).
Shipping rate filtering or renaming → Delivery Customization API.
Payment method filtering or reordering → Payment Customization API.
Cart and checkout validation rules → Cart and Checkout Validation API.
When external data drives eligibility—ERP inventory, contract pricing, loyalty tiers—pre-compute into metafields or cart attributes before checkout. See the metafields guide for durable data modeling that Functions can read without runtime API calls.
What Migration Sequence Avoids Scope Creep?
A disciplined migration beats a one-to-one Script rewrite project that recreates rules you stopped needing years ago.
Run the Scripts customizations report and tag each rule: keep, replace with native discount, or rebuild as Function.
Delete obsolete rules from the report context—do not rebuild legacy promotions you no longer run.
Confirm checkout extensibility upgrade is complete—Function APIs require it.
Choose public app vs custom build per rule based on the portfolio table above.
Deploy, test on real checkout, and document app ownership for future audits.
Why Does Checkout Extensibility Come First?
Shopify ties Function API access to completing the checkout extensibility upgrade. If your store still has unmigrated checkout surfaces, resolve that before commissioning Function development. The checkout extensibility guide covers plan gates, pixel migration, and upgrade QA—this article stays on the logic layer.
What Are Common Scripts-to-Functions Mistakes?
Rebuilding every Script 1:1 instead of deleting obsolete rules first.
Using Shopify Flow for checkout discount logic—it runs async in admin, not during checkout.
Building custom Functions in admin-created custom apps when Partner Dashboard + App Bridge is required for custom Function apps.
Assuming Functions can fetch live ERP pricing at checkout without pre-computed metafields.
Ignoring checkout extensibility upgrade status before Function development starts.
When Should You Hire a Developer for Scripts Migration?
Engage a Shopify developer when the Scripts report shows proprietary rules native discounts and public apps cannot cover, when payment or delivery customization APIs are required, or when external data must be modeled into metafields for Function consumption. Simple tiered discounts through a reputable public app often need no custom build.
Zqdo's Perspective
Plus checkout logic projects are app portfolio decisions, not textarea swaps. When Zqdo reviews a Scripts migration, the sequence is report inventory, scope reduction, native discount check, then app vs custom Function—always after confirming checkout extensibility status. Flow belongs in a separate conversation about async ops automation, not as a Scripts replacement.
Key Takeaways
✓Shopify Scripts stopped executing after June 30, 2026—the admin report is now a historical inventory, not live logic.
✓Functions ship inside apps as WebAssembly modules, not as Ruby in Script Editor.
✓Public App Store apps with Functions work on paid plans; custom Function apps require Plus.
✓The Scripts report is the authoritative inventory; code search alone misses Script Editor rules.
✓Functions cannot call external APIs at checkout—pre-compute data into metafields or use a hosted backend.
Frequently Asked Questions
What replaced Shopify Scripts?+
Shopify Functions replaced Scripts for synchronous checkout and cart logic. Functions are WebAssembly modules deployed through apps. Discount, delivery customization, payment customization, cart transform, and validation APIs each cover different Script types that used to live in Script Editor.
When were Shopify Scripts deprecated?+
Shopify Scripts were deprecated on June 30, 2026 and no longer execute. Plus merchants should use the Scripts customizations report in admin to see what was active before deprecation and plan recreations via Functions or native Shopify discounts.
Are Shopify Functions Plus-only?+
Not entirely. Public App Store apps that contain Functions can run on all paid plans. Custom Function apps—apps you build and deploy yourself—require Shopify Plus. Individual Function APIs also have Plus-only features; confirm current API availability before publishing a capability table.
Can Shopify Flow replace Scripts?+
No. Flow runs after store events in admin—it cannot change checkout prices or cart totals during the buyer journey. Checkout-time discount, shipping, and payment logic belongs in Functions or native Shopify discount tools.
Should I rebuild every Script 1:1?+
No. Use the Scripts customizations report to inventory rules, delete obsolete ones, and check whether native Shopify discounts cover the behavior before commissioning a custom Function. Many Script portfolios include rules that no longer match current merchandising.
Why can't a Function call an external API at checkout?+
Functions run in a deterministic WebAssembly sandbox during checkout. They cannot make outbound network calls at runtime. External pricing or eligibility data must be pre-computed into metafields, cart attributes, or a hosted app backend that syncs before checkout.
Continue Learning
Related guides, real Zqdo project examples, and the category hub for deeper exploration.
David Frempong is the founder and digital consultant at Zqdo. He is a hands-on web developer and Shopify developer who helps ecommerce brands and local businesses improve their websites, integrations, SEO, AEO, analytics, and conversion performance.