Developer Changelog / Polaris

The Polaris CDN is
adopting semantic versioning

The versioning scheme for Polaris Web Components loaded from the CDN is moving to semver. Backward-compatible improvements still arrive automatically, but developers now explicitly choose when to take on breaking changes (majors). No immediate action is required for existing apps.

On this page
  1. Understand it in 30 seconds: what changed
  2. The semver rules (major / minor / security)
  3. The four URLs and when to use each
  4. The release flow, illustrated (RC → stable → pinned)
  5. Behavior by URL, side by side
  6. Who is affected / who is not
  7. 5 points developers should know
  8. 3 use cases you can apply at work
  9. A one-line summary for your pitch

1Understand it in 30 seconds: what changed

Polaris Web Components served from the Shopify CDN Polaris Web Components have moved to familiar semantic versioning.
Backward-compatible improvements arestill applied automatically, just as before. Meanwhile,majors containing breaking changes no longer arrive automatically — adopting a new major isalways an explicit developer action.
No immediate action is required for existing apps.

Backward-compatible improvements = automatic

Bug fixes, accessibility and performance improvements, visual tweaks, and new components are delivered to the stable channel automatically.

Breaking changes = your choice

Major releases are not applied automatically. They take effect only once you change the major number in the URL — so your team controls the timing.

Nothing to do right now

Existing apps are explicitly stated to need no immediate action. Still, it is worth taking stock early of which URL you are actually using.

2The semver rules (major / minor / security)

polaris-1.1.js MAJOR: contains breaking changes May include breaking changes to APIs or behavior Requires updates on the app side Adoption is always explicit (never upgraded automatically) MINOR: backward compatible New compatible components / APIs Bug fixes, accessibility and performance improvements Visual refinements

Security fixes also land in older majors

Security fixes are applied to the affected stable releases, andolder majors are included as well. In other words, you are not forced to move up a major version just to receive security fixes.

types CDN

@shopify/polaris-types keeps its major version in sync

The types package uses thesame major versionas the CDN release. If you bump the major on the CDN side, plan on bumping the types package major to match.

3Four URLs and when to use each

A. Receive compatible updates automatically (default, recommended)

Apps should use the stable release channelby default. Updates to stable arrive only after passing through the release candidate (RC) phase. This URLdoes not move up automatically across major versions.

<script src="https://cdn.shopify.com/shopifycloud/polaris-1.js"></script>

B. Pinned release (version locked)

When it comes to regular feature additions, fixes, and visual changes, a pinned release simply doesnot receive them.

<script src="https://cdn.shopify.com/shopifycloud/polaris-1.1.js"></script>
Control when changes go live
Decide for yourself when regular changes reach production
Reproducibility in testing
Reproduce the exact release you validated against
Recovery from incidents
Roll back from an update that affected your app
Sync with your release plan
Align Polaris updates with your own release process
Caution : polaris-1.1.js is published only once Polaris 1.1 reaches stable. You cannot point a pinned URL at a version that has not reached stable yet.

C. Test upcoming changes (release candidates)

All upcoming changes can, before they are released to the stable channel,be tested in release candidate builds. RC versions accumulate improvements during the RC period and areupdated in place at the same URL. Intended for development and testing use.

<script src="https://cdn.shopify.com/shopifycloud/polaris-1.1-rc.js"></script>

D. Existing polaris.js URL

existing polaris.js and polaris-1.js areupdated at the same time. Andthey don't move up automatically even when a major release ships.

<script src="https://cdn.shopify.com/shopifycloud/polaris.js"></script>

4Release flow diagram (RC → stable → pinned)

