v5-breaking-changes について
Remotion リポジトリで、共有する v4 リリース系列との互換性を保ちながら v5 の破壊的変更を実装・検証するためのスキルです。コンパイル時フラグ、実行時動作、公開型、移行ドキュメント、検証を扱います。
主な機能
- 01一元管理するコンパイル時フラグ
- 02バージョン別の実行時動作
- 03条件付きの公開 TypeScript 型
- 04移行ガイドの要件
- 05互換性検証チェックリスト
活用シーン
- 01v5 API の変更実装
- 02v4 動作の互換性維持
- 03ユーザー向け移行文書の更新
- 04型と実行時動作の整合性確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ remotion-dev/ remotion --skill v5-breaking-changesインストール後、Claude Code で/v5-breaking-changesを入力して読み込まれたか確認します。
詳細
Remotion 5 の破壊的変更
packages/core/src/v5-flag.ts の中央コンパイル時フラグを使用します。
export const ENABLE_V5_BREAKING_CHANGES = false as const;
コンパイル時フラグを維持する
- v4/main リリースラインでは、フラグをリテラルの
false as constのままにします。 - 環境変数、実行時オプション、または一般的な
booleanに変更しないでください。リテラル型によって、公開 TypeScript API と実行時の動作の両方が選択されます。 - 別の v5 フラグを追加しないでください。
packages/core内では、v5-flag.tsからフラグをインポートします。他のパッケージでは、すべてのパッケージで同じ値を使うために、remotion/no-reactのNoReactInternals.ENABLE_V5_BREAKING_CHANGESを使用します。
v5 のリリースラインを切る際に、この定数を true as const に変更するだけで、v5 の実行時動作と公開 TypeScript API の両方が有効になります。
実行時の動作を切り替える
既存の v4 の経路を維持しながら、中央フラグに基づいてデフォルト値と動作を分岐させます。
const effectiveValue =
value ??
(NoReactInternals.ENABLE_V5_BREAKING_CHANGES ? v5Default : v4Default);
v5 API で意図的に値を削除する場合を除き、ユーザーが明示的に指定した値が引き続き優先されるようにします。実行時検証は、選択された公開型と一致させてください。これにより、JavaScript の呼び出し元や TypeScript を介さずに呼び出すユーザーにも v5 の動作が適用されます。
公開型を切り替える
シグネチャやオプションに破壊的変更を加える場合は、リテラルフラグに基づく条件型で、互換性のない部分全体を選択します。
type VersionedOptions =
typeof NoReactInternals.ENABLE_V5_BREAKING_CHANGES extends true
? V5Options
: V4Options;
v4 の分岐では、互換性のある API を公開する必要があります。v5 の分岐では、意図した v5 API のみを公開してください。削除したフィールドをオプションのまま残したり、両バージョンをまとめてユニオンにしたりしないでください。
参考として、次の既存実装を使用してください。
- v5 で必須となるオプションについては、
packages/renderer/src/v5-required-input-props.ts。 - v4 の互換性を保ちながら公開型からオプションを削除する方法については、
packages/renderer/src/open-browser.ts。 - 条件付きの公開型と実行時の強制を組み合わせる方法については、
packages/google-fonts/src/base.ts。
ユーザー向けの変更はすべて文書化する
packages/docs/docs/5-0-migration.mdx に対応する項目を追加または更新します。次の内容を記載してください。
- v5 で何が変更されたか。
- v4 の動作またはシグネチャ。
- ユーザーがどのように移行すべきか。
- 必要に応じて、置き換え用のコードやオプション。
変更を検証する
完了する前に、次の点を確認してください。
- フラグを
false as constのままにしたとき、v4 の実行時動作と公開型に互換性が保たれていること。 - 中央フラグだけを
true as constに変更すると、v5 の実行時経路と公開型の両方が選択されること。 - 実行時検証が条件付き TypeScript API と一致していること。
- 移行ガイドにユーザー向けの変更が記載されていること。
- 影響を受けるすべてのパッケージで、対象を絞ったビルド、既存のテスト、リンティング、フォーマットが成功すること。
v5 のテストのためにフラグを反転した状態でコミットしないでください。共有 v4/main ラインでは false as const に戻してください。
v5 が v4 と実装を共有しなくなった後は、互換性の分岐を削除してもかまいません。