Commit Graph
128 Commits
Author SHA1 Message Date
Paul Beusterien a36958c83e fix(remoteconfig): keep data and source when copying a config value (#16825) 2026-10-27 15:33:26 -04:00
Paul Beusterien 9d91b9dcde fix(remoteconfig): skip defaults that can't be converted to JSON (#16824) 2026-10-27 15:28:43 -04:00
Paul Beusterien 412d8c272a fix(remoteconfig): harden parsing of malformed fetch, realtime, and persisted data (#16760) 2026-10-27 11:28:04 -07:00
Nick Cooke 3f55c32aaa fix(remoteconfig): lazily create gIsNewDatabase queue on first use (#16908) 2026-10-14 19:10:50 -04:00
ismail ramzi 9d61016503 fix(RemoteConfig): type-check nested fetch response fields (#16800) 2026-10-08 10:51:36 -07:00
ritiktaneja fbeeaa433e fix(RemoteConfig): prevent crash on non-dictionary JSON fetch response (#16735) 2026-10-01 13:32:01 -07:00
Mojtaba Hosseini 2b725af5cc docs: fix typos throughout the docs and code (#16473) 2026-08-02 14:50:40 -07:00
Paul BeusterienandNick Cooke e1ecbde861 fix(RemoteConfig): prevent retain cycle in activateWithCompletion (#16413)
Co-authored-by: Nick Cooke <36927374+ncooke3@users.noreply.github.com>
2026-07-21 13:32:00 -07:00
Paul Beusterien 9a4e12150f fix(RemoteConfig): prevent activate from hanging with named apps (#16412) 2026-07-20 11:46:20 -07:00
Tushar Khandelwal 2eb94a14b2 Implement Experiment Metadata Tracking for Realtime Config Updates (#15976) 2026-04-28 09:48:22 +05:30
Tushar Khandelwal 087bb95235 Prevent stale configuration data after iOS device restore (#15442) 2025-11-04 14:03:17 -05:00
Nick Cooke e2a3c3fbca fix(config): Address race condition from concurrent network session recreation (#15231) 2025-08-19 19:58:44 -07:00
Tushar KhandelwalandNick Cooke eb5786d561 Improve Real-time response Handling for Remote Config (#15031)
Co-authored-by: Nick Cooke <36927374+ncooke3@users.noreply.github.com>
2025-06-27 10:16:10 -04:00
Nick Cooke 1ce88877de [Config] Fix Xcode 16.3 warning due to comparing two different enums (#14873) 2025-05-20 17:03:21 -04:00
Tushar Khandelwal 1c1680713f RC Configure ephemeral URLSession for iOS 18.4 simulator (#14768) 2025-04-25 10:12:31 +05:30
Tushar KhandelwalandNick Cooke 37a1a32995 Fix RCNConfigRealtime crash. (#14518)
Co-authored-by: Nick Cooke <36927374+ncooke3@users.noreply.github.com>
2025-03-10 23:22:43 +05:30
Paul Beusterien ba8869c333 [RC] Fix a concurrency crash (#14450) 2025-02-12 12:36:21 -08:00
Nick Cooke 4b99774382 [Config] Mark addOnConfigUpdateListener as Sendable (#14375) 2025-01-23 12:03:47 -05:00
Nick Cooke f94a96459e [Config] Conditionally mark closures as Sendable for Xcode 16 (#14314) 2025-01-07 16:09:13 -05:00
Tushar KhandelwalandNick Cooke 15179e4b8d Add custom signals support in Remote Config. (#13976)
Co-authored-by: Nick Cooke <nickcooke@google.com>
2025-01-07 15:55:26 -05:00
Paul Beusterien b372ee7f12 [rc] Mark ConfigUpdateListenerRegistration Sendable (#14244) 2024-12-11 12:12:49 -08:00
Paul Beusterien 7cfb06faef Remove dead code from FirebaseRemoteConfig (#14153) 2024-11-20 19:54:07 -08:00
rizafran 4b25fc4568 Added Marathi language in Remote Config Locale List (#13597) 2024-10-23 09:39:49 -07:00
Nick Cooke 9f2f41f5ee [Config] Mark two RCNConfigSettings properties atomic (#13925) 2024-10-18 17:24:35 -04:00
Yan Zaitsev 53459a0c76 Wrap _listeners access with _realtimeLockQueue in fetchLatestConfig completionHandler (#13776) 2024-10-05 07:13:55 -07:00
Seyed Mojtaba Hosseini Zeidabadi ccc91014c4 Fix: typos of the FirebaseRemoteConfig source code (#13825) 2024-10-05 07:03:56 -07:00
Paul Beusterien 70558c9130 RC: fix internal API nullability issue caught by analyzer (#13712) 2024-09-24 11:21:23 -07:00
Seyed Mojtaba Hosseini Zeidabadi 78f4ea22a1 Review FirebaseRemoteConfig Sources (#13367) 2024-07-24 06:40:10 -07:00
Nick Cooke 6bbd7d1499 [Config] Wait for installations token before starting realtime connection (#13275) 2024-07-12 17:37:50 -04:00
Paul Beusterien 059b921122 [v11] RC stringValue is now nonull (#13065) 2024-06-05 07:48:28 -07:00
Paul Beusterien f5309bf45b [v11] Remove unused FIRDependency class (#13053) 2024-06-04 06:56:50 -07:00
Christopher Prince d5b35192d7 Make use of SQLITE_OPEN_FILEPROTECTION_COMPLETEUNTILFIRSTUSERAUTHENTICATION conditional. (#12548) 2024-04-22 13:03:44 -04:00
themiswang 90c33e404f [Rollouts] Feature rollouts merge to main (#12410) 2024-03-11 16:13:04 -04:00
Quan Pham d459655d5a Add FID into real-time RC requests (#11485)
* Set FID in realtime request

* Update request method naming

* Update test

* Fix tests

* Fix test
2023-06-29 15:20:28 -07:00
Quan Pham 7061b008c3 Remove isFetchInProgress check for real-time initiated Fetches (#11465)
* cast listener with __block so that it can be altered within block

* Increase fetch attempt

* Remove isFetchInProgress check for real-time initiated fetches

* Update changeling

* update changelog to be more specific
2023-06-28 07:18:31 -07:00
Quan Pham 0e4aa6d4bd cast listener with __block so that it can be altered within block (#11461) 2023-06-20 16:38:49 -07:00
Mike Hardy 671c87953a fix duplicated period in realtime remote config error (#11456) 2023-06-19 10:28:36 -07:00
Quan Pham d74dae0c31 Save activated ExperimentsDescriptions in DB (#11259)
* Add activated experiment metadata and payload keys to experiments table

* Call updateActivatedExperiments in activation method

* Update key name for experiments table

* Update test to include activation call

* Update DB manager for Active experiments payload and metadata

* Fix metadata naming

* add comment

* Don't save experiments metadata b/c it isn't required to diff experiments

* Add extra assertion for test

* Address PR comments
2023-05-26 10:11:15 -07:00
Paul Beusterien 8e49c486de Fix Xcode 14.3 RC warnings (#11194) 2023-04-27 08:42:02 -07:00
Guglielmo Faglioni 2c58866979 [RemoteConfig] Expose NSUnderlyingError to client (#11102) 2023-04-12 14:04:38 -07:00
Quan Pham 7a95f0bd08 Update Remote Config real-time config update ref-docs (#10962)
* Update ref-doc comments

* Update ref-doc comments

* Remove word

* Replace words in comments

* Update comments

* Update comment
2023-03-20 10:58:17 -07:00
4e5b83f2d9 Merge Realtime into Remote Config (#10060)
* Realtime rc dev (#9807)

* Remove commits from non-CLA account. Move TypeDef to private RCNRealtimeConfig file.

* Remove completion handler typedef

* Format file

* Update listener registration description

* Realtime rc dev (#9835)

* Remove commits from non-CLA account. Move TypeDef to private RCNRealtimeConfig file.

* Remove completion handler typedef

* Format file

* Update listener registration description

* Add http streaming and auto fetch. Also add template version number to cache for autofetch.

* Format file.

* Add unit tests

* Format files

* fix test

* update test and header file

* Change templateVersionNumber to ivar

* Fix async tests and update NSDictionary changes

* Format file

* Update fetch time

* remove define header

* Wrap auto fetch in async queue

* Add auto fetch test

* Change template version extraction check.

* Change realtime error code to start at 8001

* Realtime rc dev (#9914)

* Remove commits from non-CLA account. Move TypeDef to private RCNRealtimeConfig file.

* Remove completion handler typedef

* Format file

* Update listener registration description

* Add http streaming and auto fetch. Also add template version number to cache for autofetch.

* Format file.

* Add unit tests

* Format files

* fix test

* update test and header file

* Change templateVersionNumber to ivar

* Fix async tests and update NSDictionary changes

* Format file

* Update fetch time

* remove define header

* Add http stream retry and background change listener.

* Wrap auto fetch in async queue

* Expose realtime method in public

* Update comments

* Add auto fetch test

* Change template version extraction check.

* Change realtime error code to start at 8001

* Change from NSTimer to dispatch. Add flag to guard against retrying.

* Format and add comments.

* Update tests

* Qdpham13 patch 1 (#9913)

* Delete .SecondApp-GoogleService-Info.plist

* Delete SecondApp-GoogleService-Info.plist

* Delete GoogleService-Info.plist

* Delete SecondApp-GoogleService-Info.plist

* Update ViewController.m

* Delete clang-format directory

* format

* Change to NSExtensionHostWillEnterForegroundNotification

* Change to UIApplicationWillEnterForegroundNotification

* add import

* Remove import, use string literal instead of UIKit enum

* add test for new public method

* Update template version number retrieval function and update delay

* Fix test

* Fix test

* Update retry seconds and fetch interval seconds

* Update ddos to DDoS

* Update variable according to style guide.

* Replace NSLog with kFIRLoggerRemoteConfig (#10062)

* Replace NSLog with kFIRLoggerRemoteConfig

* Remove logs and change others from info to debug.

* update log messages.

* Format files

* Realtime rc failsafe (#10067)

* Add failsafe logic to request, response and application logic.

* Update flag name and conditions.

* Format file

* Add check for template version number

* Format files

* Changes based on PR comments

* move response parsing logic to separate function and add test for failsafe flag

* Update based on PR comments and add method to propagate error to listeners in queue.

* Realtime rc merge patch v1 (#10089)

* Fix foreground reconnection naming, add background check and flag, add check to see if fetch is currently in progress.

* Add check so fetches come only when the template version is greater than the current one.

* Format file changes

* Add debug log

* Make changes based on PR comments.

* Resolve failsafe changes

* Updating instance var names

* change template version check for auto fetch from >= to >

* Cherry-pick #10123 into Firebase 9.5.0

* [RC] Fix retry logic to respect max retry count (#10143)

* Fix retry logic to respect max retry count

* Rename to isRequestInProgress

* Save template version in settings (#10162)

* Save template version in settings

* Format files

* set last template version to 0

* Store template version in userDefaults instead of deviceContents

* return nil for unsuccessful fetches

* fix typo

* Realtime rc no change (#10188)

* Save template version in settings

* Format files

* set last template version to 0

* Store template version in userDefaults instead of deviceContents

* return nil for unsuccessful fetches

* fix typo

* put addEtagToHeader flag to fetch and propagate it to surrounding functions

* Add excludeEtagHeaderForRealtime flag to RCNConfigFetch

* Update mocks for Swift test

* Fix flag

* Add commentting

* reconcile master branch merge conflicts

* Revert "Realtime rc no change (#10188)" (#10346)

This reverts commit abe7939602.
In part of implementing a different solution.

* Add Http status check to Realtime stream (#10406)

* Check status code before retrying

* Change time out to 5 and a half minutes

* Throw exception if unable to establish connection due to non-retryable status code

* Format file

* Replace old realtime exceptions with new exceptions (#10482)

* Replace old realtime exceptions with new exceptions

* Fix word type

* Realtime RC Fetch ID (#10499)

* Add Realtime specific fetch method and fetch type header changes

* Add test

* Add comments and format

* Fix tests

* Update fetch header name

* Update tests and edit realtime fetch name and params

* refactor remainingAttempts var

* Realtime rc backoff (#10483)

* Change Realtime back off to use same system as Fetch and persist backoff state

* format and fix merge conflict

* Save retry count along with other throttling metadata

* Update var name

* Fix naming

* Return ConfigUpdate to realtime listeners (#10578)

* diff fetched and active config on realtime fetch

* Some refactoring and added tests

* Revert some unrelated changes to fetch

* Fix formatting

* Update branch and fix swift tests

* Rename updatedParams to updatedKeys (#10683)

* Update Realtime RC service URL. (#10713)

* Compare p13n metadata values as dictionaries. (#10756)

* Realtime RC 1P Bug Fix: Add checks for retryHttpConnection method (#10770)

* Add checks to retry method

* Move background check to beginning of retry

* Capitalize FetchType header (#10774)

* Remove Fetch Duplicate error and fix API misuse error (#10814)

* Remove fetch duplicate error

* Move completionHandler to bottom of didReceiveData

* Remove unused var

* Return Server produced error if Http status code is 403  (#10844)

* Add API message to enable Realtime

* Update error message parsing to return error message from backend

* Format file

* Add comment and remove unnecessary string

* Format and update error checks

* Change matcher string

* Update matcher string

* Address PR comments (#10845)

* Address PR comments

* Add Realtime Swift mocks

* Remove unnecessary mocks

* Format files

* Format tests

* Add Realtime mock

* Add missing quote

* Fix bugs

* Remove import

* Update import

* Change import

* Don't make connection call for Realtime mock

* Move around import of RCNConfigSettings

* Fix andDo

* Update test

* Add mockedRealtime flags

* trigger integration test

* Add integration and unit test

* change constant value

* Add new RC key

* Update update

* Remove deleted item

* Add registration removal

* Fix and format files

* remove semicolon

* Update error check

* remove space

* Update capitalization

* Add space

* Remove spaces

* remove more spaces

* Remove comment and add swift name

* format

* Add tests and sampleApp changes for updatedKeys (#10879)

* Update tests and sample app

* change key name

* remove unused var

* Add comment

* update sampleApp comments

* Update comments for public methods

* Update backoff commenting

* Add changelog entry for real-time updates. (#10942)

* Add changelog entry for RC real time updates.

* Hyphenation.

* Change doc references to hyphenate real-time (#10948)

* Change doc references to hyphenate real-time

* Run formatter.

* Re-word real-time paragraph to flow better.

---------

Co-authored-by: Andrew Heard <andrew@wizheard.com>
Co-authored-by: karenyz <58443706+karenyz@users.noreply.github.com>
Co-authored-by: Karen Zeng <karenzeng@google.com>
Co-authored-by: Dana Silver <dsilver1221@gmail.com>
Co-authored-by: Dana Silver <danasilver@google.com>
2023-03-13 16:02:56 -07:00
Guglielmo Faglioni 0dd5b06304 pass NSUnderlyingError to client (#10453) 2022-11-07 18:14:00 -08:00
Charlotte Liang f804aba0e2 Remote Config Dynamic Property Wrapper (#10155) 2022-09-22 20:01:17 -07:00
karenyz d5637c4cd7 Modify activate path to only update experiments for firebase namespace (#9972)
* Modify activate path to only update experiments for firebase namespace

* Add changelog
2022-07-01 08:21:58 -07:00
Jake Krog a23a476ee5 Support array / dictionary values in Remote Config defaults (#8307) 2022-06-30 10:38:32 -07:00
karenyz b58ae5344b Send first open time in Remote Config fetch request (#9663)
* Extract first open time from analytics user properties

* Add tests

* Address comments

* Update tests
2022-04-18 16:12:19 -07:00
Morgan Chen 9f2a3132fa Use Swift syntax in reference documentation (#9594)
* fix returns typo

* change some headers

* style

* the rest of the header comments

* revert changes to FIRStorageReference
2022-04-08 14:50:22 -07:00
Ryan Wilson 2258c07ecb Swift Error Improvements (#9512)
* Firebase Messaging enum

* Add tests for App Check errors

* App Distribution Error

* Installations error improvements

* Remote Config errors

* Firestore error handling

* Formatting

* Silly import error

* Consistency for App Check tests.

* Typo fix
2022-04-04 10:36:38 -04:00
Ryan Wilson 500e1822c4 Fix Remote Config pre-configure access. (#9551)
* Fix Remote Config pre-configure access.

Currently, when `RemoteConfig.remoteConfig()` is called before
`FirebaseApp.configure()` is called, Similar to Database, AppCheck, and
others we'll now throw an ObjC exception. We're not going to make it
nullable or throw a Swift compatible error since it'd affect the
callsite of every usage (either a `?` or `try`) and this is deemed a
programming error: `configure()` has to be called first.

Fixes #8640

* CHANGELOG
2022-03-31 16:43:29 -04:00