---
title: 3DS Android SDK Changelog
slug: 3ds-android-sdk-changelog
docTags: 
createdAt: 2026-09-24T12:00:00.000Z
---

# 3DS Android SDK Changelog

## \[2.1.0] - 2026-09-24

**Added**

- The SDK now runs the card issuer's 3DS Method automatically in the managed-order flow (`doChallengeIfNeeded`) when the issuer requires it. No code changes are needed.
- Custom domain (CNAME) support: `Forter3DSConfig.Builder.setThirdPartyBaseUrl(...)` sends all 3DS requests through a custom domain provided by Forter. `build()` throws `Forter3DSConfigError` if the value isn't an `https` URL with a host.

**Changed**

- **Breaking:** `IForter3DSChallengeCallback.onChallengeFail()` is now `onChallengeFail(error: Throwable?)`, and receives the failure reason when available. Update your implementation when upgrading.

**Other Changes**

- Improved error diagnostics.

## \[2.0.9] - 2026-06-15

**Fixed**

- Fixed decoding of managed-order tokens that use the URL-safe Base64 alphabet.

## \[2.0.8] - 2026-01-11

**Fixed**

- Improved the reliability of `doChallenge` and `doChallengeIfNeeded`. Challenge callbacks are now delivered on the main thread.

**Changed**

- Deprecated `loadTestServers()`. Use `Forter3DSConfig.Builder.setShouldLoadTestServers(true)` instead.
- Deprecated the SDK logging methods. Logging is now controlled remotely.

## \[2.0.7] - 2025-07-10

**Fixed**

- Fixed an issue where the challenge screen could fail to read its parameters in some app configurations, for example with code shrinking (R8/ProGuard).

## \[2.0.5] - 2025-02-16

**Other Changes**

- Improved the device information sent when the SDK initializes.

## \[2.0.4] - 2024-12-25

**Fixed**

- Fixed a naming conflict when calling `Forter3DS.getInstance()` from Java.

**Other Changes**

- Added consumer ProGuard rules for the embedded Netcetera 3DS SDK.
