Skip to content

feat(live-update): Support downloading a specific bundle by channel and bundle ID #802

@bradenbiz

Description

@bradenbiz

Plugin(s)

  • Accelerometer
  • Age Signals
  • Android Battery Optimization
  • Android Dark Mode Support
  • Android Edge-to-Edge Support
  • Android Foreground Service
  • App Review
  • App Shortcuts
  • App Update
  • Apple Sign-In
  • Asset Manager
  • Audio Player
  • Audio Recorder
  • Background Task
  • Badge
  • Barometer
  • Biometrics
  • Bluetooth Low Energy
  • Cloudinary
  • Contacts
  • Datetime Picker
  • File Compressor
  • File Opener
  • File Picker
  • Geocoder
  • Google Sign-In
  • libSQL
  • Live Update
  • Managed Configurations
  • Media Session
  • NFC
  • OAuth
  • Pedometer
  • Photo Editor
  • Posthog
  • Purchases
  • Printer
  • RealtimeKit
  • Secure Preferences
  • Screen Orientation
  • Screenshot
  • Speech Recognition
  • Speech Synthesis
  • Share Target
  • Square Mobile Payments
  • SQLite
  • Superwall
  • Torch
  • Zip

Current problem

I want to load a specific bundle from a channel and there's no way to do it. sync({ channel }) only ever downloads the latest bundle — if I want an older bundle from the same channel, it's simply not possible unless it happens to already be cached on the device from a previous sync.

Preferred solution

Add support for downloading a specific bundle by channel and bundle ID:

downloadBundle({ channel: '2.3.4-test', bundleId: 'hg78372js-23f4-5678-bh8u-12345j12d1d1' })

Requiring both ensures the bundle is looked up within the correct channel, which mirrors how bundles are organized in Capawesome Cloud.

Alternatively, add fetchBundle({ channel, bundleId }) (similar to fetchLatestBundle) that returns the metadata (including downloadUrl) for a specific bundle, so the caller can then pass it to the existing downloadBundle. This would follow the two-step pattern already established by fetchLatestBundle + downloadBundle.

Alternative options

The existing downloadBundle({ bundleId, url }) could work, but there's no way to retrieve the download URL for a specific bundle programmatically through the plugin. Getting it would require making direct HTTP calls to the Capawesome Cloud REST API outside of the plugin, which is exactly the kind of thing the plugin is supposed to abstract away.

Additional context

The use case I'm looking to fulfill with this is a debug/QA workflow where we want to load a specific known build on a device — for example, testing a feature build that isn't currently at the head of its channel, or rolling back to a specific previous bundle that one of our users is experiencing bugs on. There is currently no way to target an older bundle by ID without it already being cached locally, which it may or may not be, depending on the device being used.

Before submitting

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions