---
name: Android SDK
slug: launchdarkly-android-sdk
type: github
source_url: https://github.com/launchdarkly/android-client-sdk
changelog_url: https://github.com/launchdarkly/android-client-sdk/blob/HEAD/CHANGELOG.md
organization: LaunchDarkly
organization_slug: launchdarkly
total_releases: 100
latest_version: 5.13.2
latest_date: 2026-07-10
last_updated: 2026-07-14
tracking_since: 2016-09-29
canonical: https://releases.sh/launchdarkly/launchdarkly-android-sdk
organization_url: https://releases.sh/launchdarkly
---

<Summary type="rolling" window-days="90" release-count="2">
The SDK shifted focus toward improving context handling and event reporting. It added support for per-context summary events to give finer-grained visibility into flag evaluation across different user contexts, then patched an initialization issue where identify hooks weren't firing during setup.
</Summary>

<Summary type="monthly" period="March 2026" release-count="1">
Ensured identify hooks fire during initialization, fixing a timing issue where hooks were skipped on app startup.
</Summary>

<Release version="5.13.2" date="July 10, 2026" published="2026-07-10T15:03:19.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.13.2">
## v5.13.2

## [5.13.2](https://github.com/launchdarkly/android-client-sdk/compare/5.13.1...5.13.2) (2026-07-10)


### Bug Fixes

