- [feature] Added support for custom signal targeting in Remote Config. Use
setCustomSignals
API for setting custom signals and use them to build custom targeting conditions in Remote Config.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Updated protobuf dependency to
3.25.5
to fix CVE-2024-7254.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Bump internal dependencies
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [fixed] Fixed a bug that could cause a crash if the app was backgrounded while it was listening for real-time Remote Config updates. For more information, see #5751
- [fixed] Fixed an issue that could cause [remote_config] personalizations to be logged early in specific cases.
- [fixed] Fixed an issue where the connection to the real-time Remote Config backend could remain open in the background.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Bump internal dependencies.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Added support for other Firebase products to integrate with [remote_config].
- [changed] Added Kotlin extensions (KTX) APIs from
com.google.firebase:firebase-config-ktx
tocom.google.firebase:firebase-config
under thecom.google.firebase.remoteconfig
package. For details, see the FAQ about this initiative - [deprecated] All the APIs from
com.google.firebase:firebase-config-ktx
have been added tocom.google.firebase:firebase-config
under thecom.google.firebase.remoteconfig
package, and all the Kotlin extensions (KTX) APIs incom.google.firebase:firebase-config-ktx
are now deprecated. As early as April 2024, we'll no longer release KTX modules. For details, see the FAQ about this initiative
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Internal improvements to support Remote Config real-time updates.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [unchanged] Updated to accommodate the release of the updated [remote_config] Kotlin extensions library.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has the following
additional updates.
- [feature] Added the
FirebaseRemoteConfig.configUpdates
Kotlin Flow to listen for real-time config updates.
- [feature] Added support for real-time config updates. To learn more, see Get started with [firebase_remote_config].
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Migrated [remote_config] to use standard Firebase executors.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [unchanged] Updated to accommodate the release of the updated [remote_config] Kotlin extensions library.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has the following
additional updates:
- [feature] Firebase now supports Kotlin coroutines.
With this release, we added
kotlinx-coroutines-play-services
{: .external} tofirebase-config-ktx
as a transitive dependency, which exposes theTask<T>.await()
suspend function to convert aTask
into a Kotlin coroutine.
- [changed] Updated dependency of
play-services-basement
to its latest version (v18.1.0).
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [fixed] Fixed a bug that caused HTTP errors in some locales. For more information, see GitHub Issue #3757
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Added first-open time to [remote_config] server requests.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Updated dependencies of
play-services-basement
,play-services-base
, andplay-services-tasks
to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the note at the top of this release entry.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [fixed] Fixed a bug in the initialization of [remote_config] with a non-primary Firebase app.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Internal infrastructure improvements.
- [changed] Internal changes to support dynamic feature modules.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Improved condition targeting signals.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Standardize support for other Firebase products that integrate with [remote_config].
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [fixed] Fixed an issue that was causing [remote_config] to return the static default value even if a remote value was defined. (#2186)
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Added support for other Firebase products to integrate with [remote_config].
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [removed] Removed the protocol buffer dependency. Also, removed support for configs saved on device using the legacy protocol buffer format (the SDK stopped using this legacy format starting with [remote_config] v16.3.0).
- [removed] Removed the deprecated synchronous method
FirebaseRemoteConfig.activateFetched()
. Use the asynchronousFirebaseRemoteConfig.activate()
instead. - [removed] Removed the deprecated synchronous methods
FirebaseRemoteConfig.setDefaults(int)
andFirebaseRemoteConfig.setDefaults(Map<String,Object>)
. Use the asynchronousFirebaseRemoteConfig.setDefaultsAsync(int)
andFirebaseRemoteConfig.setDefaultsAsync(Map<String,Object>)
instead. - [removed] Removed the deprecated synchronous method
FirebaseRemoteConfig.setConfigSettings(FirebaseRemoteConfigSettings)
. Use the asynchronousFirebaseRemoteConfig.setConfigSettingsAsync(FirebaseRemoteConfigSettings)
instead. - [removed] Removed the deprecated method
FirebaseRemoteConfig.getByteArray(String)
. UseFirebaseRemoteConfig.getString(String)
instead. - [removed] Removed the deprecated methods
FirebaseRemoteConfigSettings.isDeveloperModeEnabled()
andFirebaseRemoteConfigSettings.Builder.setDeveloperModeEnabled(boolean)
. UseFirebaseRemoteConfigSettings#getMinimumFetchIntervalInSeconds()
andFirebaseRemoteConfigSettings.Builder#setMinimumFetchIntervalInSeconds(long)
instead.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
-
[changed] Migrated to use the [firebase_installations] service directly instead of using an indirect dependency via the Firebase Instance ID SDK.
{% include "docs/reference/android/client/_includes/_iid-indirect-dependency-solutions.html" %}
-
[changed] Updated the protocol buffer dependency to the newer
protobuf-javalite
artifact. The new artifact is incompatible with the old one, so this library needed to be upgraded to avoid conflicts. No developer action is necessary.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Updated dependency on the Firebase Instance ID library to v20.1.5, which is a step towards a direct dependency on the Firebase installations service in a future release.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [fixed] Fixed an issue where
FirebaseRemoteConfig.fetch()
would sometimes report a misformatted language tag.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [fixed] Resolved known issue where
FirebaseRemoteConfigSettings.Builder.setFetchTimeoutInSeconds()
was not always honored.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Updated
FirebaseRemoteConfig.fetch()
implementation to useFirebaseInstanceId.getInstanceId()
in favor of the deprecatedFirebaseInstanceId.getToken()
.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [changed] Added getters to the fields of the
FirebaseRemoteConfigSettings.Builder
object to provide better Kotlin patterns.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [fixed] Resolved known issue where network calls may fail on devices using API 19 and earlier.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [fixed] Resolved known issue where the [firebase_remote_config] SDK threw an error when Android StrictMode was turned on.
- [fixed] Resolved issue where setting Byte Arrays via
FirebaseRemoteConfig.setDefaultsAsync(int)
,FirebaseRemoteConfig.setDefaultsAsync(Map<String,Object>)
and their synchronous counterparts would causegetByteArray
to return an object reference instead of the Byte Array. Byte Arrays set via the Firebase console were unaffected by this bug.
The Kotlin extensions library transitively includes the updated
firebase-config
library. The Kotlin extensions library has no additional
updates.
- [unchanged] Updated to accommodate the release of the [remote_config] Kotlin extensions library.
- [feature] The beta release of a [remote_config] Android library with
Kotlin extensions is now available. The Kotlin extensions library transitively
includes the base
firebase-config
library. To learn more, visit the [remote_config] KTX documentation.
- [fixed] Resolved known issue where certain unicode characters were not encoded correctly. The issue was introduced in v19.0.0.
- [changed] Versioned to add nullability annotations to improve the Kotlin developer experience. No other changes.
- [feature] Added an asynchronous way to set config settings:
FirebaseRemoteConfig.setConfigSettingsAsync(FirebaseRemoteConfigSettings)
. - [feature] Added
FirebaseRemoteConfigServerException
andFirebaseRemoteConfigClientException
to provide more nuanced error reporting. - [changed] Updated all "cache expiration" references to "minimum fetch interval" and "cache" references to "local storage".
- [deprecated] Deprecated developer mode. Use
FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(0L)
instead. - [deprecated] Deprecated the synchronous
FirebaseRemoteConfig.setConfigSettings(FirebaseRemoteConfigSettings)
. Use the asynchronousFirebaseRemoteConfig.setConfigSettingsAsync(FirebaseRemoteConfigSettings)
instead. - [deprecated] Deprecated
FirebaseRemoteConfigFetchException
. Use the more granularFirebaseRemoteConfigServerException
andFirebaseRemoteConfigClientException
instead. - [removed] Removed all namespace methods.
- [removed] Removed all default constructors for Exception classes.
- [changed] Updated minSdkVersion to API level 16.
- [feature] Enabled multi-App support. Use
FirebaseRemoteConfig.getInstance(FirebaseApp)
to retrieve a singleton instance ofFirebaseRemoteConfig
for the givenFirebaseApp
. - [feature] Added a method that fetches configs and activates them:
FirebaseRemoteConfig.fetchAndActivate()
. - [feature] Network connection timeout for fetch requests is now customizable. To set the network timeout, use
FirebaseRemoteConfigSettings.Builder.setFetchTimeoutInSeconds(long)
. - [feature] The default minimum fetch interval is now customizable. To set the default minimum fetch interval, use
FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)
. - [feature] Added a way to get all activated configs as a Java
Map
:FirebaseRemoteConfig.getAll()
. - [feature] Added the ability to reset a Firebase Remote Config instance:
FirebaseRemoteConfig.reset()
. - [feature] Added a way to determine if the Firebase Remote Config instance has finished initializing. To get a task that will complete when the Firebase Remote Config instance is finished initializing, use
FirebaseRemoteConfig.ensureInitialized()
. - [feature] Added an asynchronous way to activate configs:
FirebaseRemoteConfig.activate()
. - [feature] Added an asynchronous way to set defaults:
FirebaseRemoteConfig.setDefaultsAsync(int)
andFirebaseRemoteConfig.setDefaultsAsync(Map<String,Object>)
. - [deprecated] Deprecated the synchronous
FirebaseRemoteConfig.activateFetched()
. Use the asynchronousFirebaseRemoteConfig.activate()
instead. - [deprecated] Deprecated the synchronous
FirebaseRemoteConfig.setDefaults(int)
andFirebaseRemoteConfig.setDefaults(Map<String,Object>)
. Use the asynchronousFirebaseRemoteConfig.setDefaultsAsync(int)
andFirebaseRemoteConfig.setDefaultsAsync(Map<String,Object>)
instead. - [deprecated] Deprecated
FirebaseRemoteConfig.getByteArray(String)
. - [deprecated] Deprecated all methods with a namespace parameter.
- [changed] The SDK now enforces Android API Key restrictions.
- [fixed] Resolved known issue where the local cache was not honored even if it had not expired. The issue was introduced in version 16.3.0.
- [changed] Internal changes to ensure functionality alignment with other SDK releases.
- [changed] The [firebase_remote_config] SDK requires the [firebase_remote_config] REST API. For Firebase projects created before March 7, 2018, you must manually enable the REST API. For more information, see our [remote_config] REST API user guide.
- [changed] Refactored the implementation of [remote_config] to improve SDK stability and speed, and to remove the Google Play Services dependency.
- [changed] Improved error logs and exception messages.
- [changed] Updated the Android documentation to reflect that
[remote_config] uses
Locale
to retrieve location information, similar to iOS's use ofcountryCode
.
- [fixed] Fixed an issue where [remote_config] experiments were not collecting results.
- [fixed] Bug fixes and internal improvements to support Firebase Performance Monitoring features.