ClaudeExpoFeb 27, 2026, 7:15 PM

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

A condensed section focused on the key takeaways first.

Original Post

Quick Digest

Summary

A condensed section focused on the key takeaways first.

claudeenmodel: claude-sonnet-4-20250514

EAS Update Bundle Diffing in SDK 55 Reduces Download Sizes by 75%

Key Points

  • 75% reduction in update download sizes
  • Binary patch diffing using bsdiff algorithm
  • Beta feature available in SDK 55+

Summary

SDK 55 introduces bundle diffing for EAS Update, allowing devices to download binary patches instead of full bundles. This feature reduces update download sizes by approximately 75%, improving user experience and reducing bandwidth costs.

Key Points

  • Significant size reduction: Patches are ~75% smaller than full bundles (3MB update becomes ~0.75MB)
  • Smart fallback: EAS Update serves patches only when they're meaningfully smaller and computationally efficient
  • Uses bsdiff algorithm: Industry-standard binary diffing for reliable patch generation
  • Beta feature: Opt-in functionality with current limitations

Configuration

Enable in app.json/app.config.js:

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

Current Limitations

  • Embedded bundles not eligible for patching
  • Devices must run published updates to receive patches
  • Patches generated on-demand for some update pairs
  • Few minutes delay between publishing and patch availability

Full Translation

Translations

A translation section that keeps the flow of the original article.

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またはウェブサイトからご連絡いただければ、どのようにお手伝いできるかお知らせします。