# Sprig Device Mode Expands to Kotlin, Swift, and React Native


Sprig device mode now works with all of RudderStack's mobile SDKs — Android (Kotlin), iOS (Swift), React Native — along with the legacy Android (Java) and iOS (Obj-C) SDKs. Now, `identify`, `track`, and `reset` events forward to [Sprig]({{< ref "destinations/streaming-destinations/sprig/" >}}) with identical semantics across every SDK, so you can target and present in-app surveys from whichever RudderStack SDK you use today.

## What's new

- **New Sprig integrations**: Integrations for the Android (Kotlin), iOS (Swift), and React Native SDKs that mirror the same event and identity semantics as the legacy Android (Java) and iOS (Obj-C) integrations.
- **Legacy Android and iOS upgrades**: Legacy Android is upgraded to Sprig `2.23.x` (from `2.16.1`) and legacy iOS is upgraded to Sprig `4.29.x` (from `4.22.3`). There are no RudderStack API changes. See [Sprig's changelog](https://docs.sprig.com/changelog) for details on new Sprig capabilities available in the upgraded versions.
- **Safer survey presentation**: The new integrations handle host-UI edge cases more gracefully — they wait for the main thread, fall back to `track`-only when the host view isn't ready to present, and manage view lifecycles automatically, with fewer crashes and less boilerplate on the app side.

{{< info >}}
Survey presentation still requires the host app to pass a `FragmentActivity` (Android) or `UIViewController` (iOS), including for React Native — where this integration point lives on the native side of the app.
{{< /info >}}

## SDK versions

| <div style="width: 100px;">SDK</div> | Minimum SDK version | Sprig integration |
| :--- | :--- | :--- |
| Android (Kotlin) | `com.rudderstack.sdk.kotlin.android` `1.6.0` | `com.rudderstack.integration.kotlin.sprig` `1.0.0`+ |
| iOS (Swift) | `rudder-sdk-swift` (`RudderStackAnalytics`) `1.2.1` | `RudderIntegrationSprig` `1.0.0`+ |
| React Native | `@rudderstack/rudder-sdk-react-native` `3.1.0` | `@rudderstack/rudder-integration-sprig-react-native` `1.0.0`+ |
| Android (Java) <br/><span style="color:#E11515;font-size:12.5px;">Legacy</span> | `com.rudderstack.android.sdk:core` `1.28.0` | `com.rudderstack.android.integration:sprig` `1.1.0`+ |
| iOS (Obj-C) <br/><span style="color:#E11515;font-size:12.5px;">Legacy</span> | `Rudder` (CocoaPods) `~> 1.29` | `Rudder-Sprig` `1.1.0`+ |

## Resources

See the [Sprig Device Mode Integration]({{< ref "destinations/streaming-destinations/sprig/device-mode.md" >}}) guide for setup instructions across all supported SDKs.
