⚠️ Breaking Changes ⚠️
Viaduct
- Moved the Rust-based backend away from
hyperback toreqwest.
The new crate name isviaduct-backend-rust.
iOS will need to replaceviaductInitBackendHyper()withviductInitBackendRust()
Db-Crypto, Logins, Autofill
create_static_key_manager()andcreate_managed_encdec()moved fromloginsandautofilltodb-crypto, since both components defining them caused duplicate definitions in Swift.
Kotlin consumers need to import them frommozilla.appservices.db_cryptoinstead ofmozilla.appservices.logins/mozilla.appservices.autofill. (bug 2080807)
Autofill
- BREAKING: The key-based
encrypt_string(key, ...)/decrypt_string(key, ...)namespace functions are removed - with transparent card numbers nothing needs them.create_autofill_key()stays; for canaries usedb_crypto.create_canary/check_canary(format-compatible). - BREAKING: Credit card numbers are transparent in the API:
UpdatableCreditCardFieldstakescc_numberin cleartext (the store encrypts it and derivescc_number_last_4itself), andCreditCard.cc_numbercomes back decrypted - empty for a scrubbed card, while a value the key cannot read fails the read. An emptycc_numberis stored as an emptycc_number_encrather than as a ciphertext of "", so a scrubbed card stays recognizable as such.cc_number_encis gone from both dictionaries; consumers never handle ciphertext. (bug 2075563)
✨ What's New ✨
Error support
- Wired up the error ping on iOS using glean-sym.
✨ What's Changed ✨
Ads-Client
- Telemetry is now a process-wide singleton internally; the binding API is unchanged, but the
MozAdsTelemetrycallback now receives metrics from every client in the process. request_spoc_or_image_adsis added to return ads that may ambiguously be spocs or images.- Added support for relevance scores (AC-205) (AC-206) Accepts a HashMap<String, f64>.
Autofill
- Add
Store::credit_cards_bridged_engine(), exposing the existing credit card sync engine as a bridged engine so Firefox Desktop can drive credit card sync. (bug 2074008) - Added
list_credit_card_candidates(), returningCreditCardCandidate: a card minus its encrypted fields, withcc_number_last_4andhas_cvvin their place. Likelist_candidates()in logins it never touches the key, so an application can list cards without a primary password prompt and callget_credit_card()for the single card whose number or CVV it needs. (bug 2080209) - Credit cards can store an optional CVV, encrypted like the number and handled transparently:
UpdatableCreditCardFields.cc_cvv(cleartext in, defaults to none) andCreditCard.cc_cvv(decrypted out). A v6 schema upgrade adds the column; existing rows simply have no CVV. The CVV syncs as a new optionalcc-cvvpayload field; records written by older clients round-trip it through the mirror's unknown-fields handling, so their edits do not drop it. (bug 2076154)
Nimbus
- Disabling experiments or rollouts will submit an event. #7656
- If requesting experiment or rollout participation on Android throws, the getter will return true instead of throwing. This aligns the Android behaviour with iOS. #7656
- Enabling experiments or rollouts while they are already enabled no longer performs an update. #7656
Search
- Added APIs to
SearchEngineSelectorfor a newsearch-config-v3collection.
Sync15
- Better interoperability with clients which choose engines per device: sync IDs are adopted from
meta/syncidsrather than minted, and our declined engines are kept whenmeta/globalhas no engines or declined engines. - A fresh
meta/globalno longer lists declined engines inengines.