Developer Changelog / Polaris

Polaris CDN が
セマンティックバージョニングを採用

CDN から読み込む Polaris Web Components のバージョン体系が semver に。互換性のある改善は今まで通り自動で降ってくるが、破壊的変更(メジャー)の適用タイミングは開発者が明示的に選べるようになった。既存アプリに即時対応は不要。

このページの構成
  1. 30秒で理解 : 何が変わったのか
  2. semver のルール(major / minor / security)
  3. 4 つの URL と使い分け
  4. リリースの流れ図解(RC → stable → pinned)
  5. URL 別の挙動を一覧で比較
  6. 影響を受ける人 / 受けない人
  7. 技術者が押さえるべき5つのポイント
  8. 業務に活かせる3つのユースケース
  9. 提案で使える1行サマリ

130秒で理解 : 何が変わったのか

Shopify CDN から配信される Polaris Web Components が、見慣れた セマンティックバージョニングに移行した。
互換性のある改善はこれまで通り自動で反映される。一方、破壊的変更を含むメジャーは自動では降ってこない —— 新しいメジャーの採用は常に開発者の明示的な操作になる。
既存アプリに即時の対応は不要。

互換性のある改善 = 自動

バグ修正・アクセシビリティ/パフォーマンス改善・視覚的な調整・新コンポーネントは、stable チャネルに自動で届く。

破壊的変更 = 自分で選ぶ

メジャーリリースは自動適用されない。URL のメジャー番号を書き換えて初めて適用される = タイミングを開発側が握れる。

今すぐの作業は無し

既存アプリは immediate action 不要と明記。ただし「どの URL を踏んでいるか」の棚卸しは早めにやる価値がある。

2semver のルール(major / minor / security)

polaris-1.1.js MAJOR : 破壊的変更あり ・API や挙動の破壊的変更を含みうる ・アプリ側の更新が必要になる ・採用は常に明示的(自動では上がらない) MINOR : 互換性あり ・互換なコンポーネント/API の追加 ・バグ修正、アクセシビリティ・性能改善 ・視覚的なリファインメント

セキュリティ修正は「古いメジャー」にも入る

セキュリティ修正は影響を受ける stable リリースに適用され、古いメジャーも対象に含まれる。つまり「メジャーを上げないとセキュリティ修正が受け取れない」構図ではない。

types CDN

@shopify/polaris-types はメジャーを揃える

型パッケージは CDN リリースと同じメジャーバージョンを使う。CDN 側のメジャーを上げるなら、型パッケージのメジャーも合わせて上げる前提で考える。

34 つの URL と使い分け

A. 自動で互換アップデートを受け取る(既定・推奨)

アプリは既定で stable リリースチャネルを使うべき。stable への更新は、リリース候補(RC)フェーズを通過してから届く。この URL はメジャー変更があっても自動では上がらない

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

B. ピン留めリリース(バージョン固定)

ピン留めしたリリースは、通常の機能追加・修正・視覚的変更を受け取らない

<script src="https://cdn.shopify.com/shopifycloud/polaris-1.1.js"></script>
本番投入の時期を制御
通常の変更がいつ本番に届くかを自分で決める
テスト時の再現
検証で使ったリリースをそのまま再現できる
障害からの復旧
アプリに影響が出た更新から戻す
リリース計画との同期
自社のリリースプロセスに Polaris 更新を合わせる
Caution : polaris-1.1.jsPolaris 1.1 が stable になったときにだけ公開される。まだ stable でないバージョンをピン留め URL で先に指定することはできない。

C. 今後の変更をテストする(リリース候補)

今後のすべての変更は、stable チャネルにリリースされる前にリリース候補ビルドでテストできる。RC バージョンは RC 期間中に改善を積み上げ、同じ URL のまま in-place で更新される。開発・テスト用途を想定。

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

D. 既存の polaris.js URL

既存の polaris.jspolaris-1.js同じタイミングで更新される。そしてメジャーリリースが出ても自動では上がらない

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

4リリースの流れ図解(RC → stable → pinned)

開発中の変更 リリース候補(RC) polaris-1.1-rc.js 同じ URL に in-place で積み上がる RC 期間終了 stable チャネル polaris-1.js / polaris.js 既定。互換更新が自動で届く stable 化と同時 ピン留め URL を公開 polaris-1.1.js FROZEN 以降の通常変更は届かない メジャーが出た場合 polaris-1.js / polaris.js は 1 系のまま(自動で上がらない) 手動で書換 polaris-2.js に差し替えて 初めてメジャー適用 セキュリティ修正は 古いメジャーにも適用されうる
図中の polaris-2.js は「メジャーを上げる操作=URL のメジャー番号の書き換え」という構造を示すための表記。Polaris 2 の予定やリリース時期は記事に記載なし。

5URL 別の挙動を一覧で比較

URL 互換アップデート(minor / fix) メジャーの自動適用 主な用途
polaris-1.js
stable ・既定
受け取る RC フェーズ通過後に届く されない 基本これ。アプリは既定で stable チャネルを使うべき
polaris.js
既存 URL
受け取る polaris-1.js と同じタイミングで更新 されない 既存アプリはそのままでよい(即時対応不要)
polaris-1.1.js
ピン留め
受け取らない 通常の機能・修正・視覚変更なし されない 本番投入時期の制御/テスト再現/復旧/リリース同期
polaris-1.1-rc.js
リリース候補
RC 期間中に in-place で更新 開発・テスト用。今後の変更を先に確認する

