Releases: configcat/swift-sdk
Releases · configcat/swift-sdk
v11.2.0
Fixed
- Fix crash in withCheckedContinuation on iOS 18.0 (thanks to @leoMehlig for the contribution)
v11.1.0
v11.0.3
v11.0.2
v11.0.1
v11.0.0
Added
- Support for the new Config JSON v6 format: updated the config model and implemented new features in setting evaluation logic.
- Ability to pass a custom logger (by conforming
protocol ConfigCatLogger
) implementation with thelogger
configuration option. The default logger implementation still usingos_log
. - Privacy manifest file that describes the SDK's required reason API usage.
visionOS
device platform support.
Breaking changes
- The
onConfigChanged
hook now gets aConfig
object that contains all the newly downloaded settings & segments. - The
custom
init parameter ofConfigCatUser
now acceptsAny
typed values not just strings. This allows the usage of various types in the user object's custom attributes. - Renamed
matchedEvaluationRule
/matchedEvaluationPercentageRule
properties ofEvaluationDetails
tomatchedTargetingRule
/matchedPercentageOption
- Renamed
LogLevel
toConfigCatLogLevel
.
v10.0.0
Added
-
The concept of Snapshots. They are for capturing the state of the SDK's feature flag data. A snapshot allows synchronous operations on the captured context.
let snapshot = configCatClient.snapshot() let isMyFeatureEnabled = snapshot.getValue(for: "isMyFeatureEnabled", defaultValue: false)
Snapshots are created from the actual state of the SDK; therefore, it's crucial to know whether the SDK has valid feature flag data to work on. The SDK already provides an
onClientReady
hook to determine whether creating snapshots is safe. It's being changed to accept astate
parameter to give details about the SDK's initialization state.client.hooks.addOnReady { state in // the state parameter indicates what is the SDK's initialization state }
These are the possible
state
values:noFlagData
: This means the SDK has no feature flag data to work on (it didn't get anything from the cache or the network)hasLocalOverrideFlagDataOnly
: The SDK was initialized withlocalOnly
flag overrides.hasCachedFlagDataOnly
: The SDK has feature flag data only from the cache. It can happen when the SDK is configured withPollingModes.manualPoll()
and there isn't yet aclient.forceRefresh()
call. Another example could be an SDK configured withPollingModes.autoPoll()
, but it can't reach the ConfigCat CDN, so it falls back to the cache.hasUpToDateFlagData
: The SDK is initialized with up-to-date feature flag data.
This functionality was extended with a new awaitable method
waitForReady()
, which asynchronously waits for theonClientReady
hook to fire and returns with the SDK's initialization state.let state = await client.waitForReady()
Changed
- Standardized config cache key generation algorithm and cache payload format to allow shared caches to be used by SDKs of different platforms.
Removed
getVariationId()
andgetAllVariationIds()
. Alternative:getValueDetails()
/getAllValueDetails()
.refresh()
. Alternative:forceRefresh()
.- Init function of
PollingModes.autoPoll()
with anonConfigChanged
callback parameter. Alternative for subscribing to config changes: Hooks. - Each
***Sync()
method that usedDispatchSemaphore
for synchronizing mainly asynchronous operations. For an alternative, see the added Snapshots feature.