ClaudeExpo2026/02/27 19:15

Ship smaller OTA updates: bundle diffing comes to EAS Update in SDK 55

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

claudejamodel: claude-sonnet-4-20250514

SDK 55でEAS Updateにバンドル差分機能が追加、OTAアップデートサイズを最大75%削減

Key Points

  • ダウンロードサイズを最大75%削減
  • bsdiffアルゴリズムによる差分パッチ配信
  • SDK 55でベータ版として提供開始

Summary

SDK 55でEAS Updateにバンドル差分機能が導入されました。この機能により、デバイスは完全なバンドルではなく差分パッチのみをダウンロードするため、ダウンロードサイズを最大75%削減できます。

Key Points

  • 大幅なサイズ削減: 典型的な3MBのアップデートが約0.75MBまで縮小
  • bsdiffアルゴリズム使用: EAS Updateがbsdiffアルゴリズムを使用してパッチを生成
  • 自動フォールバック: パッチ生成が非効率な場合は自動的に完全バンドルにフォールバック
  • ベータ機能: SDK 55ではベータ版として提供、オプトイン形式

有効化方法

{
  "expo": {
    "updates": {
      "enableBsdiffPatchSupport": true
    }
  }
}

制限事項

  • 埋め込みバンドルは対象外
  • 公開済みアップデートを実行中のデバイスのみが対象
  • パッチ生成には数分かかる場合がある
  • 初回は最新から2番目のアップデートとの差分のみ事前計算

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

claudejamodel: claude-sonnet-4-20250514

より小さなOTAアップデートの配信:SDK 55のEAS Updateにバンドルdiffingがやってきました

より小さなOTAアップデートの配信:SDK 55のEAS Updateにバンドルdiffingがやってきました

Product • Development • React Native • February 27, 2026 • 4分で読める

Quin Jung Engineering
Alan Hughes Engineering

SDK 55では、EAS Updateにバンドルdiffingが導入されました。デバイスは完全なバンドルではなくパッチをダウンロードするようになり、ダウンロードサイズが最大75%削減されます。

EAS Updateでアップデートを公開するたびに、ユーザーは新しいバンドルをダウンロードします。ほとんどのリリース(バグ修正、コピー変更、小さなUI調整)では、実際に変更されたのはごく一部であるにもかかわらず、数メガバイトのコードを送信することになります。

SDK 55以降、EAS Updateはバンドルdiffingをサポートします。完全なバンドルをダウンロードする代わりに、デバイスは古いアップデートと新しいアップデートの間で変更された部分のみを表す小さなバイナリパッチを受信できるようになりました。

私たちのテストでは、パッチにより完全なバンドルと比較して約75%小さなダウンロードが実現されます。つまり、典型的な3MBのアップデートが約0.75MBまで削減される可能性があります。ユーザーはより高速にアップデートを取得でき、帯域幅の消費も削減されます。

バンドルdiffingはベータ版でオプトイン方式です。以下、その仕組みと有効化方法について説明します。

バンドルdiffingとは?

バンドルdiffingにより、expo-updatesクライアントはデバイス上に既にあるものから新しいアップデートへのdiffを要求し、そのパッチをローカルで適用できます。diffにより、AndroidとiOSの両方でHermesバイトコードとJavaScriptのダウンロード時間が約75%削減されると推定されています。

バンドルdiffingの仕組み

EAS Updateはbsdiffアルゴリズムを使用してパッチを生成します。デバイスがアップデートを要求すると、EAS Updateは以下の条件でのみパッチを提供します:

  • パッチが完全なバンドルよりも意味のある程度小さい場合。そうでなければ、デバイスは完全なバンドルを取得します。
  • 効率的に計算できる場合。パッチ生成がリソース集約的すぎる場合、EAS Updateは再び完全なバンドルにフォールバックします。

パッチングについて明確な利点がない場合は、通常通りアップデートが配信されます。

アプリでバンドルdiffingを有効にする方法

前提条件:アプリはExpo SDK 55以降を使用している必要があります。

その後、アプリ設定で有効化します:

{
  "expo": {
    "updates": {
      "enableBsdiffPatchSupport": true
    }
  }
}

動作確認

Expo website: Update Detailsページからバンドルdiffが提供されていることを確認できます。公開したUpdate Groupを開き、検査したいプラットフォームを選択してください。

アプリ内ログ: Updates.readLogEntriesAsync()を呼び出し、パッチが適用されたことを示すログエントリ(例:"patch successfully applied")を探してください。

問題が発生した場合は、Discordまたはウェブサイトからお知らせください。

バンドルdiffingの制限事項

バンドルdiffingはSDK 55のベータ版です。現在の制限事項は以下の通りです:

  • 埋め込みバンドルは対象外。 埋め込みバンドルはパッチングのベースとして使用されません。デバイスがパッチを受信するには、既に公開されたアップデートを実行している必要があります。

  • すべての可能なアップデートペアに対してパッチが即座に保証されるわけではありません。 アップデートが公開されると、EAS Updateはチャンネル上の2番目に新しいアップデートに対してのみパッチを事前計算します。デバイスが異なる公開されたアップデートを実行中に新しいアップデートを要求した場合、最初は完全なバンドルを受信します。その特定のベースアップデートに対するパッチはオンデマンドで生成され、将来の同様のリクエストに提供されます。

  • パッチは公開後すぐに生成されます。 アップデートの公開からパッチの準備完了まで数分かかることがあります。その間、デバイスは完全なバンドルを受信する可能性があります。

フィードバック

私たちは、ユーザーの帯域幅コストを削減し、アップデート配信をより効率的にするためにバンドルdiffingに取り組みました。将来的には、埋め込みバンドルでのdiffingサポートを計画しています。

バンドルdiffingがどのように機能するかお聞かせください。Discordまたはウェブサイトからご連絡いただければ、どのようにお手伝いできるかお知らせします。

より小さなOTAアップデートを配信:SDK 55のEAS Updateにbundle diffingが登場 | Expo | DocsDigest