releases.shpreview
LaunchDarkly/iOS SDK

iOS SDK

$npx -y @buildinternet/releases show launchdarkly-ios-sdk
Mon
Wed
Fri
AprMayJunJulAugSepOctNovDecJanFebMarApr
Less
More
Releases7Avg2/moVersionsv11.0.0 → v9.15.1
Feb 11, 2021
[5.3.2] - 2021-02-11

Fixed

  • Updated to prevent a crash in dispatch_group_leave.cold.1 that would rarely occur as the SDK transitioned to an online state for a given configuration or user. This issue may have been exacerbated for a short period due to a temporary change in the behavior of the LaunchDarkly service streaming endpoint. Thanks to all the users who reported (#235).
  • Updated LDSwiftEventSource dependency to correct an issue where a streaming connection could sometimes reconnect after being set offline.
Dec 16, 2020
[5.3.1] - 2020-12-15

Fixed

  • Decoupled FlagStore from LDUser to fix a bug where multiple environments could overwrite each other's flag values.
Nov 6, 2020
[5.3.0] - 2020-11-06

Added

  • Adds to LDConfig the ability to dynamically configure the HTTP headers on requests through the headerDelegate property, which has the type RequestHeaderTransform.
Oct 9, 2020
[5.2.0] - 2020-10-09

Added

Fixed

  • Corrected a bug preventing private custom attribute names being recorded in events when all custom attributes are set to be private by including "custom" in the LDUser.privateAttributes or LDConfig.privateUserAttributes properties.
  • Update Nimble to 9.0 and Quick to 3.0 to fix tests when run with Swift 5.3.
  • Fixes build warnings in Xcode 12.0.0.
Aug 4, 2020
[5.1.0] - 2020-08-04

Added

  • The ability to specify additional headers to be included on HTTP requests to LaunchDarkly services using LDConfig.additionalHeaders. This feature is to enable certain proxy configurations, and is not needed for normal use.
  • Support for building docs with jazzy. These docs will be available through GitHub Pages.

Fixed

  • SDK causing nested bundles in archived product when including the SDK through Carthage. This caused rejections when submitted to the App Store. Thanks to @spr for reporting (#217).
  • SDK causing application to expect LDSwiftEventSource dynamic framework when built with SwiftPM, which does not include the dynamic framework in the resulting application. This causes the application to be rejected when submitted to the App Store. Thanks to @spr for reporting (#216).
Jul 23, 2020
[5.0.1] - 2020-07-23

Note that this release contains the notes for the 5.0.0 release, which should not be used.

This major version has an accompanying Migration Guide. Please see the guide for more information on updating to this version of the SDK, as the following is just a summary of the changes.

Added

  • Support for multiple LaunchDarkly projects or environments. Each set of feature flags associated with a mobile key is called an environment. This adds:
    • LDConfig.setSecondaryMobileKeys and LDConfig.getSecondaryMobileKeys which allows configuring a mapping of names to the SDK keys for each additional environment. LDConfig.mobileKey is still required, and represents the primary environment.
    • LDClient.get(environment: ) which allows retrieving an LDClient instance for a given environment after the SDK has been initialized.
    • Equivalent methods have been added to the Objective-C bindings for LDConfig and LDClient.
  • The SDK now periodically sends diagnostic data to LaunchDarkly, describing the version and configuration of the SDK, the operating system the SDK is running on, the device type (such as "iPad"), and performance statistics. No credentials, device IDs, or other identifiable values are included. This behavior can be disabled or configured with the new LDConfig properties diagnosticOptOut and diagnosticRecordingInterval.
  • The SDK can now be configured with LDConfig.wrapperName and LDConfig.wrapperVersion to send an additional header (X-LaunchDarkly-Wrapper) in requests to LaunchDarkly. This was added so that the usage of wrapper libraries (such as the React Native SDK) could be recorded independently.
  • Added the evaluationReasons field to the Objective-C bindings for LDConfig to allow configuring the SDK to request evaluation reasons when the application is written in Objective-C.
  • The SDK now supports using the Swift Package Manager to include the SDK as a dependency.
  • LDInvalidArgumentError that is thrown on incorrect API usage.
  • Added typeMismatch field to ObjcLD<T>ChangedFlag classes (bound to LD<T>ChangedFlag in Objective-C) that is true/YES when the flag value did not match the registered observer.

Changed (build)

  • Minimum deployment targets have been changed as follows:
    • iOS 8.0 -> 10.0
    • macOS 10.10 -> 10.12
    • tvOS 9.0 -> 10.0
    • watchOS 2.0 -> 3.0
  • The SDK has replaced the internal dependency on the Objective-C eventsource implementation DarklyEventSource with a pure Swift implementation LDSwiftEventSource. Build configurations that manually specify the DarklyEventSource dependency framework may require additional upgrade steps. See the Migration Guide for more information.
  • Internally, the SDK no longer includes its dependencies using CocoaPods and Carthage. This simplifies including the SDK as a subproject of your application for integrating the SDK without a package manager.

Changed (API)

  • The LDClient instance method start has been replaced with a static method LDClient.start for initializing all configured environments.
  • LDChangedFlag no longer includes the oldValueSource and newValueSource properties, as LDFlagValueSource was removed.
  • The following were renamed for consistency internally and with other SDKs:
    • LDClient.reportEvents() has been renamed to LDClient.flush().
    • LDClient.stop() has been renamed to LDClient.close().
    • LDClient.trackEvent(key: data: ) method have been renamed to LDClient.track(key: data: )
    • LDClient.allFlagValues has been renamed to LDClient.allFlags.
    • EvaluationDetail has been renamed to LDEvaluationDetail.
    • The ObjC<T>EvaluationDetail classes have been renamed to corresponding ObjcLD<T>EvaluationDetail. The names when exposed in Objective-C have been updated to replace the ObjC prefix with LD, e.g. ObjCStringEvaluationDetail to LDStringEvaluationDetail.
  • LDClient.track no longer throws JSONError and instead throws LDInvalidArgumentError.
  • The fallback parameter of all LDClient and ObjcLDClient variation methods has been renamed to defaultValue to help distinguish it from fallback values in rules specified in the LaunchDarkly dashboard.

Changed (behavioral)

  • The maximum backoff delay between failed streaming connections has been reduced from an hour to 30 seconds. This is to prevent being unable to receive new flag values for up to an hour if the SDK has reached its maximum backoff due to a period of network connectivity loss.
  • The backoff on streaming connections will not be reset after just a successful connection, rather waiting for a healthy connection for one minute after receiving flags. This is to reduce congestion in poor network conditions or if extreme load prevents the LaunchDarkly service from maintaining an active streaming connection.
  • When sending events to LaunchDarkly, the SDK will now retry the request after a one second delay if it fails.
  • When events fail to be sent to LaunchDarkly, the SDK will no longer retain the events. This prevents double recording events when the LaunchDarkly service received the event but the SDK failed to receive the acknowledgement.
  • The LDClient.identify, LDClient.flush, LDClient.setOnline, and LDClient.close instance methods now operate on all configured environments. Any completion arguments will complete when the operation has completed for all configured environments.

Removed

  • The LDClient.shared static property and its ObjcLDClient.sharedInstance wrapper property has been removed. After calling LDClient.start, the initialized instances can be retrieved with LDClient.get(environment: ).
  • The LDClient.config and its ObjcLDClient.config wrapper property has been removed, configuration of the SDK should be done with LDClient.start.
  • The LDClient.user and its ObjcLDClient.user wrapper property has been removed. The initial user should be configured with LDClient.start, and updates to the user should be performed with LDClient.identify.
  • LDFlagValueSource and ObjcLDFlagValueSource were removed in favor of using LDEvaluationDetail and ObjcLD<T>EvaluationDetail.
  • The Objective-C wrapper classes ObjcLD<T>VariationValue (bound in Objective-C to LD<T>VariationValue), which wrapped a flag value and its source, have been removed.
  • variationAndSource methods were removed from LDClient and its ObjcLDClient wrapper in favor of variationDetail methods.
  • LDUser.init?(object: ) and corresponding ObjcLDUser failable initializers were removed.
  • JSONError and JSONErrorDomain extensions on JSONSerialization were removed.
  • Removed isEqual extension to Array, this was only intended for internal SDK use.
  • Removed == and != extension to Optional<[String: Any]> (note that this was not declared as Equatable conformance). This extension was only intended for internal SDK use.
  • Removed LDFlagValue enum and the ObjcLDFlagValue wrapper which were exposed but not used in any public APIs.
  • Removed Sysctl struct (only available on macOS) which was only intended for internal SDK use.
[5.0.0] - 2020-07-23

Please use the 5.0.1 instead. This release incorrectly specifies its version and is unavailable on CocoaPods.

Jun 4, 2020
[4.7.0] - 2020-06-03

Added

  • Added a new method signature for startCompleteWhenFlagsReceived that accepts an additional argument specifying a maximum time to wait for flags to be received before calling the completion closure. The completion closure on this method will be passed a Bool on completion indication whether the operation timed out.
May 27, 2020
[4.6.0] - 2020-05-26

Added

  • Added maxCachedUsers option to LDConfig. You can now specify the number of users to be cached or use -1 for unlimited cached users.

Fixed

  • FlagStore properly synchronizes reads and writes to prevent a potential race condition.
Mar 27, 2020
[4.5.0] - 2020-03-26

Changed

  • Updated SDK code to build, run, and test on Xcode 11.4.
Feb 13, 2020
[4.4.1] - 2020-02-04

Changed

  • The SDK will now retry an event send once when the initial request fails.
Jan 15, 2020
[4.4.0] - 2019-12-19

Added

  • Added startCompleteWhenFlagsReceived function which contains modified completion behavior. This new function's completion will only return after flag values are received. Previously the start completion returned when the SDK went online.
  • The SDK now specifies a uniquely identifiable request header when sending events to LaunchDarkly to ensure that events are only processed once, even if the SDK sends them two times due to a failed initial attempt.
Dec 20, 2019
[4.3.2] - 2019-12-19

Fixed

  • Flag change listeners will now be called when a flag value changes but a variation number does not change. Previously, flag listeners were not called when a value assigned to a variation was manually edited in the dashboard or via the API.
Dec 13, 2019
[4.3.1] - 2019-12-12

Changed

  • Updated to ios-eventsource version 4.1.0. This negates the need to use_frameworks! when using the React Native SDK. This change does not affect the iOS SDK.
Dec 3, 2019
[4.3.0] - 2019-12-3

Added

  • Implemented variationDetail which returns an Evaluation Reason giving developers greater insight into why a value was returned.
  • Added support for the latest Experimentation features allowing increased value from A/B/n testing. The track method now supports an additional metricValue parameter.
Nov 15, 2019
[4.2.1] - 2019-11-15

Changed

  • Updated to ios-eventsource version 4.0.3. This appends a platform name to bundle identifiers. (Thanks, cswelin!)

Fixed

  • Comparing two nil objects of type [String: Any]? no longer causes a crash. (#197)
Oct 25, 2019
[4.2.0] - 2019-10-25

Added

  • The identify function allows a completion to be called after a user is updated.
  • The Connection Status API allows greater introspection into the current LaunchDarkly connection and the health of local flags. • This feature adds a new class called ConnectionInformation that contains properties that keep track of the current connection mode e.g. streaming or polling, when and how a connection failed, and the last time flags were updated. This class can be accessed from LDClient.shared.getConnectionInformation. • Additionally, a new observer function called observeCurrentConnectionMode allows your application to listen to changes in the SDK's connection to LaunchDarkly.

Changed

  • The user property is now deprecated in favor of the identify function.
Jul 11, 2019
[4.1.2] - 2019-07-11

Fixed

  • WatchKit is now conditionally imported in WatchOS only to fix an error in Xcode 11.
  • Comparing two nil objects of type [String: Any]? no longer causes a crash.
Jul 9, 2019
[3.0.4] - 2019-07-09

Changed

  • Updated to ios-eventsource version 4.0.2. This fixes a potential hang on LDClient start.
[4.1.1] - 2019-07-09

Change

  • Updated to ios-eventsource version 4.0.2. This fixes a potential hang on LDClient start.
Latest
9.15.1
Tracking Since
Oct 28, 2015
Last checked Apr 19, 2026