> This page is part of the [Customer.io documentation](https://docs.customer.io). For the complete index, see [llms.txt](https://docs.customer.io/llms.txt).
> Last updated: October 27, 2026
> To take actions in Customer.io from an agent, use the [Customer.io CLI](https://docs.customer.io/ai/cli/get-started.md) or the [MCP server](https://docs.customer.io/ai/mcp/get-started.md).

# Upgrade from 3.x to 4.0.0

Version 4.0.0 of the Customer.io Expo plugin requires version 7.0.0 of `customerio-reactnative`, which uses version 5.0.0 of our native iOS and Android SDKs. For most apps, the upgrade is a version bump.

## What changed?

Version 4.0.0 of the Expo plugin requires version 7.0.0 of `customerio-reactnative`, which uses version 5.0.0 of the Customer.io iOS and Android SDKs, and Expo SDK 54 or later. For apps already on Expo SDK 54 or later, this upgrade is a version bump. Your plugin configuration, your app code, and the iOS 15.1 and Android API level 24 minimums stay the same.

On Android, the SDK now brings in `firebase-messaging` 26.0.0, `play-services-base` 18.11.1, and WorkManager (`androidx.work`) 2.12.0. Gradle picks up these versions automatically. If your app forces older versions of these libraries, raise those versions.

Android builds also need `compileSdk` 36 or later and Android Gradle plugin 8.9.1 or later. Expo SDK 54 and later meet these requirements, but Expo SDK 53 doesn’t. See [Minimum requirements](https://docs.customer.io/integrations/sdk/expo/getting-started/how-it-works/#minimum-requirements).

## Upgrade process

1.  If your app is on Expo SDK 53 or earlier, upgrade it to Expo SDK 54 or later first. See Expo’s [SDK upgrade guide ↗](https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/). Apps that stay on SDK 53 or earlier can keep using version 3.x of the plugin.

2.  Install the plugin with version 7.0.0 of `customerio-reactnative`, which is now the plugin’s peer dependency:

    ```
    npx expo install customerio-expo-plugin@4.0.0 customerio-reactnative@7.0.0
    ```

    Later 4.x versions of the plugin can require a later version of `customerio-reactnative`. If npm reports a peer dependency conflict, see [npm version conflict when installing or updating](https://docs.customer.io/integrations/sdk/expo/getting-started/troubleshooting/#npm-version-conflict).

3.  If you keep your `ios` folder between builds, regenerate it:

    ```
    npx expo prebuild --clean
    ```

    Or, from your `ios` folder, run `pod update CustomerIO` once. If you use FCM, add `CioFirebaseWrapper` to that command. If you use live notifications, also add `CustomerIOLiveActivitiesTemplates CustomerIOLiveActivitiesAttributes`. The plugin lists those widget pods without a version, so `pod update CustomerIO` alone leaves them on 4.x. Your `Podfile.lock` still lists the pods from `customerio-reactnative` 6.x, so a plain `pod install` stops with an error.

4.  Rebuild your app.

## Known limitation

React Native Firebase 27 includes Firebase only through Swift Package Manager, so you can’t use it with the `fcm` push provider yet. Version 3.x has the same limitation.
