Releases: mozilla/application-services
Releases · mozilla/application-services
v151.0
v151.0 (2026-04-20)
⚠️ Breaking Changes ⚠️
- It is now enforced by
nimbus-fmlthat feature variables using gecko-pref must be havetype: Option<T>, forTinBoolean,Int, andString. nimbus-fmlcommands now all have a--lax-gecko-pref-validationflag to bypass the above restriction, as well as the restriction thatgecko-prefanddefaultare mutually exclusive.- The
FmlLoaderConfignow has alax_gecko_pref_validationfield to allowFmlClientconsumers (i.e., Experimenter) to opt-in to lax validation.
✨ What's New ✨
Logins
- New
allow_empty_passwordsfeature flag to allow storing logins with empty passwords. This feature is intended to be enabled on desktop during the migration. - Add
ignore_form_action_origin_validation_errorsfeature flag that allows logins with non-URLform_action_originvalues (e.g. "email", "UserCode") to be imported without error. URL normalization for valid URLs is still applied. - Add
perform_additional_origin_fixupsfeature flag that repairsoriginvalues which fail URL parsing (bare domains, FireFTP quirks, barehttps:/https://, etc.) into parseable URLs instead of rejecting them. Scoped to theoriginfield only;form_action_originkeeps the stricter behavior, but can be disabled viaignore_form_action_origin_validation_errors. Intended to be enabled on desktop during migration to salvage legacy/addon-generated entries.
Merino Client
- Added a client for the merino suggest endpoint
- Added a
suggestsubcommand tomerino-clifor locally testing the suggest endpoint.
✨ What's Changed ✨
Merino Client
merino-clinow supports subcommands:recommendationsfor curated recommendations andsuggestfor the suggest endpoint.
v150.0.1
v150.0
v150.0 (2026-03-23)
General
error-supportbreadcrumbs now include the timestamp.
⚠️ Breaking Changes ⚠️
Nimbus
- The
MetricsHandlerinterface now requires two additional methods:record_database_load()andrecord_database_migration() - In Kotlin expose
GleanMetrics.Pings.nimbusTargetingContextasNimbus.Pings.nimbusTargetingContextfor downstream tests. (#14542) recordEventOrThrow()now returnsDeferred<Unit>instead ofJob. Callers must use.await()(instead of.join()) to observe exceptions thrown during event recording.- It is now enforced via
nimbus-fml validatethat feature variables do not use bothgecko-prefanddefaultfor the same variable.
Ads Client
- Added
rotation_daysparameter toMozAdsClientBuilderto allow embedders to configure the context ID rotation period. (#7262)
Logins
- BREAKING: Removed
time_of_last_breachfield fromLoginMetaandLogin. This can be derived from Remote Settings during runtime instead. - BREAKING: Removed
record_breach(id, timestamp)API method. - BREAKING: Removed
is_potentially_breached(id)API method. - BREAKING: Removed
is_breach_alert_dismissed(id)API method. - BREAKING:
reset_all_breaches()now clears thebreachesLpassword table instead of resettingtime_of_last_breachtimestamps. - Schema migrated to version 5:
timeOfLastBreachcolumn dropped fromloginsLandloginsM.
✨ What's New ✨
Remote Settings
- Add multi-signature support (#7270)
Full Changelog: v149.0...v150.0
v149.0
v149.0 (2026-02-23)
⚠️ Breaking Changes ⚠️
General
- Updated UniFFI to 0.31 (#7140)
Glean
- Updated to v67.0.0 (#7177)
Nimbus
- Added
eval_jexl_debug()method toNimbusTargetingHelperinterface for CLI testing and debugging. Evaluates JEXL expressions and returns debug results as JSON. Consumers implementing this interface must add the new method.
(#7156)
(#31607) - Update Cirrus
MetricsHandlerinterface for recording enrollment status to specify nimbus user id as separate metric and change method name fromrecord_enrollment_statusestorecord_enrollment_statuses_v2. Consumers implementing this interface must add the new method.
(#14280) - Move
nimbus_events.enrollment_statusto newnimbus-targeting-contextping, and add NimbusMetricsHandlerinterface methodsubmit_targeting_contextto submit the ping. Consumers implementing this interface must add the new method. (#14542) - Enable using
PreviousGeckoPrefStateto revert Gecko pref experiments when applicable (#7157)
Error support
- Removed the
tracing-loggingandtracing-reportingfeatures, these are now always enabled.
We don't believe this should affect any consumers, since they're were already using the
tracing-loggingfeature and were either also usingtracing-reportingor not handling error
reporting at all. - Reworked
register_event_sinksignature to allow it to register an event sink for muliple targets at once. - Reworked
unregister_event_sink. It now inputs the return value fromregister_event_sink. - Removed
register_min_level_event_sinkandunregister_min_level_event_sink.
Use the newregister_event_sinkinstead.
Logins
- Opened count method on logins for Android. (#7207)
Autofill
- Added count methods for credit cards and addresses. (#7207)
✨ What's New ✨
Ads Client
- Adds new Kotlin
AdsClientTelemetry.ktwrapper for Glean callbacks. - Try to reset cache database schema on connection initialization failure.
- Reset cache on context ID rotation.
- Enable staging environment support for all platforms (previously feature-gated)
- Temporarily disable cache invalidation on click and impression recording (will be re-enabled behind Nimbus experiment)
- Enable automatic context_id rotation every 3 days
- BREAKING: Removed
cycle_context_id()API method - context_id rotation is now automatic - Modified HTTP cache to ignore
context_idfield in request bodies when generating cache keys, preventing unnecessary cache invalidation on rotation
Android
- Upgraded Kotlin compiler from 2.2.21 to 2.3.0 (#7183)
FxA Client
- Support for the token exchange API, which we plan to use for getting access tokens for Relay.
(#7179). - Removed
SwiftKeychainWrapperlogic. (#7150)
Logins
- Added
runMaintenanceAPI toDatabaseLoginsStorage
Nimbus
- Adds a
Vec<PreviousGeckoPrefState>onExperimentEnrollmentwhen it is of typeEnrollmentStatus::Enrolledand getters and setters. This is to support returning to an original value on Gecko pref experiments. - Added
eval-jexlcommand to nimbus-cli for evaluating JEXL targeting expressions against the app context. Useful for testing and debugging targeting expressions on iOS and Android.
(#7160) - Added Android support for eval-jexl functionality through the
NimbusTargetingHelper.evalJexl()method, enabling JEXL expression evaluation on Android with full targeting context support.
(#7163) - Fixed nimbus-cli eval-jexl command to work reliably on Android by removing logcat filters, clearing logs before evaluation, and increasing retry timing for better device compatibility.
(#7173) - Added
recordEventOrThrow()method to Nimbus Android SDK, allowing callers to catch database errors when recording events. UnlikerecordEvent(), this method does not suppress exceptions, enabling error handling in consumers like Fenix.
Logins
- Added
runMaintenanceAPI toDatabaseLoginsStorage - Add password reuse detection for breach alerts: Database schema upgraded to version 4 with new
breachesLtable storing encrypted breached passwords. New APIsare_potentially_vulnerable_passwords()(batch check) andis_potentially_vulnerable_password()(single check) enable cross-domain password reuse detection. - Add
record_potentially_vulnerable_passwords()API for bulk-inserting breached passwords into the breach database. This is used during import operations (add_many_with_meta()) to automatically populate the breach database with passwords from logins with known breaches. - Move breach alert fields (
time_of_last_breach,time_last_breach_alert_dismissed) fromLoginFieldstoLoginMetato group internally managed fields that are not directly updateable via theupdate()API.
Ads-Client
- Adds new Kotlin
AdsClientTelemetry.ktwrapper for Glean callbacks.
Relay
- Added
X-Relay-Clientheader to all Relay API requests with automatic platform detection (appservices-ios,appservices-android, etc.) to help the backend distinguish mobile vs desktop requests for telemetry.
Viaduct
- Support setting default user-agent headers.
Error support
- Added the
RustComponentsErrorTelemetry.submitErrorPingmethod to allow Android consumers to submit rust components error pings.
🔧 What's Fixed 🔧
Remote Settings
- Removed potential deadlock (https://bugzilla.mozilla.org/show_bug.cgi?id=2012955)
v148.0
v148.0 (2026-01-12)
Logins
- Add breach alert support, including a database migration to version 3,
newLoginfields (time_of_last_breach,time_last_breach_alert_dismissed),
and newLoginStoreAPIs (record_breach,reset_all_breaches,is_potentially_breached,record_breach_alert_dismissal_time,record_breach_alert_dismissal,is_breach_alert_dismissed). (#7127)
⚠️ Breaking Changes ⚠️
Fxa Client
- Removed the optional
ttlparamater toget_access_token. In practice, no consumers were using this.
✨ What's New ✨
Ads Client
- Add agnostic telemetry support (compatible with Glean)
Fxa Client
- Added optional
use_cacheparamater toget_access_token. Set this tofalseto force
requesting a new token.
v147.0
v147.0 (2025-12-07)
Relay
- Added
fetch_profile()method to check premium subscription status viahas_premiumfield (#7113)
Nimbus
⚠️ Breaking Changes ⚠️
- Removed unused
home_directoryfield from AppContext. Both Kotlin and Swift sides were passing null values and it wasn't used anywhere. (#7085) (#30782)
rc_crypto
- Thread-safety improvements for PKCS-token-dependent methods by introducing a
global mutex. Refactored key unpacking logic and removed redundant code;
includes some breaking API changes, but since the keydb feature is not yet in
use, these do not affect existing consumers.get_aes256_keynow returns aResult<Option<Key>>to distinguish missing
keys from errorsget_or_create_aes256_keyonly creates a key when none exists.- When the keydb feature is enabled,
ensure_nss_initializedis disabled in
favor ofensure_nss_initialized_with_profile_dir.
Logins
create_login_store_with_nss_keymanagerreturns anApiResultnow, instead
of just panicking.- fix
count_by_originandcount_by_form_action_originwith punicode origins
Places
v145.0.2
What's Changed
- This brings in #7093 to reduce the crash frequency for
https://bugzilla.mozilla.org/show_bug.cgi?id=1992149.
Full Changelog: v145.0.1...v145.0.2
v146.0.2
What's Changed
- This brings in #7093 to reduce the crash frequency for
https://bugzilla.mozilla.org/show_bug.cgi?id=1992149.
Full Changelog: v146.0.1...v146.0.2
v146.0.1
What's Changed
- This brings in mozilla/uniffi-rs#2733, to reduce the crash frequency for
https://bugzilla.mozilla.org/show_bug.cgi?id=1992149.
Full Changelog: v146.0...v146.0.1
v145.0.1
What's Changed
- This brings in mozilla/uniffi-rs#2733, to reduce the crash frequency for
https://bugzilla.mozilla.org/show_bug.cgi?id=1992149.
Full Changelog: v145.0...v145.0.1