Shopify Scripts retires on June 30, 2026, and Shopify Functions is the replacement. If you are deciding how much effort to put into the move, here is the honest comparison. The short answer: Functions do everything Scripts did, run faster, cost you nothing extra, and reach more stores. This is an upgrade that happens to be mandatory.
For the step-by-step move, see the Scripts to Functions migration guide.
At a glance
| Shopify Scripts | Shopify Functions | |
|---|---|---|
| Language | Ruby | JavaScript or Rust (compiled to WebAssembly) |
| Where you write it | Script Editor app in the admin | Your own code, deployed with the Shopify CLI |
| Plans | Shopify Plus only | Available well beyond Plus |
| Checkout | Old checkout.liquid checkout | Checkout extensibility (the current checkout) |
| Speed | Slower | Runs in milliseconds, no external network call |
| Versioning and testing | None in the editor | Version-controlled, testable like real code |
| Status | Retiring June 30, 2026 | The supported, ongoing way |
What stays the same
The mental model barely changes. Both look at the cart, the customer, and line items, make a decision, and apply a result at checkout. A discount Script and a discount function read the same kind of inputs and produce the same kind of output. Most Scripts are a handful of lines, and so are their Function equivalents.
What is different
- You write Functions as code and deploy them through an app. Instead of pasting Ruby into the admin, you scaffold a function with the Shopify CLI and ship it as an app extension. If you do not have a custom app, that is the first step.
- Inputs are explicit. A Function declares exactly which cart and customer fields it reads through a GraphQL input query. That is part of why it is fast, and it means anything you do not request is invisible to the code.
- You attach Functions in the admin. A discount function only runs once an automatic discount points at it; delivery and payment functions run once you add the matching customization. The code and the configuration are separate.
- They run on the new checkout. Scripts were tied to the old checkout that no longer exists for most stores. Functions are built for checkout extensibility, which is where every store now operates.
Why it is genuinely better
Functions are faster, testable, and version-controlled, so you can review changes, roll back, and trust that they behave the same every time. They also are not locked to Plus, which means logic that used to require the top plan is now within reach for far more stores. The forced migration is real work, but you end up with something more reliable than what you had.
What to do about the deadline
Do not treat this as optional cleanup. After June 30, 2026, your Scripts stop running and the behavior they enforced silently disappears. Inventory your Scripts, map each to its Function (discounts, shipping, payment), and rebuild before the date.
If you would rather skip the learning curve, we migrate Shopify Scripts to Functions and hand you back tested, live functions before the deadline.

