Script tags are deprecated: create and update blocked from 1 October 2026, injection stops 1 March 2027
Shopify will block scriptTagCreate and scriptTagUpdate from 1 October 2026 and stop injecting script tags into storefronts on 1 March 2027; replace them with app embed blocks or web pixels.

- Published
- 20 Oct 2026
- Affects
- GraphQL Admin API, Admin REST API
What changed
Shopify announced on 24 August 2026 that script tags are deprecated. There are two separate dates, and the first one affects apps sooner.
From 1 October 2026, the
scriptTagCreateandscriptTagUpdatemutations return a user error, and theScriptTagREST Admin API resource rejectsPOSTandPUT. Existing script tags keep running.On 1 March 2027, Shopify stops injecting script tags into storefronts. Script tags will no longer load JavaScript there.
The October change applies to all API versions, including older ones, so pinning to an older version does not defer it.
The scriptTags query and the scriptTagDelete mutation keep working, so you can still audit and remove existing script tags.
Who is affected
Apps that create script tags with a display_scope of online_store are affected. These are the script tags that load JavaScript on storefronts, and they are the subject of this deprecation.
Order status script tags
Script tags with a display_scope of order_status or all are covered by an earlier deprecation of the Order status page. Script tags stopped running on that page for Plus stores on 28 August 2025. They stop running for all other stores on 26 August 2026.
Shopify's Order status documentation says you do not need to delete these sunset script tags, because Shopify ignores them on the Order status page.
Script tags with a display scope of all
A script tag with a display_scope of all stops running on the Order status page under the earlier deprecation, but it keeps running on storefronts until 1 March 2027. If your app has script tags with this scope, you still need to replace the storefront part before that date.
What to do
Replace each storefront script tag with an app embed block, which you ship in a theme app extension. App users activate app embed blocks in the theme editor.
If a script only collects analytics or conversion data, use a web pixel instead. Web pixels run in a sandbox, honour the consent signals the customer has chosen, and need no action from the app user.
Audit your existing script tags
Use the
scriptTagsquery to list your app's script tags, including theirdisplayScope.Use the
scriptTagDeletemutation to remove a script tag once its replacement is in place. Both keep working after the deprecation dates.
Notes on app embed blocks
They work on vintage and Online Store 2.0 themes, so you do not need two installation paths.
They are deactivated by default after install. App users must activate them in the theme editor, under Theme Settings > App embeds.
Your app can provide a deep link after installation that activates the block for the app user. They can preview it before saving.
They let you load scripts on specific pages only, which a script tag cannot do. This limits the performance impact to the pages where the script is needed.
Before and after
The sources give no script tag code, so the "before" side is described in words. A script tag loads JavaScript on a storefront without any changes to theme code. It does not appear in the theme editor, and it cannot be limited to specific pages the way an app embed block can.
The "after" side is an app embed block in a theme app extension. This is the example from the theme app extension documentation. It sets target to body, so Shopify injects the block before the closing </body> tag.
<div style={{position: 'fixed', bottom: '0', right: '0'}}>
{{ "kitten.jpg" | asset_url | img_tag }}
</div>
{% schema %}
{
"name": "App Embed",
"target": "body",
"settings": []
}
{% endschema %}To load JavaScript from a block, the schema supports a javascript attribute that names a file in the extension's assets subdirectory. The documentation shows it in the app block example as "javascript": "app.js", and describes it for both app blocks and app embed blocks. If several blocks on a page reference the same file, it is included once. The example above does not load a script, so add that attribute yourself.
Deadline
Two dates apply to every app and store, whichever API version you use. The announcement was published on 24 August 2026, but that is the date it was announced, not a deadline.
**1 October 2026**:
scriptTagCreateandscriptTagUpdatereturn a user error, and the RESTScriptTagresource rejectsPOSTandPUT. Existing script tags keep running.**1 March 2027**: Shopify stops injecting script tags into storefronts.
Get the weekly digest
One email every Monday: what changed in Shopify, the deadlines coming up and what’s been announced, plus the week’s new guides. Free, and you can unsubscribe in one click.
Sources
- Script tags are deprecated and will stop running on March 1, 2027 · Shopify · accessed 20 Oct 2026
- Order status script tags · Shopify developer docs · accessed 20 Oct 2026
- Configure theme app extensions · Shopify developer docs · accessed 20 Oct 2026
- About web pixels · Shopify developer docs · accessed 20 Oct 2026
AI-assisted, reviewed by Scott. Every claim is checked against the sources above.