※ ピン留め URL(polaris-1.1.js)にセキュリティ修正が入るかどうかの明示は記事に記載なし。記載があるのは「セキュリティ修正は影響を受ける stable リリースに適用され、古いメジャーも含まれうる」という点まで。

6影響を受ける人 / 受けない人

対象 : この 2 つ

・Shopify CDN から Polaris Web Components を読み込んでいるサードパーティアプリ
@shopify/polaris-types を使っている開発者

対象外 : バージョニングは変わらない

App Home UI extensions
Admin UI extensions
App Bridge

既存アプリは即時対応不要(Existing apps don’t need to take immediate action)。放置しても壊れない設計になっている = 今回はカレンダーに「対応期限」を切る類の変更ではない。

7技術者が押さえるべき5つのポイント

auto 手動

1. minor は自動・major は手動という非対称

互換のある改善は黙って降ってくるが、破壊的変更は URL を書き換えない限り絶対に来ない。制御点は「URL の中のメジャー番号」ひとつ。ここを構成管理の対象にすれば十分。

2. RC URL は「中身が動く」URL

RC は同一 URL のまま in-place で更新され続ける。再現性が無いので本番では踏まない。開発・テスト環境専用と割り切る。

3. ピン留めは「更新を止める」以上の意味を持たない

通常の機能・修正・視覚的変更を一切受け取らなくなる。恒久運用ではなく、時期制御・再現・復旧のための一時的な措置として使い、戻す計画とセットで運用する。

4. 型パッケージと CDN のメジャーは連動

@shopify/polaris-types は CDN リリースと同じメジャーを使う。「script タグのメジャー」と「package.json のメジャー」がズレると型と実体が食い違う。CI で両者の一致をチェックするのが安い保険。

5. セキュリティ修正は古いメジャーにも入る = 「上げ遅れ」の一次リスクは下がる

セキュリティ修正は影響を受ける stable リリースに適用され、古いメジャーを含む。よって「セキュリティのためにメジャーを急ぐ」必要は薄い。ただし機能・改善は新しいメジャー側に乗るため、上げない選択は機能面のコストとして積み上がる。なお、旧メジャーのサポート期間や EOL ポリシーは記事に記載なし

8業務に活かせる3つのユースケース

app list
USE CASE 1

受託・自社アプリの「Polaris 読み込み URL 棚卸し」

課題
複数のアプリ/複数リポジトリで Polaris をどの URL から読んでいるか把握できておらず、どれが stable でどれが RC を踏んでいるか分からない。
打ち手
cdn.shopify.com/shopifycloud/polaris を全リポジトリで横断 grep し、polaris.js / polaris-1.js / -rc.js / ピン留めの 4 分類で台帳化。RC を本番で踏んでいるものだけ即時 stable に寄せる。
効果
「気づかないうちに開発用ビルドが本番に乗っている」事故を潰せる。以後のメジャー移行時に影響範囲が即答できる。
技術メモ
既存アプリは即時対応不要なので、棚卸しは止血(RC 混入)だけ先行、残りは通常リリースに同梱で十分。
staging = RC prod = stable
USE CASE 2

staging に RC を常設して「Polaris 起因のデグレ」を先に踏む

課題
Polaris の視覚的リファインメントやコンポーネント挙動の変化が本番で初めて表面化し、リリース直後に問い合わせが来る。
打ち手
staging / preview 環境の script を polaris-1.1-rc.js に切り替え、本番は polaris-1.js のまま。RC 期間中に主要画面のビジュアル回帰テストを定期実行する。
効果
stable に降ってくる前に影響を検知できる。検知したら Shopify 側へフィードバックする時間も確保できる。
技術メモ
RC URL は同一 URL のまま中身が更新されるため、テストは「1 回流して終わり」ではなく定期実行にしないと意味がない。
1.1
USE CASE 3

インシデント時の「Polaris ロールバック手順」を運用に組み込む

課題
アプリ管理画面の表示崩れ・操作不能が発生した際、原因が自社デプロイなのか Polaris 更新なのか切り分けられず、復旧が長引く。
打ち手
Runbook に「① 直近の自社デプロイを疑う ② 該当なければ script を直前の stable ピン留め URL(例 polaris-1.1.js)に差し替え ③ 復旧したら Polaris 起因と確定 → 恒久対応後に stable へ戻す」を明文化。
効果
切り分けが数分で終わり、MTTR が短縮。「Recover from an update affecting your app」という公式のユースケースにそのまま乗る。
技術メモ
ピン留め URL はその版が stable になったときに初めて公開されるため、Runbook に書くのは「常に直前の stable 版番号」。ピン留めのまま放置すると通常の修正が一切届かないので、戻し期限もセットで定義する。

9提案で使える1行サマリ

「Polaris CDN が semver 化。互換性のある改善は今まで通り自動、破壊的変更は URL のメジャー番号を書き換えたときだけ適用
stable を既定に、RC は staging で先行検証、ピン留めは復旧・時期制御の一時措置。
既存アプリの即時対応は不要——今やるべきは『どの URL を踏んでいるか』の棚卸しだけ。」