Skip to content

Releases: configcat/swift-sdk

v11.2.0

25 Sep 12:22
Compare
Choose a tag to compare

v11.1.0

06 Jun 18:20
Compare
Choose a tag to compare

Changed

  • Allow access to the user attributes inside ConfigCatUser.
    let user = ConfigCatUser("<user-id>")
    
    let id = user.identifier // <user-id>
    
    let attributeValue = user.attribute(for: "<attribute-key>")

v11.0.3

07 May 11:40
502954c
Compare
Choose a tag to compare

Fixed

  • Initial config JSON load when auto poll enabled with results from cache.

v11.0.2

09 Apr 19:48
c63143e
Compare
Choose a tag to compare

Fixed

  • The custom base URL was overridden by the config JSON preferences URL.

v11.0.1

27 Mar 16:15
da6beca
Compare
Choose a tag to compare

Fixed

  • Wrong condition (introduced in 11.0.0) used by the cache validity check. The previous condition did not allow the reloading of the in-memory cache when the external cache data was modified.

v11.0.0

21 Mar 11:01
Compare
Choose a tag to compare

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 the logger configuration option. The default logger implementation still using os_log.
  • Privacy manifest file that describes the SDK's required reason API usage.
  • visionOS device platform support.

Breaking changes

  • The onConfigChanged hook now gets a Config object that contains all the newly downloaded settings & segments.
  • The custom init parameter of ConfigCatUser now accepts Any typed values not just strings. This allows the usage of various types in the user object's custom attributes.
  • Renamed matchedEvaluationRule / matchedEvaluationPercentageRule properties of EvaluationDetails to matchedTargetingRule / matchedPercentageOption
  • Renamed LogLevel to ConfigCatLogLevel.

v10.0.0

28 Aug 16:58
23b9779
Compare
Choose a tag to compare

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 a state 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 with localOnly flag overrides.
    • hasCachedFlagDataOnly: The SDK has feature flag data only from the cache. It can happen when the SDK is configured with PollingModes.manualPoll() and there isn't yet a client.forceRefresh() call. Another example could be an SDK configured with PollingModes.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 the onClientReady 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() and getAllVariationIds(). Alternative: getValueDetails() / getAllValueDetails().
  • refresh(). Alternative: forceRefresh().
  • Init function of PollingModes.autoPoll() with an onConfigChanged callback parameter. Alternative for subscribing to config changes: Hooks.
  • Each ***Sync() method that used DispatchSemaphore for synchronizing mainly asynchronous operations. For an alternative, see the added Snapshots feature.

v9.4.0

05 Apr 10:56
bafa094
Compare
Choose a tag to compare
  • Deprecated each ...Sync() method. The synchronization with DispatchSemaphore is considered dangerous due to thread priority inversion. More details here.
    As there is no official way to do this in a safe way we'll remove these methods in the next major version.

v9.3.0

20 Dec 13:11
1d080a1
Compare
Choose a tag to compare
  • Set a default cache implementation that uses UserDefaults to store the latest config.json.
  • Added getAllValueDetails() method.
  • Deprecated getVariationId() and getAllVariationIds() methods in favor of getValueDetails() and getAllValueDetails().

v9.2.4

29 Nov 20:08
Compare
Choose a tag to compare

Fixed

  • Call onClientReady upon offline mode initialization.