Upgrade procedure
- Record the currently deployed package and native-library versions.
- Preserve a supported backup of identity and application state.
- Build against the target release and resolve changed APIs.
- Test restart, pending work and mixed-version peer behaviour on representative devices.
- Release to a limited cohort and inspect failures before expanding.
main can contain unreleased features; do not combine generated bindings from one revision with a native library from another.
Runtime changes to qualify
In v0.26, delivery state survives restart, the pending TTL changes from 30 minutes to 24 hours, and deduplication defaults become 2,000 entries retained for 24 hours. Account for the larger retention window in disk and retry budgets. In v0.27, relay group traffic reaches phones. Test group delivery over the relay after upgrading; compilation alone does not exercise these paths.Upgrade from v0.27
Two changes can stop a build and one changes behaviour at run time. The SDK’s UPGRADING §26 lists every change that compiles unchanged and behaves differently.
Also check these run-time changes:
wifiDirect: { enabled: true }now starts the transport fromstart()on both platforms. Before, the setting did nothing withoutenableTransport('wifiDirect'). On iOS the first start shows the Local Network prompt. Remove the setting if you did not mean to run the transport.- On Android 10 and later,
wifiDirect.autoAccept: truenow forms the Wi-Fi Direct group without a system dialog. An app that already set it starts forming groups on upgrade; set it tofalseto keep the old behaviour.groupOwnerIntentis deprecated and unused. - The Android module declares the Wi-Fi Direct permissions. Request
NEARBY_WIFI_DEVICESat run time on Android 13 and later, andACCESS_FINE_LOCATIONon 12 and lower. neighbor_lostfires once, when the last Bluetooth LE or Wi-Fi Direct link to a peer ends. On Android it fires 15 seconds after the last link closes.transport_switchedto Wi-Fi Direct fires when the first link proves a peer, not when the transport starts.- React Native emits a
diagnosticevent withmessage: "native_event_gap"when an event from the native module never reached JavaScript. DiagnosticEvent.levelnow declaresdebug. Android emitswarningwhere four GATT server diagnostics used to saywarn.- Deduplication defaults grow to 5,000 entries retained for 7 days. A config that sets the old values keeps them.
DataStore.setInterestcalled beforestart()is held and applied duringstart(). A refused pattern now rejectsstart(). Declare interests beforestart()on every launch.- Documents are stored and sent only when
flush()orflushAll()runs. Flush on a short throttle while the user edits, and once more when editing stops.
What v0.28.0 adds
The v0.28.0 changelog has every change with its reasoning.
Upgrading to 0.21.0
A native rebuild is required, because new source files are compiled in on both platforms. Runpod install for iOS. A JS-only update will not pick them up.

