feat(remote-config): switch config request to v1 and send app user id#7080
feat(remote-config): switch config request to v1 and send app user id#7080rickvdl wants to merge 2 commits into
Conversation
4 builds increased size
RevenueCat 1.0 (1)
|
| Item | Install Size Change |
|---|---|
| DYLD.String Table | ⬆️ 74.2 kB |
| DYLD.Exports | ⬆️ 5.6 kB |
| Code Signature | ⬆️ 5.6 kB |
| Strings.Unmapped | ⬆️ 1.2 kB |
| 📝 RevenueCat.RemoteConfigManager.RemoteConfigManager | ⬆️ 604 B |
BinarySizeTest 1.0 (1)
com.revenuecat.binary-size-test.local-source
⚖️ Compare build
📦 Install build
⏱️ Analyze build performance
Total install size change: ⬆️ 30.4 kB (0.23%)
Total download size change: ⬆️ 8.5 kB (0.19%)
Largest size changes
| Item | Install Size Change |
|---|---|
| 📝 RevenueCat.RemoteConfigStrings.value witness | ⬆️ 8.7 kB |
| DYLD.String Table | ⬆️ 1.7 kB |
| 📝 RevenueCat.RCContainer.Element.withBytes(in) | ⬆️ 1.6 kB |
| 🗑 RevenueCat.RCContainer.Parser.checksumString(in) | ⬇️ -1.5 kB |
| 📝 RevenueCat.RemoteConfigStrings.description | ⬆️ 1.4 kB |
BinarySizeTest 1.0 (1)
com.revenuecat.binary-size-test.cocoapods
⚖️ Compare build
📦 Install build
⏱️ Analyze build performance
Total install size change: ⬆️ 51.5 kB (0.18%)
Total download size change: ⬆️ 14.1 kB (0.21%)
Largest size changes
| Item | Install Size Change |
|---|---|
| DYLD.String Table | ⬆️ 14.4 kB |
| 📝 RevenueCat.RemoteConfigStrings.value witness | ⬆️ 8.7 kB |
| 📝 RevenueCat.RCContainer.Element.withBytes(in) | ⬆️ 1.6 kB |
| 🗑 RevenueCat.RCContainer.Parser.checksumString(in) | ⬇️ -1.5 kB |
| Code Signature | ⬆️ 1.5 kB |
BinarySizeTest 1.0 (1)
com.revenuecat.binary-size-test.spm
⚖️ Compare build
📦 Install build
⏱️ Analyze build performance
Total install size change: ⬆️ 26.6 kB (0.23%)
Total download size change: ⬆️ 6.6 kB (0.15%)
Largest size changes
| Item | Install Size Change |
|---|---|
| 📝 RevenueCat.RemoteConfigStrings.value witness | ⬆️ 8.7 kB |
| 📝 RevenueCat.RCContainer.Element.withBytes(in) | ⬆️ 1.6 kB |
| 🗑 RevenueCat.RCContainer.Parser.checksumString(in) | ⬇️ -1.5 kB |
| 📝 RevenueCat.RemoteConfigStrings.description | ⬆️ 1.4 kB |
| 📝 RevenueCat.RCContainer.Element.payloadChecksum | ⬆️ 1.4 kB |
🛸 Powered by Emerge Tools
Comment trigger: Size diff threshold of 100.00kB exceeded
❌ CI Job Failed —
|
57aa20d to
0c29474
Compare
b1aa3e8 to
eddd148
Compare
0c29474 to
64e4760
Compare
eddd148 to
21b1db7
Compare
64e4760 to
949aa9e
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 949aa9e. Configure here.
|
|
||
| let persisted = self.diskCache.read() | ||
| let request = RemoteConfigRequest( | ||
| appUserID: self.currentUserProvider.currentAppUserID, |
There was a problem hiding this comment.
Stale manifest wrong user
Medium Severity
After login or app_user_id changes, refresh still replays manifest and prefetched blobs from the global disk cache while sending the new appUserID in RemoteConfigRequest. The backend can receive another user’s sync token under the current user id, leading to wrong config or failed refresh until cache is cleared.
Reviewed by Cursor Bugbot for commit 949aa9e. Configure here.






Some small API request updates
/v2/configto/v1/configapp_user_id: "something"Note
Medium Risk
This changes the live backend contract and ties config sync to app user identity; mis-wiring the user id or a v1/v2 mismatch could break refreshes or serve the wrong config after identify/logout.
Overview
Moves remote config fetches from
/v2/configto/v1/config, including fallback URLs and docs, by dropping the v2-only path handling so remote config uses the same/v1/{component}pattern as other endpoints.RemoteConfigRequestnow requires anappUserID, sends it in the POST body asapp_user_id, and folds it into the operation cache key so in-flight requests are not coalesced across different users.RemoteConfigAPI.getRemoteConfigno longer builds a default body; callers must supply a request.RemoteConfigManagertakesCurrentUserProviderand passescurrentAppUserIDon each refresh.Unit tests were updated for the new path and body shape, plus coverage that differing app user IDs do not share one network call.
Reviewed by Cursor Bugbot for commit 949aa9e. Bugbot is set up for automated code reviews on this repo. Configure here.