RudderStack Cloud Mode vs. Device Mode

Detailed technical description of the Cloud and Device Modes supported by RudderStack, along with the differences between the two connection modes.

RudderStack is an open source Customer Data Infrastructure (CDI) that allows you to collect your customer event data from a variety of sources, and route it securely to your preferred data warehouse, analytics tools, and dozens of other destinations.

The underlying principle is quite simple - RudderStack receives the event data from a variety of Sources, and routes this data to the Destinations.

RudderStack currently supports over 40 destinations. You can find them in our Destinations Guides. You can also check our Sources Guides to get a list of the sources through which you can send your event data to RudderStack.

Connection Modes in RudderStack

There are two modes in which you can route your event data from your website or mobile app to the desired destinations, through RudderStack:

  • Cloud Mode

  • Device Mode

Cloud Mode

In this mode, the SDK sends the event data directly to RudderStack. RudderStack then transforms this data and routes it to the desired destination. This transformation is done in the RudderStack backend, using the Transformer module.

How It Works

Let's assume you want to analyze your website users' event data using Amplitude, and you've decided to use RudderStack's JavaScript SDK to do so.

RudderStack defines a fixed event structure. If you track your events in this format, RudderStack will take care of transforming the events as required by Amplitude. You can start by adding a source and an Amplitude destination in the RudderStack dashboard. Then, add the RudderStack JavaScript SDK snippet into the web page which you wish to track. And that's all you have to do! The SDK automatically sends the events to RudderStack. These events are then transformed by RudderStack and then routed to Amplitude.

While the above example uses the JavaScript SDK, our Android, iOS, and server-side SDKs also work in the same way.

How Cloud Mode Works

In the Cloud Mode, you get the flexibility to use transformations to enrich the events, or filter selective events to forward to destinations.

Some of the other destinations that currently support only cloud mode are Amplitude, Kochava, Mailchimp, Mixpanel, Salesforce, and Zendesk. Our Data Warehouse Integrations also support only cloud mode.

Please note that all our server-side SDKs (Java, Python, Node.js, Go, Ruby) support only Cloud Mode. This is because our server-side SDKs operate in the RudderStack backend, and cannot load any additional destination-specific SDKs.

Device Mode

Another way you can send your events to the preferred destinations is through using the client-specific libraries on your website or mobile app. These libraries allow RudderStack to use the data you collect on your device to call the destination APIs, without sending it to the RudderStack first.

How It Works

Similar to the example given above, let's assume you want to send your event data from your source mobile apps to Firebase through RudderStack's mobile SDK (Android, iOS, or Unity, depending on your requirement). You can start by adding a source and a Firebase destination in the RudderStack dashboard.

If you enable the Native SDK option on the RudderStack dashboard, the RudderStack SDK will download the Firebase SDK, transform the events and will send them to Firebase for analytics.

How Device Mode Works

Device mode integrations will send data to the destinations directly from your client (browser or mobile application).

Some of the destinations that currently support only device mode are Adjust, Firebase, Hotjar, AppsFlyer, Chartbeat, Google Ads, and Facebook Pixel.

Support for Cloud Mode and Device Mode Both

Some of our destinations support sending event data via both the cloud and device mode. These are Google Analytics, HubSpot, Intercom, Kissmetrics, Branch, Braze, Customer.io, and Facebook App Events. You can choose to integrate these destinations with RudderStack via cloud mode or device mode, depending on your requirement.

Which Connection Mode Should I Choose?

  • Consider using Cloud Mode if you wish to benefit from RudderStack's custom transformation capabilities.

  • If you are planning to work with destinations that record information directly on your users' devices, you can opt for Device Mode. There is a possibility that these destinations might not function correctly if they are not loaded directly on the device.

As you can see, there are some clear benefits as well as trade-offs when using cloud mode (sending the data to your destinations through RudderStack) and device mode (sending the data directly to the destinations in parallel to RudderStack).

How to Check If a Destination Supports Cloud Mode or Device Mode, or Both?

The easiest way to check if a destination supports Cloud mode, Device mode, or both is to go through the individual destination's documentation. We explicitly mention the supported connection modes for every destination in the Getting Started section of each guide. A sample example is as shown:

Checking the Supported Connection Mode for a Destination

Contact Us

To learn more about the connection modes supported by RudderStack, or if you come across any issues while using them with any of our SDKs, feel free to contact us or start a conversation on our Discord channel. We will be happy to help you.