Skip to content
This repository has been archived by the owner on Oct 29, 2024. It is now read-only.

Releases: launchdarkly/react-native-client-sdk

6.1.1

18 Mar 17:23
Compare
Choose a tag to compare

[6.1.1] - 2022-03-18

Fixed:

  • iOS: Fixed race condition in LDSwiftEventSource that could cause a crash if the stream is explicitly stopped (such as when identify is called) while the stream is waiting to reconnect.

6.1.0

26 Feb 01:07
Compare
Choose a tag to compare

[6.1.0] - 2022-02-25

Added:

  • Added privateAttributeNames configuration option for LDConfig allowing the configuration of private attributes for all users. (#102)

Fixed:

  • Android: Updated Android SDK dependency to 3.1.3.
  • Android: Added missing native module API stubs to prevent warning on NativeEventEmitter. (#116)
  • iOS: Fixed ownership handling of native callbacks to avoid garbage collection of all flags and connection mode listeners that are still in use. (#106)

6.0.0

10 Feb 21:50
Compare
Choose a tag to compare

[6.0.0] - 2022-02-10

Added:

  • Expanded supported versions of React Native to include 0.65, 0.66, and 0.67 releases.
  • Added a manual testing application to the repository.
  • Extensive testing of build configurations in CI to allow quicker validation of compatibility against multiple React Native releases and XCode versions.

Changed:

  • iOS: The native podspec for iOS has been renamed to fix automatic linking. Updating may require removing references to the old podspec.

Fixed:

  • iOS: Fixed an issue that prevented using jsonVariation and jsonVariationDetail with array default values. (#112)

Removed:

  • Support for React Native 0.63.

5.1.1

21 Jan 22:17
Compare
Choose a tag to compare

[5.1.1] - 2022-01-21

Changed:

  • The key property on LDUser objects is now optional, if it is not provided the SDK will automatically generate a key and mark the user as anonymous. See the API documentation for more details.
  • Updated native Android and iOS SDK to the 3.1.2 release and 5.4.4 release respectively.

Fixed:

  • Android: Removed reference of jcenter from the Gradle build to reflect the shutdown of the JCenter artifact repository.
  • iOS: isOffline has been corrected to no longer return true when online and false when offline.
  • iOS: Fixed memory leak when stream connections are terminated caused by the native server sent events implementation.

5.1.0

30 Sep 21:48
Compare
Choose a tag to compare

[5.1.0] - 2021-09-30

Added:

  • Added the inlineUsersInEvents configuration option which can be used to configure the SDK to include full user details in all analytics events.

Changed:

  • Restored compatibility with React Native 0.63, this version of the SDK can be used with either 0.63 or 0.64 React Native releases.

Fixed:

  • Added missing TypeScript definition for autoAliasingOptOut configuration field.
  • Fixed an outdated LDClient#isInitialized description (thanks, christophby!)

5.0.1

03 Sep 22:24
Compare
Choose a tag to compare

[5.0.1] - 2021-09-03

Fixed:

  • Android: Fixed an inconsistency in the argument type given to all flags listeners. On Android the callback was given a string with a JSON representation of an array of strings, rather than an actual array of strings. (Thanks, rodperottoni!) (#89)
  • Android: Fixed runtime crashes caused by code shrinking when compiling with Proguard/R8. The SDK now specifies consumer Proguard rules for Android SDK methods accessed with runtime reflection.
  • Android: Removed the android:allowBackup tag from the SDK's AndroidManifest.xml file to avoid requiring applications to explicitly replace the tag if given a different value. (#138)
  • Android: Changed the SDK's network detection check to consider network transport over a VPN as a connected state. This fixes an issue where the SDK would prevent network requests on a VPN due to considering the network to be unavailable. (Thanks, lguipeng!)

5.0.0

20 Aug 23:29
Compare
Choose a tag to compare

[5.0.0] - 2021-08-20

Added:

  • The SDK now supports the ability to control the proportion of traffic allocation to an experiment. This works in conjunction with a new platform feature now available to early access customers.
  • Added numberVariation and numberVariationDetail to LDClient.
  • Added the alias method to LDClient. This can be used to associate two user objects for analytics purposes with an alias event.
  • Added the autoAliasingOptOut configuration option. This can be used to control the new automatic aliasing behavior of the identify method; by setting autoAliasingOptOut to true, identify will not automatically generate alias events.
  • Improved testing of JavaScript wrapper using mock native modules.

Changed (requirements/dependencies/build):

  • iOS: The underlying SDK version has been updated from 5.4.1 to 5.4.3. See the release notes for details.
  • Android: The underlying SDK version has been updated from 2.14.1 to 3.1.0. See the release notes for details.
  • Android: Migrated from using the Android Support Libraries to using AndroidX from Jetpack.
  • Android: The minimum API version has been raised from API level 16 (Android 4.1 Jelly Bean) to API level 21 (Android 5.0 Lollipop).
  • Android: The SDK no longer has a dependency on Google Play Services. This dependency was only used on pre-21 Android API levels to improve TLS 1.2 compatibility, as the minimum Android version has been raised to 21, the dependency is no longer necessary.
  • Android: The SDK is now built with modern Gradle (6.7, Android plugin 4.1.3) and uses Java 8.

Changed (API/behavioral):

  • The LDClient.identify method will now automatically generate an alias event when switching from an anonymous to a known user. This event associates the two users for analytics purposes as they most likely represent a single person. This behavior can be disabled with the autoAliasingOptOut configuration option.
  • The LDClient <type>Variation and <type>VariationDetail methods (e.g. boolVariation) now validate that default values are the correct type. If the default value fails validation the Promise will be rejected.
  • The primitive variation methods, LDClient.boolVariation, LDClient.boolVariationDetail, LDClient.numberVariation, and LDClient.numberVariationDetail, now require a default value parameter (rather than being optional). If missing, the Promise will be rejected.
  • Android: LDClient.allFlags will no longer convert String flags into JSON Arrays or Objects when the value can be parsed into JSON Arrays or Objects.
  • Android: For compatibility with older SDK behavior, the LDClient.stringVariation method could be used to retrieve JSON flags in a serialized representation. This compatibility behavior has been removed, and attempts to request a JSON valued flag using stringVariation will behave the same as other mismatched type variation calls.
  • Android: All log messages are now tagged LaunchDarklySdk for easier filtering. Thanks to @valeriyo for the suggestion (#113).
  • Android: The when the country user is set, the SDK will no longer attempt to look up the country from the provided String (attempting to match it as an ISO-3166-1 alpha-2, alpha-3 code; or a country name) and set the country to the resultant IOS-3166-1 alpha-2 only if successful. The SDK no longer gives this attribute special behavior, and sets the user's country attribute directly as the provided String.
  • Android: If the debugMode configuration option is set to true, the SDK will now enable detailed timber logging.
  • Android: Custom user attributes that are Objects will no longer be ignored.
  • Android: Elements of Array custom user attributes will no longer be ignored if they are not Strings or Numbers.
  • Android: Array custom user attributes with mixed types will no longer ignore non-String elements.

Fixed (Android):

  • Catch SecurityException when thrown on call to getNetworkCapabilities used to detect current network availability. (#129)
  • Explicitly flag PendingIntents as FLAG_IMMUTABLE on Android SDK versions that support doing so. Explicitly specifying mutability is required when targeting Android S+. (#133)
  • Increased the compile-time dependency on jackson-databind to 2.10.5.1, due to CVE-2020-25649.
  • Update the dependency on the shared launchdarkly/java-sdk-common to 1.1.2 to prevent Jackson from showing up as a transitive dependency in tools that inspect module metadata.
  • The Android manifest has been updated to explicitly specify the android:exported attribute on declared receiver elements. This is to meet new requirements in the upcoming Android 12 release.
  • Fixed an issue where the SDK could log error level messages when attempting to send diagnostic events without an internet connection. The SDK will no longer attempt to send diagnostic events when an internet connection is known to be unavailable, and will not log an error level message if the connection fails. Thanks to @valeriyo for reporting (#107).
  • Fixed an issue where flags listeners would be informed of changes to unchanged flags whenever the SDK receives an entire flag set (on a new stream connection, a poll request, or any stream updates behind a relay proxy).
  • Fixed an issue where a NullPointerException is thrown if LDClient.close() is called multiple times.
  • Improved the proguard/R8 configuration to allow more optimization. Thanks to @valeriyo for requesting (#106)
  • Fixed a potential issue where the SDK could cause additional throttling on requests to the backend service when previously throttled requests had been cancelled before completion.

Fixed (iOS):

  • Fixed an issue where 304 NOT_MODIFIED responses to SDK polling mode requests would be considered error responses. This could cause the completion on a identify request to not complete, and gave erroneous connection information data and logging output.
  • Fixed a crash when attempting to cache flag data containing variation JSON values containing a JSON null value nested within a JSON array.
  • Avoid crash when timeout/interval configuration options are set to sufficiently large values. This was caused when converting these values to an Int value of milliseconds. (Thanks, @delannoyk!)
  • Update Quick test dependency to 3.1.2 to avoid build warnings and adopt security fixes. (#243)
  • Use AnyObject over class in protocol inheritance to avoid compiler warnings. (#247)

Removed:

  • LDClient.intVariation and LDClient.floatVariation. Please use LDClient.numberVariation instead.
  • LDClient.intVariationDetail and LDClient.floatVariationDetail. Please use LDClient.numberVariationDetail instead.

4.2.2

15 Jun 16:24
Compare
Choose a tag to compare

[4.2.2] - 2021-06-15

Fixed:

  • Correct usages of undeclared variables when registering or un-registering connection mode or all flags listeners. (#82)

4.0.4

02 Jun 20:22
Compare
Choose a tag to compare

[4.0.4] - 2021-06-02

Fixed:

  • iOS: Fixed an issue where an exception was thrown when calling LDClient.configure with an optional timeout (#80).

4.2.1

01 Jun 23:35
Compare
Choose a tag to compare

[4.2.1] - 2021-06-01

Fixed:

  • iOS: Fixed an issue where an exception was thrown when calling LDClient.configure with an optional timeout (#80).
  • iOS: Improved consistency with Android for LDClient.isInitialized. Both implementations will now reject the promise if the client has not been configured.
  • iOS: Avoid exceptions on iOS when certain methods are called after LDClient.close. (Thanks, andvalsol)! (#75)
  • Android: Fixed an issue where the promise for LDClient.configure could be resolved before the client had finished initializing when not providing the optional timeout parameter.
  • Android: Fixed an issue where LDClient.allFlags would reject the promise when the client was configured but not yet initialized, rather than resolving with any cached flags.