Hi everyone 👋
We’re investigating how to migrate a production iOS app safely from the legacy braze-ios-sdk / Appboy 4.7.0 SDK to the current Braze Swift SDK. We use Swift Package Manager.
Our existing integration covers customer identification, sessions, custom events, user attributes, Content Cards, in-app messages, push notifications and deep links. Our aim is to preserve existing customer profiles and behaviour while moving onto a supported SDK.
We have reviewed the Appboy-to-Braze migration guide, but would appreciate current guidance on the following areas—ideally from a Braze team member where these relate to official support.
1. Supported migration route and target version
- Is a direct migration from Appboy 4.7.0 to the current 17.x SDK supported?
- Is an intermediate version required or recommended?
- If an intermediate migration is appropriate, what is the oldest Swift SDK line still eligible for production support, critical fixes and security guidance?
- Should a new production migration currently target 17.0.0 or a later 17.x patch?
2. Compatibility libraries
- Are
BrazeKitCompat and BrazeUICompat supported for new production migrations on the current 17.x line? - If so, is there a published support or removal horizon for those libraries?
- Are there important limitations to consider when using them as a temporary migration stage?
We understand that switching to the modern Braze(configuration:) initialisation disables the compatibility APIs, so we would keep those stages separate.
3. Consent-aware initialisation
Our app may need to wait until the applicable consent state is known before starting the SDK. This is a technical lifecycle question rather than a request for legal or consent-policy advice.
- Can the compatibility
Appboy.start(...) initialisation APIs safely be called later in the application lifecycle instead of at launch? - Are there minimum SDK versions or limitations affecting in-app messages, Content Cards, push handling or deep links when initialisation is delayed?
4. Swift Package Manager and UI resources
A previous migration attempt to Braze Swift SDK 14.1.0 was reverted after an in-app message caused a runtime crash because braze-swift-sdk_BrazeUI.bundle could not be found.
The missing bundle is confirmed, although we have not proven the precise build-system cause. Our package products now link directly to the application target, and we are separately testing the contents of a representative Release archive.
- Are there known Swift Package Manager resource-embedding requirements or issues for
BrazeUI or BrazeUICompatwhen linked directly to an app target? - Are there particular SDK versions, Xcode settings or archive contents we should check?
5. Customer identity and profile continuity
The legacy integration uses the SDK’s IDFV-based device identity and calls changeUser when customers authenticate. We have separate UK and Ireland authentication paths.
- What validation does Braze recommend to confirm that existing customer profiles, device associations and push tokens are preserved during this migration?
- Are there specific precautions for preventing duplicate profiles or incorrect associations when customers re-identify through separate market-specific authentication paths?
Links to current documentation, known issues or support-lifecycle information would be very helpful. I’m also happy to split this into smaller questions if that would make it easier to answer.
Thanks very much for any guidance!