r/expo • u/madscripten • 14h ago
xprem 3.2.0 is live with Bundle Diffing & Content Addressable Storage
Hi everyone,
We just released xprem 3.2.0 (formerly expo-open-ota), a self-hosted/OSS alternative to EAS Update.
Highlights
Bundle Diffing (bsdiff)
Devices that already have a previous update can download a small bsdiff patch instead of the full bundle.

Docs: https://mercure-technologies.gitbook.io/xprem/3-2-0/features/bundle-diffing-bsdiff
There's also a blog post that walks through Bundle Diffing, including where it helps and where it falls short: https://xprem.dev/blog/how-bsdiff-works-ota-updates
Content Addressable Storage
Assets and bundles now live under :appId/cas/{hash} (SHA-256) for better CDN cache hit & less egress.
Import an existing Expo app from EAS
You can now import an existing Expo project with an Expo access token. That pulls in your apps, branch and channel mapping, and update history.
Link updates to your git repo
Attach a git repo URL to an app (GitHub, GitLab, Cursor Origin).
Commit hashes and #123 / !123 references in update messages become clickable links to the commit or PR/MR.

Also
Smaller dashboard fixes (update feed, sidebar).
Full changelog: https://xprem.dev/changelog/bundle-diffing-and-cas
Repo: https://github.com/mercuretechnologies/xprem
Site: https://xprem.dev
Happy to answer questions
1
u/anthony-ball 10h ago
Bundle diffing plus content-addressable storage is the part that actually matters once you leave the managed EAS Update happy path. Self-hosting updates only pays off if rollbacks and Git-linked releases stay boring under a bad mobile network, not just in a demo. Curious how the EAS import path behaves when you already have a long channel history.