In-development changes Release candidate (RC) polaris-1.1-rc.js Stacked in place at the same URL End of the RC period stable channel polaris-1.js / polaris.js Default. Compatible updates arrive automatically At the moment it goes stable Pinned URL published polaris-1.1.js FROZEN No further routine changes arrive When a major is released polaris-1.js / polaris.js stay on the 1.x line (they don't move up automatically) Rewrite manually Swap in polaris-2.js, and only then is the major applied Security fixes may also be applied to older majors
The polaris-2.js in the diagram is notation used to show the structure "moving up a major = rewriting the major version number in the URL."The article states no plans or release timing for Polaris 2.

5Side-by-side comparison of behavior by URL

URL Compatible updates (minor / fix) Automatic major upgrades Primary use
polaris-1.js
stable · default
Receives Arrives after the RC phase Not applied The baseline. Apps should use the stable channel by default
polaris.js
Existing URL
Receives polaris-1.js — updated at the same timing Not applied Existing apps can stay as they are (no immediate action needed)
polaris-1.1.js
Pinning
Not received No regular features, fixes, or visual changes No Controlling production rollout timing / reproducing tests / recovery / release synchronization
polaris-1.1-rc.js
Release candidate
Updated in place during the RC period For development and testing. Check upcoming changes ahead of time

* Note: for pinned URLs (polaris-1.1.js), the article doesn't explicitly say whether security fixes are applied. All it states is that security fixes go to affected stable releases, which may include older majors.

6Who's affected / who isn't

Affected: these two

Loading Polaris Web Components from the Shopify CDN —third-party apps
@shopify/polaris-types — developers using it

Not affected: versioning is unchanged

App Home UI extensions
Admin UI extensions
App Bridge

Existing apps don't need to take immediate action.It's designed so that nothing breaks if you do nothing — this isn't the kind of change that needs a deadline on your calendar.

75 key points for developers

auto Manual

1. An asymmetry: minor is automatic, major is manual

Backward-compatible improvements arrive silently, but breaking changes will never reach you unless you rewrite the URL.There's exactly one control point: the major version number in the URL. Put that under configuration management and you're covered.

2. An RC URL is a URL whose contents keep moving

RC builds keep being updated in place at the same URL.It isn't reproducible, so never use it in production. Treat it as strictly for development and test environments.

3. Pinning means nothing more than stopping updates

You stop receiving all regular features, fixes, and visual changes.It's a temporary measure for timing control, reproduction, and recovery — not a permanent setup, so always pair it with a plan to unpin.

4. The types package and the CDN major move together

@shopify/polaris-types uses the same major version as the CDN release.If the major in your script tag and the major in package.json drift apart, your types and the actual runtime won't match. Checking that the two match in CI is cheap insurance.

5. Security fixes also land in older majors = the primary risk of delaying an upgrade goes down

Security fixes are applied to the affected stable releases,including older majors. So there is little need to rush a major upgrade for security reasons. That said, features and improvements only land on the newer major, sochoosing not to upgrade accumulates as a cost on the feature side. Note that the support period and EOL policy for older majors arenot stated in the article.

8Three use cases you can apply to your work

app list
USE CASE 1

Taking inventory of Polaris load URLs across client and in-house apps

Challenge
You have no clear picture of which URL each app or repo loads Polaris from, so you can't tell which ones are on stable and which are pulling an RC.
Action
cdn.shopify.com/shopifycloud/polaris across every repository, then catalog the results into four buckets: stable / RC /polaris.js / polaris-1.js / -rc.js / pinned. Move only the ones hitting an RC in production to stable right away.
Impact
It eliminates the "a development build was running in production without anyone noticing" class of incident. And for future major migrations, you can answer the blast radius on the spot.
Technical note
Existing apps need no immediate action, so for the inventory,stop the bleeding (RC in production) first and fold the rest into a regular releaseis enough.
staging = RC prod = stable
USE CASE 2

Keep an RC permanently on staging so you hit "Polaris-caused regressions" first

Challenge
Polaris visual refinements and component behavior changes surface for the first time in production, and support tickets arrive right after release.
Action
Switch the script in your staging / preview environments to polaris-1.1-rc.js , and leave production on polaris-1.js . Run visual regression tests on your main screens on a schedule throughout the RC period.
Impact
You can detect the impact before it reaches stable. And once you detect it, you still have time to send feedback to Shopify.
Technical note
The RC URLis updated in place at the same URL, so tests can't be a one-time run — they have to berun on a scheduleto be worth anything.
1.1
USE CASE 3

Building a "Polaris rollback procedure" into your incident runbook

Challenge
When the app admin UI breaks visually or becomes unusable, you can't tell whether the cause is your own deploy or a Polaris update, which drags out recovery.
Action
Spell out in the Runbook: "① First suspect your own most recent deploy. ② If that's not it, swap the script to the last stable pinned URL (e.g. polaris-1.1.js) ③ If it recovers, the cause is confirmed as Polaris → return to stable after a permanent fix."
Impact
Triage finishes in minutes, shortening MTTR. It maps directly onto the official "Recover from an update affecting your app" use case.
Technical notes
A pinned URL isonly published once that version becomes stable, so what you write in the Runbook is "always the immediately preceding stable version number."Leaving it pinned means no routine fixes reach you at all, so define a deadline for unpinning at the same time.

9One-line summary you can use in a proposal

"The Polaris CDN is adopting semver.Backward-compatible improvements still land automatically; breaking changes apply only when you bump the major version in the URL.
Use stable by default, validate RC ahead of time in staging, and treat pinning as a temporary measure for recovery and timing control.
No immediate action is required for existing apps—all you need to do now is take inventory of which URLs you're loading."