> For the complete documentation index, see [llms.txt](https://docs.luciq.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.luciq.ai/changelog/android-sdk.md).

# Android SDK

{% updates format="full" %}
{% update date="2026-06-09" %}

## v19.8.0

#### Features

* Added the ability to start a new session on logout so each user identity gets an isolated session, ensuring activity is attributed to the correct user. This is disabled by default — reach out to customer support team to enable it.

#### Bug Fixes

* Fixes a rare ANR that could occur at crash time due to a lock-ordering deadlock while a session was being ended.
* Fixes SDK diagnostic events — including network and Session Replay logs — being silently dropped on obfuscated (release) builds.
* Fixes an empty (0-byte) `luciq_config.json` bundled in the SDK that could break post-build security / app-shielding tools.
  {% endupdate %}

{% update date="2026-06-03" %}

## v19.7.1

#### Features

* Adds the `setCapturingContainerEnabled` API to control whether container screens (Activities, Fragments, and DialogFragments) generate Repro Steps screenshots.

#### Bug Fixes

* Fixes a rare crash during screenshot capture when an Activity is being destroyed.
  {% endupdate %}

{% update date="2026-05-13" %}

## v19.7.0

#### Features

* Adds the `setViewsContentCaptureEnabled` API to redact User Steps and Repro Steps content.
* Adds support for `params` in user events.
* Adds a Gradle configuration to automatically capture Jetpack Compose screens as `APM` screens.

```kotlin
luciq {
  showAutoComposableAsScreen = true
}
```

#### Enhancements

* Adds support for per-variant Luciq app tokens in the `luciq-crash` Gradle plugin.
* Optimizes console log lock contention that could block the main thread and cause ANRs.

#### Bug Fixes

* Fixes an ANR caused by thread-safety race in `OkHttp` network logging under concurrent traffic.
* Fixes data capture in the `inapp_webview` plugin by instrumenting `WebView` subclasses.
* Fixes OOM crashes in long background sessions by applying backoff on sync failure.
  {% endupdate %}

{% update date="2026-04-29" %}

## v19.6.0

#### New Features

* Track user actions in React Native `WebView`s
* Support Screen Loading For React Native

#### Enhancements

* Improve Accessibility in Bug Reporting screen

#### Bug Fixes

* Fix host app crashes caused by `RxJava UndeliverableException`
* Fix deadlock between the `APM` `ServiceLocator.class` monitor and Kotlin `lazy` internal locks which causes ANR in Flutter apps.
* Fix memory leak in screen rendering caused by an unbounded per-instance map and prevent `Window`/`Activity` retention
  {% endupdate %}

{% update date="2026-04-19" %}

## v19.5.1

#### Bug Fixes

* Fixes an ANR that could occur when non-HTTP URL connections, such as `classpath` resource loading via Kotlin reflection, were being intercepted by the network monitor.
* Fixes an ANR that could occur when using the `OkHttp` network interceptor due to concurrent access from multiple threads during a network call.
  {% endupdate %}

{% update date="2026-04-15" %}

## v19.5.0

#### New Features

* Adds support for branching in Custom Surveys.
* Adds NDK symbol upload Gradle task for automated symbol file (`.so`) upload during the build process.

```kotlin
luciq {
   crashReporting {
       appToken = "APP_TOKEN"
       ndkSymbol {
           autoUploadEnabled = true
           apiKey = "API_KEY"
       }
   }
}
```

#### Enhancements

* Adds support for excluding custom URL patterns from `OkHttp` response body capture.

```kotlin
luciq {
   networkInterception {
       enabled = true
       excludeUrlPatterns = listOf(".*chat/stream.*", ".*/events.*", ".*/notifications/live.*")
       okHttp {
           it.enabled = true
       }
   }
}
```

#### Bug Fixes

* Fixes `OkHttp` interceptor breaking streaming/chunked HTTP responses (`SSE`/`event-stream`) by skipping response body buffering for streaming content types.
  {% endupdate %}

{% update date="2026-04-29" %}

## v19.4.1

#### Bug Fixes

* Fix host app crashes caused by `RxJava UndeliverableException`
* Fix memory leak in screen rendering caused by an unbounded per-instance map and prevent `Window`/`Activity` retention
  {% endupdate %}

{% update date="2026-04-01" %}

## v19.4.0

#### Features & Enhancements

* Adds satellite network type detection for Session Profiler and `APM` network logs, providing better visibility into network connectivity.
* Adds Multi-window support in Surveys and Announcements.
* Adds support for `Compose BOM` version `2026.03.00` (`Compose 1.10.5`).
* Improved internal SDK logging and error handling to reduce noise.
  {% endupdate %}

{% update date="2026-03-07" %}

## v19.3.0

#### Features

* Custom Spans in `APM`: Adds support for `CustomSpan` tracking with explicit start and end times.

```kotlin
// Start custom span
val span: CustomSpan? = APM.startCustomSpan(name: string)
// ... do work ...
span?.end()  //end custom span
// Save completed custom span with known start and end date
APM.addCompletedCustomSpan(name: String, startDate: Date, endDate: Date)
```

#### Enhancements

* Adds default masking for `WebView` content to enhance privacy protection.
* Reduces unnecessary error log output when reporting non-fatal exceptions.
* Changes the ADB debug property key from `debug.instabug.apm.app` to `debug.luciq.app`. The old property is still supported as a fallback.

#### Bug Fixes

* Fixes an ANR caused by synchronous `SharedPreferences` access in the `APM` `ContentProvider` during app startup.
* Fixes an ANR caused by Firebase initialization deadlock when Firebase Performance SDK is enabled.
* Fixes a crash that occurs under certain conditions when invoking the SDK via the Floating Action Button.
* Fixes malformed JSON in crash reports when message content exceeds size limits.
* Fixes an issue where `ScreenRendering` traces were incorrectly attributed in specific scenarios.
* Fixes a crash in `Replies` UI that occurs under certain conditions when the screen is closed unexpectedly.
  {% endupdate %}

{% update date="2026-02-19" %}

## v19.2.2

#### Enhancements

* Adds `LogLevel.WARNING` log level for filtering SDK warning logs. This is now the default log level.
* Resolves a security warning by replacing raw SQL construction with parameterized queries in internal diagnostics storage.

#### Bug Fixes

* Fixes a build-time crash in the Gradle plugin when logging ASM bytecode transformations for certain `ClassVisitor` types.
* Fixes an issue where user steps data scraping captured incorrect view IDs for legacy views inside private scope containers.
* Fixes a crash that could occur when displaying chat messages with a null attachment type.
* Fixes potential null pointer exceptions in bug reporting UI when fragment views are accessed after destruction.
  {% endupdate %}

{% update date="2026-01-25" %}

## v19.2.1

#### Bug Fixes

* Fixes an issue where the bug report form could sometimes open twice after a single shake gesture.
* Fixes an issue where surveys and announcements being obscured by the system navigation bar on certain devices.
* Fixes an issue where canceled network requests being incorrectly logged as errors when using the `OkHttp` interceptor.
* Fixes a crash that could occur when accessing device storage on devices where external storage is temporarily unavailable.
* Fixes `NPE` error log that could occur during URL connection interception for certain URL types (`JAR`, `file` protocols).
  {% endupdate %}

{% update date="2026-01-13" %}

## v19.2.0

#### Features

* WebView Monitoring: Added comprehensive `WebView` monitoring to capture performance metrics, user interactions, and network requests from `WebView` components.
  * New API: `Luciq.setWebViewMonitoringEnabled(boolean)`
  * New API: `Luciq.setWebViewUserInteractionsTrackingEnabled(boolean)`
  * New API: `Luciq.setWebViewNetworkTrackingEnabled(boolean)`
  * New build configuration: `luciq { webViewsTrackingEnabled = true }`
* Notification Icon Color API: Introduces `Replies.setNotificationIconColor()` to customize the background color of notification icons.

```kotlin
Replies.setNotificationIconColor(Color.RED)
```

#### Enhancements

* Adds defensive validation to prevent sending corrupt app version data under certain conditions.

#### Bug Fixes

* Fixes a race condition that could cause duplicate chat sync network requests.
* Fixes an issue where proactive bug reporting does not trigger after user termination.
* Fixes a bug causing logs and attachments to go missing with NDK crash reports.
* Fixes `ProtectionLayout` appearing repeatedly on each interaction with `Composable`s when using `androidx.core:core-ktx` `v1.16.0+`.
* Fixes button text color in chats to ensure proper visibility.
* Fixes alert dialogs appearing with a white background in dark mode when using a custom theme.
  {% endupdate %}

{% update date="2025-12-26" %}

## v19.1.0

#### Features

* Session Replay Screenshot Quality Control: New API to adjust the visual quality of captured screenshots.

```kotlin
SessionReplay.setScreenshotQuality(ScreenshotQuality.NORMAL)
```

* Video-like Session Replay (Experimental): Capture screenshots based on user interactions or at fixed intervals for a video-like playback experience.

```kotlin
@OptIn(ExperimentalVideoLikeReplay::class)
fun configureVideoLikeSessionReplay() {
    SessionReplay.setCapturingMode(CapturingMode.FREQUENCY)
    SessionReplay.setScreenshotCaptureInterval(500)
}
```

#### Enhancements

* Feature Flags' keys and values limits are now server-side configurable.
* Introduces actionable user consents for Bug Reporting with a new `ActionType.NO_AUTOMATIC_BUG_GROUPING` action type.

```kotlin
BugReporting.addUserConsent(
    "grouping-consent",
    "Allow grouping similar bugs",
    false, true,
    ActionType.NO_AUTOMATIC_BUG_GROUPING
)
```

#### Bug Fixes

* Fixes a bug where keyboard open/close detection caused cyclic `onGlobalLayout` callbacks when adjusting the bottom sheet margin in Bug Reporting.
  {% endupdate %}

{% update date="2025-12-21" %}

## v19.0.1

#### Bug Fixes

* Fixes a critical incompatibility with Jetpack Compose `v1.9.0+` that could prevent exceptions and crashes from being propagated.
  {% endupdate %}

{% update date="2025-12-11" %}

## v19.0.0

#### Breaking Changes

* Introducing a new, single network interceptor with automatic instrumentation for `OkHttp` and native `UrlConnection`.

```kotlin
// Project-level build.gradle
plugins {
    id("ai.luciq.library") version "$luciqVersion" apply false
}
// app-level build.gradle
plugins {
    id("luciq")
}
luciq {
    networkInterception {
        enabled = true
    }
}
```

* Revamped `APM`'s `UI Hangs` with slow and frozen frames metric.

```kotlin
// Deprecated:
APM.setUIHangEnabled()
// Replace with:
APM.setScreenRenderingEnabled()
```

#### Bug Fixes

* Fixed a race condition causing `android.database.sqlite.SQLiteConstraintException` error to be logged under certain conditions.
  {% endupdate %}

{% update date="2025-11-26" %}

## v18.2.1

#### Enhancements

* Cleaned up and refined logging levels for non-critical events.

#### Bug Fixes

* Fixed incorrect UI translation when the device locale is set to Portuguese (Brazil) `pt_BR`.
* Fixed Out of Memory (OOM) issues during chat messages synchronization by optimizing memory allocation and resource management.
  {% endupdate %}

{% update date="2025-11-13" %}

## v18.2.0

#### Enhancements

* Added support for app variant targeting in Surveys and Announcements.

```kotlin
new Instabug.Builder(this, "APP_TOKEN")
    .setAppVariant("App1")
    .build();
```

* Increased character limit for disclaimer and consent fields in bug reporting to 200 chars.

#### Bug Fixes

* Fixed an issue that caused missing screenshots in Repro Steps for Flutter apps.
* Fixed an issue where the first UI trace wasn't inserted into the database, leading to `SqliteConstraintException` logs.
* Fixed an issue where a white box covered the bug description field on small-screen devices.
* Fixed a Disk Read `StrictMode` violation that occurred when attaching images from the gallery in Bug Reporting.
* Fixed an issue where `BugReporting.setDisclaimerText()` did not apply if called immediately after SDK initialization.
  {% endupdate %}

{% update date="2025-10-31" %}

## v18.1.0

#### Enhancements

* Adds test tags support for `Compose v1.7.+`
* Adds support for `Apollo v4`

#### Bug Fixes

* Fixes missing request and response headers in `NetworkLogSnapshot` when using `APM.registerNetworkLogsListener(listener)`.
* Fixes header changes done using `APM.registerNetworkLogsListener(listener)` not being applied to the captured network data.
* Fixes attributes added using `OnNetworkTraceListener.addAttributesOnFinish()` are not added in some cases.
  {% endupdate %}

{% update date="2025-10-10" %}

## v18.0.1

#### Enhancements

* Optimizes SDK's `UncaughtExceptionHandler` operations to prevent ANRs from occurring while the application is exiting (crashing).
* Mutes a few diagnostics logs to reduce noise in the `logcat`.

#### Bug Fixes

* Fixes an issue where features cache was being stored before features states were properly consumed, which could lead to inconsistent SDK behavior.
* Fixes an issue with email format validation causing malformed emails to be sent with crash reports.
* Fixes a crash (`ActivityNotFoundException`) encountered while attaching extra images to bug reports via Android's new photo picker on some devices.
* Fixes a race condition that causes chats synchronization request to get fired while chats being disabled with `Replies` APIs.
* Fixes an issue that causes interactions tracking for Jetpack Compose screens to yield inaccurate results when an overlay `Composable` is present.
  {% endupdate %}

{% update date="2025-09-23" %}

## v18.0.0

#### Breaking Changes

* SDK rebranded from Instabug to Luciq. To migrate, visit the migration guide for guidance.
  {% endupdate %}
  {% endupdates %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.luciq.ai/changelog/android-sdk.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
