feat(remote-config): add network scaffolding for GET /v2/config endpoint#6854
Conversation
4 builds increased size
RevenueCat 1.0 (1)
|
| Item | Install Size Change |
|---|---|
| DYLD.String Table | ⬆️ 73.4 kB |
| Code Signature | ⬆️ 4.7 kB |
| DYLD.Exports | ⬆️ 3.7 kB |
| 📝 RevenueCat.RemoteConfigAPI.RemoteConfigAPI | ⬆️ 1.1 kB |
| Other | ⬆️ 97.1 kB |
BinarySizeTest 1.0 (1)
com.revenuecat.binary-size-test.local-source
⚖️ Compare build
📦 Install build
⏱️ Analyze build performance
Total install size change: ⬆️ 37.4 kB (0.3%)
Total download size change: ⬆️ 12.5 kB (0.3%)
Largest size changes
| Item | Install Size Change |
|---|---|
| DYLD.String Table | ⬆️ 7.1 kB |
| 📝 RevenueCat.RemoteConfigResponse.Manifest.encode(to) | ⬆️ 2.0 kB |
| 📝 RevenueCat.RemoteConfigResponse.Manifest.init(from) | ⬆️ 1.5 kB |
| 📝 RevenueCat.RemoteConfigResponse.init(from) | ⬆️ 1.2 kB |
| 📝 RevenueCat.GetRemoteConfigOperation.getRemoteConfig(completion) | ⬆️ 1.1 kB |
BinarySizeTest 1.0 (1)
com.revenuecat.binary-size-test.cocoapods
⚖️ Compare build
📦 Install build
⏱️ Analyze build performance
Total install size change: ⬆️ 112.1 kB (0.4%)
Total download size change: ⬆️ 20.6 kB (0.33%)
Largest size changes
| Item | Install Size Change |
|---|---|
| DYLD.String Table | ⬆️ 55.5 kB |
| Code Signature | ⬆️ 2.5 kB |
| 📝 RevenueCat.RemoteConfigResponse.Manifest.encode(to) | ⬆️ 2.0 kB |
| 📝 RevenueCat.RemoteConfigResponse.Manifest.init(from) | ⬆️ 1.5 kB |
| 📝 RevenueCat.RemoteConfigResponse.init(from) | ⬆️ 1.2 kB |
BinarySizeTest 1.0 (1)
com.revenuecat.binary-size-test.spm
⚖️ Compare build
📦 Install build
⏱️ Analyze build performance
Total install size change: ⬆️ 28.9 kB (0.26%)
Total download size change: ⬆️ 11.2 kB (0.26%)
Largest size changes
| Item | Install Size Change |
|---|---|
| 📝 RevenueCat.RemoteConfigResponse.Manifest.encode(to) | ⬆️ 2.0 kB |
| 📝 RevenueCat.RemoteConfigResponse.Manifest.init(from) | ⬆️ 1.5 kB |
| 📝 RevenueCat.RemoteConfigResponse.init(from) | ⬆️ 1.2 kB |
| 📝 RevenueCat.GetRemoteConfigOperation.getRemoteConfig(completion) | ⬆️ 1.1 kB |
| RevenueCat.Result.parseResponse | ⬆️ 988 B |
🛸 Powered by Emerge Tools
Comment trigger: Size diff threshold of 100.00kB exceeded
|
@RCGitBot please test |
Generated by 🚫 Danger |
f0e1d35 to
9307626
Compare
|
@RCGitBot please test |
9307626 to
46960a1
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d7eef73. Configure here.
|
@RCGitBot please test |
7e33097 to
648e8c6
Compare
|
@RCGitBot please test |
Adds RemoteConfigResponse model, GetRemoteConfigOperation, RemoteConfigAPI, and wires everything into Backend. Unknown topic keys in the manifest are silently dropped for forward compatibility. Mirrors Android PR #3435.
Aligns with Android convention (DEFAULT_ENTRY_ID = "default") established in purchases-android PR #3437.
BackendGetRemoteConfigTests was only recording snapshots for iOS 26. CI also runs tests on iOS 14/15/16/17/18, tvOS 18, macOS, and watchOS, each of which requires its own snapshot file. Derived from existing snapshot patterns in BackendGetRewardVerificationStatusTests.
Follows the codebase convention of logging unknown backend values (e.g. WorkflowsResponse unknown_workflow_trigger_type) rather than silently dropping them.
…for signature verification Aligns Topic with Swift's RawRepresentable convention and matches the Android SDK's comment indicating signature verification will be enabled once the remote config endpoint is finalized.
648e8c6 to
fe95ebf
Compare
|
@RCGitBot please test |





Summary
This is the first PR in a stacked series implementing remote config support on iOS, mirroring Android PR #3435.
Adds the network scaffolding for
GET /v2/config— response models, endpoint definition, API class, and request coalescing operation. No public API surface is introduced.What's included:
RemoteConfigResponse— response model withapi_sources,blob_sources, andmanifest.topics. Unknown topic keys are silently dropped for forward compatibility.HTTPRequest.Path.getRemoteConfig— endpoint at/v2/config(authenticated, no etag, no signature verification — matching Android's WIP flags)RemoteConfigAPI+GetRemoteConfigOperation— follows the existingCacheableNetworkOperationpattern with request coalescing viaCallbackCacheBackend.remoteConfigAPI— wired intoBackendfollowing the same pattern as other API sub-objectsBackendGetRemoteConfigTests+RemoteConfigResponseDecodingTestsWhat's not included (future PRs):
Purchasesor any consumerapi_sourcesorblob_sourcesNote
Medium Risk
New authenticated config endpoint and models that will eventually drive entitlement-related blob routing; risk is limited today because nothing calls it yet, but path/signing flags are still WIP.
Overview
Adds network scaffolding for remote config via authenticated GET
/v2/config(v2 path, no signature verification yet—marked WIP). IntroducesRemoteConfigResponse(api_sources,blob_sources,manifest.topicswithproduct_entitlement_mappingonly; unknown topics are dropped and logged),RemoteConfigAPI+GetRemoteConfigOperationusing the existing cacheable/coalescing pattern, andBackend.remoteConfigAPI.Wires the new types into the Xcode project and test harness (
MockBackend,BaseBackendTests,BasePurchasesTests). AddsBackendGetRemoteConfigTestsandRemoteConfigResponseDecodingTestsplus request snapshots. No publicPurchasesAPI or persistence/consumer of the response in this PR.Reviewed by Cursor Bugbot for commit fe95ebf. Bugbot is set up for automated code reviews on this repo. Configure here.