Stay organized with collections Save and categorize content based on your preferences.


@Retention(value = CLASS)
@Target(value = )
@RequiresOptIn(level = RequiresOptIn.Level.ERROR)
public annotation UnstableApi

Signifies that a public API (class, method or field) is subject to incompatible changes, or even removal, in a future release.

The presence of this annotation implies nothing about the quality or performance of the API in question, only the fact that it is not "API-frozen."

This library follows semantic versioning and the stable API forms the 'public' API for the purposes of the versioning rules. Therefore an API bearing this annotation is exempt from any compatibility guarantees implied by the semantic versioning rules.

It is generally safe for applications to depend on unstable APIs, at the cost of some extra work during upgrades. However it is generally inadvisable for libraries (which get included on users' CLASSPATHs, outside the library developers' control) to do so.

Opting in to use unstable APIs

By default usages of APIs annotated with this annotation generate lint errors in Gradle and Android Studio, in order to alert developers to the risk of breaking changes.

Individual usage sites can be opted-in to suppress the lint error by using the annotation.

In Java:

import androidx.annotation.OptIn;
import androidx.media3.common.util.UnstableApi;
= UnstableApi.class)
private void methodUsingUnstableApis() { ... }

In Kotlin:

import androidx.annotation.OptIn
import androidx.media3.common.util.UnstableApi

private fun methodUsingUnstableApis() { ... }

Whole projects can be opted-in by suppressing the specific lint error in their lint.xml file:

<?xml version="1.0" encoding="utf-8"?>
  <issue id="UnsafeOptInUsageError">
        regexp='\(markerClass = androidx\.media3\.common\.util\.UnstableApi\.class\)' />