最良のライブアップデートは、ユーザーがほとんど気づかないものです。
通常、3つのことが必要です:
- ダウンロードサイズが小さい
- ロールアウトが制御されている
- Recovery is instant if something goes wrong.
The same “keep OTA lean” advice that works in React Native land also applies to Capgo. The difference is that Capgo gives Capacitor teams a few extra levers: Deltaアップデート, チャンネル, 自動ロールバック, バージョン対象、およびオプション エンドツーエンド暗号化.
Capgoを使用する場合、すべてを組み合わせると、パケットサイズが小さくなり、インストールが速くなり、運用上の混乱が少なくなります。
MAUが同じでも、軽量化は重要です。
One useful Capgo-specific detail: Capgo MAU is effectively the number of monthly active devices that contacted the update service in the last 30 days.
したがって、バンドルをスリムにすることは、MAUのカウントを減らすためのトリックではありません。実際にユーザーとチームが感じる部分を改善するためです。
- 携帯電話または弱いWi-Fiで高速ダウンロード
- より良い体験 直接の更新
- 失敗したまたはロールバックされたリリースで浪費された帯域幅が少ない
- テストまたはステージングしたリリースの影響範囲が小さい
速さ、安全性、運用の規律という観点から、リニアな更新は本当に速いものである。
1. デルタ更新をデフォルトにする
あなたが一つだけ行うことができるものはこれだ。
Capgoの デルタ更新 コンテキスト: Enterprise製品/価格設定ページ。ロール: ショートUIラベルまたはナビゲーションアイテム。見られる場所: page enterprise.astro。メッセージキー `enterprise_delta_updates` (Enterprise Delta Updates)。
bun run build
bunx @capgo/cli@latest bundle upload --channel staging --delta
バージョン間で変更されたファイルのみを送信し、フルウェブパッケージを再ダウンロードするのではなく。定期的なOTAパフォーマンスの最大の単一の勝ちである。
bunx @capgo/cli@latest bundle upload --channel production --delta
CIを厳格に維持したい場合は --delta-only 誰もが誤ってフルバンドルアップロードに戻るのを防ぐため
bunx @capgo/cli@latest bundle upload --channel production --delta-only
使用する --delta-only Deltaアップデートをサポートするプロダクションフリートが存在する場合にのみ使用してください。mixedプラグインバージョンでは、manifestベースのデルタ配信をサポートしていない古いデバイスはアップデートをダウンロードできません。
このことは、Deltaアップデートを使用する場合にさらに重要です。なぜなら、「アップデートが見つかった」と「アプリが再読み込みされた」までの時間がユーザーに視覚化されるからです。 directUpdate2. アセットをアセットとして扱う
OTAバンドルが静かに膨張するのは、大きなアセットが原因です。
実践的なルール:
大きい画像やメディアをJavaScript内にインライン化しないでください。通常のアセットファイルが代わりに使用できる場合です。
- 頻繁に変更されるコンテンツは、__CAPGO_KEEP_0__ またはCDNに保管し、アプリ内に含まないようにしてください。必要に応じてアプリ内に含めることもできます。
- Keep frequently changing content on your own CDN or API if it does not need to live inside the shipped app bundle.
- __CAPGO_KEEP_0__
- 安定したアセットは安定したまま。デルタ更新では、変更されていないファイルは再ダウンロードされるのではなく、再利用される。
アプリが成長するにつれて、Capgo を速く保つ最も簡単な方法の 1 つです。最悪のパターンは、ユーザーに大量の無関係なメディアをダウンロードさせることなく、UI の小さな修正です。
3. 本物のネイティブ変更用にネイティブリリースを維持する
Capgo は、実行時にロードされる HTML、CSS、JavaScript、そしてアセットを更新します。
適切なチャネルではありません:
- 新しいネイティブ プラグイン
- 許可の変更
capacitor.config.tsネイティブ プロジェクトの状態を変更する変更- iOS または Android のネイティブ プロジェクトの状態を変更する変更
その行はパフォーマンスにも関係しています。OTA ラインに主な構造的変更を押し付ける場合、更新戦略は時間の経過とともに重くなり、リスクが高くなります。
意図的に 2 つのリリース ラインを使用する:
ネイティブ ライン
プラグインの変更、パーミッションの変更、ネイティブの設定:
bun run build
bunx cap sync
次に、通常のストアリリースを出します。
Capgo レーン
安全なウェブ層の反復について:
bun run build
bunx @capgo/cli@latest bundle upload --channel production --delta
最近、長期間のアセットを多く追加した場合は、定期的にネイティブの基準を更新してください。新しい基準を含む新しいストアビルドは、将来のCapgoの差分を小さくします。
4. チャンネルを使用してロールアウトのサイズを小さくします。
「リニア」なアップデートは、単にメガバイト数だけではありません。多くのデバイスがアップデートを受け取る前に、どれが良いかを知るまでの時間も含めて考慮する必要があります。
Capgoの チャンネルシステム は、以下の点で最も綺麗な方法です:
stagingQAbeta招待されたテスターproductionCapgoのアップデートをスッキリと速くhotfix緊急復旧用
シンプルなフローは次のようになります。
- アップロード
staging. - 実機で検証
- 徐々に展開する、制御チャネルまたはパーセンテージベースの展開
- 健康率が低下したら、すぐにバックアップ
あなたのアプリが複数のネイティブ基盤を持っている場合、チャネルを バージョン対象で組み合わせる。そうすると、互換性のないまたは不要な重いパッケージが古いバイナリから遠ざけられる。
レビューループをさらに絞りたいチームにとって、CapgoもPRプレビューに適しています。 PRプレビューCapgoのアップデートをスリムで速く維持する方法
5. 直接アップデートを有効にすると、起動時間を最適化することが推奨されます
Capgoのアップデートの動作
Capgo’s 2番目のガードレールは アプリがデフォルトの10秒間のウィンドウ内に、またはあなたがCapgoの設定で指定した時間内に、準備完了を報告しなかった場合、Capgoはそのバンドルを無効にし、前のバージョンに戻します。このロールバックの動作は、実稼働環境では望ましいですが、起動時間をクリーンに保つ必要があります: directUpdate 呼び出し
アプリフローへの移行のステップ2 notifyAppReady().
import { CapacitorUpdater } from '@capgo/capacitor-updater'
CapacitorUpdater.notifyAppReady()
__CAPGO_KEEP_0__の設定 notifyAppReady() __CAPGO_KEEP_1__ appReadyTimeout you set in your Capacitor config, Capgo can mark that bundle invalid and restore the previous good version. That rollback behavior is what you want in production, but it also means you should keep startup clean:
- __CAPGO_KEEP_1__
notifyAppReady()正しい場所に - 重要なパスで遅い起動時間の作業を避ける
- アプリの状態を慎重に保存して復元する必要がある場合は、すぐに再読み込みする
- 広範なロールアウト前に、悪いネットワークと低エンドデバイスのシナリオをテストする
最近確認していない場合は、 notifyAppReadyのガイド 読む価値がある。
6. 内部のアップデートチャンネルを使用する代わりに、不要なネイティブのビルドを実行しない
多くのモバイルチームは、明らかにWebのみの変更に対して、明らかに時間を浪費してビニールをビルドしている。
変更が:
- コピー
- UIのポリッシュ
- onboarding フロー
- 価格表示画面のロジック
- 分析のワイヤリング
- 機能フラグ
- API または API の応答のレンダリング
次に、Capgo のアップデートは、通常、より速いレビューのアーティファクトです。
つまり、ネイティブの再構築回数が減り、TestFlight の混乱も減り、チームのフィードバックループも密度が高くなります。これは、Capgo の最も利用されていない利点の 1 つです: ネイティブ/ウェブの境界を破ることなく、OTA レーンにレビューと QA の作業を移すことができます。
Capgo のガイド 1 つのモバイル アプリ ID でステージングする方法 7. すばやさと秘密を分離する
小さなパッケージと安全なパッケージは、異なる問題を解決します。
__CAPGO_KEEP_0__
チャンネルは有効性を制御します。チャンネル自体ではバンドルを機密情報にしないのでしょう。
必要なのは、より強力な配信保証が必要な場合です。
- 有効 ライブアップデート暗号化,
- 使用 カスタムストレージまたはセルフホストされた配信を使用,
- プライベートキーはCIまたは保護されたオペレーターフローのみに保管してください。
アップデートサイズは無視できません。ただし、次の両方の要素を最適化する必要があります。
- スピードのためのスリム
- 配信制御のための暗号化
- ロールアウト制御のためのチャンネル
- 復旧のためのロールバック
A practical “lean Capgo” workflow
簡単なデフォルトの運用モデルを使用したい場合はこちらをご利用ください。
- ネイティブとOTAリリースのラインを分離してください。
- JSの変更を
--deltaデフォルトでアップロードしてください。 - を使用して
stagingとbetaチャンネルをアップロードする前にproduction. - ロールアウト後に アップデートの統計とログを確認する PRをインストール可能なプレビューに変換する
- ネイティブのビルドが不要な場合
- 可能であれば、大量で頻繁に変更されるメディアをバンドルから外す。
- 主なアセットの成長やネイティブの変更後、ネイティブのベースラインを更新する。
- 「Treat」
notifyAppReady()「and rollback behavior」と「setup trivia」をリリースエンジニアリングとして扱う。
「That combination」は、「常にアップロードした変更内容」アプローチと比べると、長く速いままになる。
「Closing thought」
For Capgo teams, “lean and fast” is not just a bundle-size problem.
リリース設計の問題です。
パイロットサイズではデルタアップデートを使用し、ロールアウトサイズではチャンネルを使用し、エラー発生サイズではロールバックを使用します。OTAをそのように考えると、更新がアプリ、チーム、ユーザーが大きくなることなく速くなります。
Keep going from How to Keep Capgo Updates Lean and Fast
「Capgo」についての更新を速く保つ方法の続きです。 How to Keep Capgo Updates Lean and Fast チャンネルルーティングとステージドロールアウトを計画するには、 チャンネル チャンネル チャンネル チャンネル ベータテストソリューション ベータテストソリューションの製品ワークフロー バージョン目標ソリューション バージョン目標ソリューションの製品ワークフロー 執筆者 __CAPGO_KEEP_0__