* coalesce SharedPreferences writes to reduce memory pressure ([#374](https://github.com/launchdarkly/android-client-sdk/issues/374)) ([bc82217](https://github.com/launchdarkly/android-client-sdk/commit/bc822173db3c80b3d73ce5e3dd72d7f95920ea6b))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.13.1" date="June 9, 2026" published="2026-06-09T21:05:27.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.13.1">
## v5.13.1

## [5.13.1](https://github.com/launchdarkly/android-client-sdk/compare/5.13.0...5.13.1) (2026-06-09)


### Bug Fixes

* remove deprecation marker from LDConfig.Builder.plugins ([1c681c2](https://github.com/launchdarkly/android-client-sdk/commit/1c681c25d5dd8216a158166acea6a34685771dd1))
* remove deprecation marker from LDConfig.Builder.plugins ([#371](https://github.com/launchdarkly/android-client-sdk/issues/371)) ([2446924](https://github.com/launchdarkly/android-client-sdk/commit/24469242522547bcfaaabb2352045378a6373c22))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.13.0" date="June 8, 2026" published="2026-06-08T15:05:02.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.13.0">
## v5.13.0

## [5.13.0](https://github.com/launchdarkly/android-client-sdk/compare/5.12.2...5.13.0) (2026-06-08)


### Features

* **experimental:** Android Client SDK FDv2 EAP ([#369](https://github.com/launchdarkly/android-client-sdk/issues/369)) ([2597ad8](https://github.com/launchdarkly/android-client-sdk/commit/2597ad8dcce4a4cf38f5b1fa0c902123191b21a3))

## Data Saving Mode EAP

This release adds support for our second generation flag delivery protocol, also known as data-saving mode.

This SDK version uses the first generation flag delivery protocol unless you explicitly configure the new protocol.

Support for the new protocol is defined by a data system configuration. Setting a data system via `Components.dataSystem()` enables the new protocol.

The data system supports more flexible configuration for **initializers** (how the SDK gets an initial payload) and **synchronizers** (how it stays up to date).

> **This is an Early Access feature.** The `dataSystem` configuration surface is subject to change without notice and is not covered by the SDK's semantic-versioning guarantees until it graduates to GA. Existing applications that do not call `.dataSystem(...)` are unaffected.

## Configuration

Several predefined data system configurations are available depending on how you deploy the SDK. The Android Client SDK exposes the data system through the same `ConnectionMode` enum it already uses; the syntactic shape differs from the server SDKs because Android retains its existing foreground/background lifecycle semantics under FDv2. See [Automatic mode switching](#automatic-mode-switching) below.

### Default

This is the LaunchDarkly-recommended default. It uses a two-phase strategy for initialization and includes fallbacks for synchronization in each connection mode.

The SDK gets an initial payload with a single request to the polling endpoints, then keeps it up to date via streaming in the foreground. If that initial polling request fails, the SDK can still initialize via streaming once it enters synchronization. During synchronization the SDK can fall back to polling if streaming has problems. The SDK automatically switches to polling in the background and during network changes.

```java
LDConfig config = new LDConfig.Builder(AutoEnvAttributes.Enabled)
    .mobileKey("my-key")
    .dataSystem(Components.dataSystem())
    .build();
```

### Polling only or streaming only

You can configure the SDK to use only polling or only streaming in the foreground. This is not the recommended mode, and fewer fallbacks are available. To prevent the SDK from switching modes based on app lifecycle or network state, disable automatic mode switching:

Polling:

```java
LDConfig config = new LDConfig.Builder(AutoEnvAttributes.Enabled)
    .mobileKey("my-key")
    .dataSystem(
        Components.dataSystem()
            .automaticModeSwitching(AutomaticModeSwitchingConfig.disabled())
            .foregroundConnectionMode(ConnectionMode.POLLING))
    .build();
```

Streaming:

```java
LDConfig config = new LDConfig.Builder(AutoEnvAttributes.Enabled)
    .mobileKey("my-key")
    .dataSystem(
        Components.dataSystem()
            .automaticModeSwitching(AutomaticModeSwitchingConfig.disabled())
            .foregroundConnectionMode(ConnectionMode.STREAMING))
    .build();
```

In streaming-only mode, polling may still be used if we need to disable the second generation protocol. In that case the data system is told to fall back to our v1 protocol and uses polling to do so.

### Offline

The top-level `offline(true)` configuration applies to the data system.

```java
LDConfig config = new LDConfig.Builder(AutoEnvAttributes.Enabled)
    .mobileKey("my-key")
    .offline(true)
    .build();
```

If both `offline(true)` and a data system (for example `Components.dataSystem()`) are set, the data system's initializers and synchronizers are not used.

```java
LDConfig config = new LDConfig.Builder(AutoEnvAttributes.Enabled)
    .mobileKey("my-key")
    .offline(true)
    .dataSystem(Components.dataSystem())
    .build();
```

### Custom configuration

For advanced use cases, you can customize the initializers and synchronizers used by a specific `ConnectionMode`. This is the Android equivalent of the `custom()` data system configuration in the server SDKs: per-mode initializers and synchronizers built from `DataSystemComponents`.

For example, polling once every six hours when the app is in the background:

```java
LDConfig config = new LDConfig.Builder(AutoEnvAttributes.Enabled)
    .mobileKey("my-key")
    .dataSystem(
        Components.dataSystem()
            .customizeConnectionMode(ConnectionMode.BACKGROUND,
                DataSystemComponents.customMode()
                    .initializers(DataSystemComponents.pollingInitializer())
                    .synchronizers(
                        DataSystemComponents.pollingSynchronizer()
                            .pollIntervalMillis(21_600_000))))
    .build();
```

### Automatic mode switching

Under FDv2 the `ConnectionMode` enum carries the same meaning it has today — the SDK still tracks foreground/background lifecycle, still respects network connectivity changes, and still exposes the same status surface. What changes is the data pipeline that backs each mode: per-mode initializers and synchronizers drawn from `DataSystemComponents` rather than the FDv1 polling/streaming components from `Components.pollingDataSource()` / `Components.streamingDataSource()`.

To disable automatic switching entirely, keeping the SDK in a single mode regardless of lifecycle or network changes:

```java
LDConfig config = new LDConfig.Builder(AutoEnvAttributes.Enabled)
    .mobileKey("my-key")
    .dataSystem(
        Components.dataSystem()
            .automaticModeSwitching(AutomaticModeSwitchingConfig.disabled())
            .foregroundConnectionMode(ConnectionMode.STREAMING))
    .build();
```

To disable lifecycle switching but keep network-driven switching:

```java
LDConfig config = new LDConfig.Builder(AutoEnvAttributes.Enabled)
    .mobileKey("my-key")
    .dataSystem(
        Components.dataSystem()
            .automaticModeSwitching(
                DataSystemComponents.automaticModeSwitching()
                    .lifecycle(false)
                    .network(true)
                    .build()))
    .build();
```

### Mutually exclusive with `dataSource(...)`

`LDConfig.Builder.dataSystem(...)` and `LDConfig.Builder.dataSource(...)` are mutually exclusive. The data system uses FDv2; `dataSource()` uses the legacy FDv1 protocol. If you call both, the last call wins.

</Release>

<Release version="5.12.2" date="June 3, 2026" published="2026-06-03T19:52:45.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.12.2">
## v5.12.2

## [5.12.2](https://github.com/launchdarkly/android-client-sdk/compare/5.12.1...5.12.2) (2026-06-03)


### Bug Fixes

* set 401 guard before notifying error callback to prevent restart race ([d875b00](https://github.com/launchdarkly/android-client-sdk/commit/d875b00b2a22cda4ca94eb7c2a04ab308518ab12))
* set 401 guard before notifying error callback to prevent restart race ([#362](https://github.com/launchdarkly/android-client-sdk/issues/362)) ([24b2f38](https://github.com/launchdarkly/android-client-sdk/commit/24b2f384c4ce460ab4088f73c28c9c4c870ab7b8))
* set connection401Error before invoking resultCallback in onError ([#332](https://github.com/launchdarkly/android-client-sdk/issues/332)) ([6fb1b85](https://github.com/launchdarkly/android-client-sdk/commit/6fb1b85506614078edccfe918d8011233e9894fc))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.12.1" date="June 2, 2026" published="2026-06-02T21:37:16.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.12.1">
## v5.12.1

## [5.12.1](https://github.com/launchdarkly/android-client-sdk/compare/5.12.0...5.12.1) (2026-06-02)


### Bug Fixes

* track order processing to forward according contracts ([#358](https://github.com/launchdarkly/android-client-sdk/issues/358)) ([d4218a7](https://github.com/launchdarkly/android-client-sdk/commit/d4218a75304669c769c1f774f9d0cf1180649dd7))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.12.0" date="April 29, 2026" published="2026-04-29T17:39:44.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.12.0">
## v5.12.0

## [5.12.0](https://github.com/launchdarkly/android-client-sdk/compare/5.11.2...5.12.0) (2026-04-29)


### Features

* remove kotlin ([#353](https://github.com/launchdarkly/android-client-sdk/issues/353)) ([5e332a8](https://github.com/launchdarkly/android-client-sdk/commit/5e332a8fa6c2fd016d01a829b877c1f2575a4fe0))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.11.2" date="April 29, 2026" published="2026-04-29T13:07:07.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.11.2">
## v5.11.2

## [5.11.2](https://github.com/launchdarkly/android-client-sdk/compare/5.11.1...5.11.2) (2026-04-29)


### Miscellaneous Chores

* releasing version with DataSystem hidden in preparation for FDv2 EAP ([2f10f8d](https://github.com/launchdarkly/android-client-sdk/commit/2f10f8d498f06e74470529445d9a9a4b386fc335))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.11.1" date="March 23, 2026" published="2026-03-23T20:52:50.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.11.1">
## v5.11.1

## [5.11.1](https://github.com/launchdarkly/android-client-sdk/compare/5.11.0...5.11.1) (2026-03-23)


### Bug Fixes

* Call identify hooks during init. ([#331](https://github.com/launchdarkly/android-client-sdk/issues/331)) ([a09cb57](https://github.com/launchdarkly/android-client-sdk/commit/a09cb571f60a6573bbf13bb484a4ccda3feacc06))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.11.0" date="February 13, 2026" published="2026-02-13T21:17:05.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.11.0">
## v5.11.0

## [5.11.0](https://github.com/launchdarkly/android-client-sdk/compare/5.10.0...5.11.0) (2026-02-13)


### Features

* Add support for per-context summary events. ([#320](https://github.com/launchdarkly/android-client-sdk/issues/320)) ([c5f078f](https://github.com/launchdarkly/android-client-sdk/commit/c5f078fd62df7dea367510f64c975eef4f06d208))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.10.0" date="December 11, 2025" published="2025-12-11T19:59:48.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.10.0">
## v5.10.0

## [5.10.0](https://github.com/launchdarkly/android-client-sdk/compare/5.9.2...5.10.0) (2025-12-11)


### Features

* Add plugins registration result handling ([#318](https://github.com/launchdarkly/android-client-sdk/issues/318)) ([ea4a41c](https://github.com/launchdarkly/android-client-sdk/commit/ea4a41c63a58d5a46ed519033796e1777b61818c))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.9.2" date="October 17, 2025" published="2025-10-17T20:52:34.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.9.2">
## v5.9.2

## [5.9.2](https://github.com/launchdarkly/android-client-sdk/compare/5.9.1...5.9.2) (2025-10-17)


### Bug Fixes

* bumping gson to incorporate fixes and improvements ([#312](https://github.com/launchdarkly/android-client-sdk/issues/312)) ([9ee3537](https://github.com/launchdarkly/android-client-sdk/commit/9ee3537d62d6a2a0cb1ba9feadc5bf31d73724b0))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
</Release>

<Release version="5.9.1" date="July 21, 2025" published="2025-07-21T20:21:58.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.9.1">
## v5.9.1

## [5.9.1](https://github.com/launchdarkly/android-client-sdk/compare/5.9.0...5.9.1) (2025-07-21)


### Bug Fixes

* prevent flag change listener from being invoked with null flag key ([#307](https://github.com/launchdarkly/android-client-sdk/issues/307)) ([feada66](https://github.com/launchdarkly/android-client-sdk/commit/feada66ffde8834ad03d471a2d805888bed38908))
</Release>

<Release version="5.9.0" date="July 16, 2025" published="2025-07-16T13:32:37.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.9.0">
## v5.9.0

## [5.9.0](https://github.com/launchdarkly/android-client-sdk/compare/5.8.0...5.9.0) (2025-07-16)


### Features

* adds experimental plugin functionality ([#305](https://github.com/launchdarkly/android-client-sdk/issues/305)) ([2bca41b](https://github.com/launchdarkly/android-client-sdk/commit/2bca41b1ca93d35900b024a5083129b894d1017d))
</Release>

<Release version="5.8.0" date="May 27, 2025" published="2025-05-27T15:23:06.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.8.0">
## v5.8.0

## [5.8.0](https://github.com/launchdarkly/android-client-sdk/compare/5.7.0...5.8.0) (2025-05-27)


### Features

* Add hooks support ([#300](https://github.com/launchdarkly/android-client-sdk/issues/300)) ([f5fb5cf](https://github.com/launchdarkly/android-client-sdk/commit/f5fb5cf7bbb0aaf2fe28326acec91a3be916ed16))
</Release>

<Release version="5.7.0" date="May 19, 2025" published="2025-05-19T17:29:04.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.7.0">
## v5.7.0

## [5.7.0](https://github.com/launchdarkly/android-client-sdk/compare/5.6.1...5.7.0) (2025-05-19)


### Features

* Add support for inline contexts for custom events ([#296](https://github.com/launchdarkly/android-client-sdk/issues/296)) ([7ea838f](https://github.com/launchdarkly/android-client-sdk/commit/7ea838ff3f55c2b511c0ed5ffbbcb8112bf48fa8))
</Release>

<Release version="5.6.1" date="January 21, 2025" published="2025-01-21T17:14:47.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.6.1">
## v5.6.1

## [5.6.1](https://github.com/launchdarkly/android-client-sdk/compare/5.6.0...5.6.1) (2025-01-21)


### Bug Fixes

* correcting protocol parsing logic that may lead to incorrect sanitization of an incoming message from LD servers ([#288](https://github.com/launchdarkly/android-client-sdk/issues/288)) ([9969148](https://github.com/launchdarkly/android-client-sdk/commit/996914893f84422de55681d3a4e065c528cdaffd))
</Release>

<Release version="5.6.0" date="January 8, 2025" published="2025-01-08T18:09:43.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.6.0">
## v5.6.0

## [5.6.0](https://github.com/launchdarkly/android-client-sdk/compare/5.5.0...5.6.0) (2025-01-08)


### Features

* polling data source now supports one shot configuration ([a995a4e](https://github.com/launchdarkly/android-client-sdk/commit/a995a4e0fae91552e563e4235970f933292d7be8))


### Bug Fixes

* polling data source no longer reports initialized=true incorrectly when rate limiting delays first poll ([a995a4e](https://github.com/launchdarkly/android-client-sdk/commit/a995a4e0fae91552e563e4235970f933292d7be8))
</Release>

<Release version="5.5.0" date="November 22, 2024" published="2024-11-22T23:42:38.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.5.0">
## v5.5.0

## [5.5.0](https://github.com/launchdarkly/android-client-sdk/compare/5.4.0...5.5.0) (2024-11-22)


### Features

* honor polling interval across process restarts ([#282](https://github.com/launchdarkly/android-client-sdk/issues/282)) ([9b3ca70](https://github.com/launchdarkly/android-client-sdk/commit/9b3ca7002394a14641929974ceb7b2d2c0f34952))
</Release>

<Release version="5.4.0" date="October 18, 2024" published="2024-10-18T14:50:28.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.4.0">
## v5.4.0

## [5.4.0](https://github.com/launchdarkly/android-client-sdk/compare/5.3.1...5.4.0) (2024-10-18)


### Features

* Adds support for client-side prerequisite events ([#279](https://github.com/launchdarkly/android-client-sdk/issues/279)) ([8d59b96](https://github.com/launchdarkly/android-client-sdk/commit/8d59b9605560724df26598961e9b69fc1bd1820c))
</Release>

<Release version="5.3.1" date="July 10, 2024" published="2024-07-10T18:08:55.000Z" url="https://github.com/launchdarkly/android-client-sdk/releases/tag/5.3.1">
## v5.3.1

## [5.3.1](https://github.com/launchdarkly/android-client-sdk/compare/5.3.0...5.3.1) (2024-07-10)


### Bug Fixes

* registered LDStatusListeners are now sent updates that result from a call to LDClient.identify(...) ([#274](https://github.com/launchdarkly/android-client-sdk/issues/274)) ([a648213](https://github.com/launchdarkly/android-client-sdk/commit/a648213dfd6b7f50a76f7a8160f07e62628aedbb))
</Release>

<Pagination cursor="2024-07-10T18:08:55.000Z|2026-04-11T13:44:08.077Z|rel_QwvDXlS89rh9-h8SXfz-s" next="https://releases.sh/launchdarkly/launchdarkly-android-sdk.md?cursor=2024-07-10T18%3A08%3A55.000Z%7C2026-04-11T13%3A44%3A08.077Z%7Crel_QwvDXlS89rh9-h8SXfz-s&limit=20" />
