Hi Team :wave::skin-tone-2: We received an issue ...
# sdk-swift
b
Hi Team šŸ‘‹šŸ» We received an issue related to the Swift SDK tht we could use your help looking into. Summary Inconsistent behavior in the iOS (Swift) SDK when evaluating a client-side feature flag with Force Rules. Setup: • Two feature flags: a backend and a client one. • Both had identical Force Rules: a. Force default value for holdout Q2 control group b. Force default value for holdout Q2 test group c. Force test value for specific iOS user ID d. Force test value for specific Android user ID These test user IDs are confirmed to not be in the holdout group, and simulating their assignments using Python and iOS SDKs always returned "General Population." In the iOS app, the backend variation appeared as expected, but the client-side variation did not — it returned the control (False) value: • Backend flag returned expected test value in all cases (Python SDK, Swift SDK, Android app). • Client flag: ā—¦ āœ… Python SDK: value =
True
, source =
Force
ā—¦ āœ… Android app (Java SDK): value =
True
ā—¦ āŒ iOS (Swift SDK): value =
False
, source =
cyclicPrerequisite
The
cyclicPrerequisite
source in GrowthBook means a cycle was detected in feature prerequisites (i.e., a feature depending on itself). Evaluation is halted to avoid infinite loops. However, no prerequisites were defined in this setup. This source value was unexpected and only appeared in the Swift SDK. Can you investigate why the Swift SDK is returning
cyclicPrerequisite
for a client feature flag that: • Has no prerequisites • Is correctly forced to a test value via Force Rules • Returns the correct result in other SDKs (Python, Java)? Thanks!
c
Hi @brief-honey-45610. We will check that today and we will write to you.
We identified the issue and implemented a solution, which is included in this PR.
b
Thanks so much, Maxim! I'll let the customer know.
šŸ™Œ 1
c
Thank you