Shopify

Shopify Functions now that Scripts have gone

Scripts stopped running on 30 June 2026. Functions are the replacement, but they aren't a direct translation: they run under strict limits and answer a narrower question, so review what the business needs, not what the old Ruby did.

By itmarkerz Technologies. Updated 30 October 2026.

What happened

According to Shopify’s changelog, editing and publishing new Scripts ended on 15 April 2026, and all Scripts ceased to execute on 30 June 2026. Shopify names Functions and public apps as the replacements, and its Scripts customisations report points to options for those that were active.

What replaces what

The usual mapping is below. Function APIs are listed in Shopify’s Functions reference, which is the place to check details for your case. Not every old script will have an exact equivalent, so test the behaviour rather than assuming it.

Old Shopify Script types and the Function APIs that usually replace them
What the Script didFunction API to look atExample
Line-item discountsDiscountBuy three, cheapest free; tiered wholesale prices
Changing cart linesCart transformBundles shown as a single line, or expanded
Hiding or renaming shipping ratesDelivery customizationNo express for oversized items
Hiding or reordering payment methodsPayment customizationNo cash on delivery above a set order value
Blocking an orderCart and checkout validationMinimum quantity for trade customers

Functions also cover things Scripts weren’t used for: fulfilment constraints, order routing for choosing locations, and pickup option generators.

The constraints that shape your design

Shopify Functions limits, checked 30 October 2026
ConstraintFigure
Instructions per run, carts up to 200 lines11 million; scales up for larger carts
Compiled binary size256 kB
Runtime linear memory10,000 kB
Randomness and clock functionsNot available
Printing to STDOUT or STDERR for debuggingNot available
Calling an outside service with fetchLimited to custom apps on Enterprise stores

The practical result is that a Function can’t look things up as it goes. Data it needs has to be available up front, through its input query, and through metafields on products, customers or the Function’s own configuration. So design the configuration first. A good discount Function lets a merchandiser change the tiers in an admin screen, with no redeployment. Code with hard-wired prices means a developer every time the promotion changes.

App first, custom second

  1. Run the customisations report, and list what each script did in plain business terms.
  2. Delete anything nobody needs. A list of old promotions usually shrinks a lot.
  3. Check whether Shopify now does it natively, or if a public app does. These work on any plan.
  4. Build a custom Function only for what remains, and only if you are on Plus.
  5. Test real carts: mixed discounts, different markets and large baskets near the limits.

Not sure this is the right place for a change? See theme, app or Function.

Questions

Are our old Scripts still running?

No. Shopify's changelog set June 30, 2026 as the date all Scripts stop executing. If a discount or shipping rule went missing around then, this may be why, and you need a Function or an app to replace it.

Do we need Shopify Plus to use Functions?

To use a custom app with Function APIs, yes. Stores on any plan can use public apps from the Shopify App Store that contain Functions. So first check whether an existing app does what you need.

Do we have to write Functions in Rust?

Functions compile to WebAssembly, so any language that compiles to it can work, but Shopify says Rust is 'recommended and strongly preferred'. The tight instruction limit is the practical reason.

More on Shopify

Lost a rule when Scripts ended?

Tell us what the old script did and which plan you are on. We will tell you whether an app covers it or a custom Function is needed.

We reply within one business day (IST).