---
"@context": https://schema.org
"@type": TechArticle
"@id": https://www.twilio.com/docs/segment/connections/sources/mobile_guide#article
headline: "Mobile Guide: Connecting Mobile Sources"
url: https://www.twilio.com/docs/segment/connections/sources/mobile_guide
inLanguage: en
dateModified: 2026-06-25T22:35:15.000Z
author:
  "@type": Organization
  name: Twilio Developer Education Team
publisher:
  "@type": Organization
  name: Twilio
---

# Mobile Guide: Connecting Mobile Sources

## About mobile connection modes

Segment defaults to using cloud-based [connection mode](/docs/segment/connections/destinations/#connection-modes) ("cloud-mode") for any destination connected to a mobile source, because this can help decrease the size of your final app package. When you use cloud-mode, Segment sends messages to the Segment servers, and then translates and forwards that data on to the downstream tools. This way, you only package the Segment mobile library with your app.

However, many destination tools that specifically deal with mobile interactions require that you use a device-based connection mode ("device-mode") so that they can collect information directly on the mobile device. (You can check the full list of destinations and [which connection modes they support](/docs/segment/connections/destinations/cmodes-compare/).)

If you plan to use destinations that require device-mode, you must [package the Segment-integration version of that tool's SDK](#packaging-device-mode-destination-sdks) along with the Segment source library in your app. The Segment-integration SDK allows you to still collect the data with Segment, but also enables any device-based features, and still saves you space.

When you package a tool's device-mode SDK with the Segment SDK, Segment sends the data directly to the tool's API endpoint. Segment then also adds the tool [to the `integrations` object](/docs/segment/guides/filtering-data/#filtering-with-the-integrations-object) and sets it to `false`, so that the data is not sent a second time from Segment servers.

For example, if you bundled the Segment SDK and Segment-Intercom library, you would see this in your payload:

```json
"integrations": {
  "Intercom": false
  },
```

When you package Segment and the Segment-integration SDKs, you *must* use a dependency manager (such as Cocoapods or Gradle) to ensure that all SDKs are compatible and all of their dependencies are included. Segment does not support bundling mobile SDKs without a dependency manager.

### Packaging Device-mode destination SDKs

Find the instructions for packaging (or bundling) mobile SDKs in the documentation for each library:

* [iOS](/docs/segment/connections/sources/catalog/libraries/mobile/ios/#packaging-device-mode-destination-sdks)
* [Android](/docs/segment/connections/sources/catalog/libraries/mobile/android/#packaging-device-mode-destination-sdks)
* [React Native](/docs/segment/connections/sources/catalog/libraries/mobile/react-native/#packaging-destinations-using-device-mode)

## Bundled SDKs vs. cloud-mode destinations for mobile

Segment's core Mobile SDKs are small and offload as much destination-handling work as possible to Segment's servers. When you install the lightweight SDK, you have access to Segment's entire suite of server-side destinations.

### Why do some destinations require bundling their SDKs?

Segment bundles certain SDKs (instead of sending your data to them from its servers) so that you have access to features that require direct client access, such as A/B testing, user surveys, and touch heatmapping, or access to device data such as CPU usage, network data, or uncaught and raised exceptions. For those features, Segment bundles the destination's native SDK.

The mobile SDKs are modular, so you only need to include the SDKs for the tools you plan to use. These lightweight Segment-tool-SDKs provide the native functionality of all destinations without including hefty third-party SDKs by default. This gives you control over size and helps prevent method bloat.

Learn how to use custom builds for [Android](/docs/segment/connections/sources/catalog/libraries/mobile/android/quickstart/) and [iOS](/docs/segment/connections/sources/catalog/libraries/mobile/ios/quickstart/).

### Which destination's SDKs can be bundled?

To check whether a destination can be bundled, look at the [connection modes reference page](/docs/segment/connections/destinations/cmodes-compare/) and find the line for that specific destination.

If a destination has a checkmark in the "Device - Mobile" column, it can be bundled.
