iOS changelog

2020-05-03: V4.9.1

  • Self-managed support added

2019-09-02: V4.7.1

2019-03-13: V4.7.0

  • API version 1.8.0

  • Values are base64 - fixing " and () bug

  • Changes to API calls, using Cloudfront

2019-03-13: V4.4.0

  • open variants - control experiments values from the dashboard

  • flags view for tvOS

2018-11-12: V4.3.0

  • push updates - opened only for private beta

2018-11-07: V4.2.0

  • Added a search bar to the flags view

2018-08-02: V4.1.0

  • Encrypted in operator - you can now use in operator and the data will be passed to the clients encrypted

  • API version 1.7.0

  • Impression analytics

2018-06-11 iOS V3.0.1

  • Bug fix: flag view controller was null (due to tvOS macro definition issue)

2018-06-10: iOS V3.0.0

  • flag dependency support

  • add isArchive to flag impression handler

2018-01-31: iOS V2.0.1

  • ROX.fetch exposed

  • Minor fixes in objc <→ swift mapping, making init functions on RoxFlag nonull

  • Exposing RoxOptions as part of ROX (and not ROXCore)

2018-01-03: iOS V2.0.0

  • JIT based calculation - just in time flag calculation - from now the calculation of custom properties happens at the evaluation time of the flag (and not on app loading)

  • Property calculation context - Flag Name is passed to custom property calculation function:

ROX.setCustomProperty(key: "UserOptIn", value: {(flagName: String?) -> Bool in
  return UserDefaults.standard.bool(forKey: flagName!)
  • Impression API - hook in your own function to report/debug/log every flag evaluation

let options = ROXOptions()
options.impressionHandler = {
(report: ROXReportingValue? , experiment : ROXExperiment? ) -> Void in
  print("flag \(report!.name!) was evaluated with value \(report!.value!)")
ROX.setup(withKey:"592a6ea410b09711e5956239" , options: options)
  • Flag freeze level - allow specifying the freezing level of a flag, till this version the flag value remained consistent from the time it was evaluated till the application goes into the foreground or a unfreeze was called. Now have three different freeze level:

    • .none - The flag is constantly evaluated every time it is called

    • .untilForeground (default) - Once the flag is evaluated its value is persistent until the next foreground/ unfreeze event

    • .untilLaunch - Once the flag is evaluated its value is persistent till the app is terminated You can control the value of a specific flag via its constructor or globally by using RoxOptions.defaultFreezeLevel

  • Added RoxOptions.onConfigurationFetched - configuration fetched completion handler

  • Namespace is moved to register - instead of registering the container and placing the namespace inside the container object we move the container to the register function

ROX.register("", container: CollagesFlags.container)

Breaking changes:

  • Removed syncCompletionHandler from RoxOptions (replaced with onConfigurationFetched)

  • Namespace moved to register function

2017-11-19: iOS V1.1.4

  • Treating 403 as 404, changing S3 buckets for QA and localhost

2017-11-15: iOS V1.1.3

  • Remove Sandbox test device - dead code removal

  • Added Dev mode secert support

2017-10-29: iOS V1.1.2

  • Prevent race condition - will not initialize all flags on setup

2017-09-10: iOS V1.1.1

  • Rename Rox.get() to Rox.getContainer()

  • Fix - long query names cause disconnection with amazon s3 objects

  • Removed isTestDevice from SDK

  • Adding inArray to support in operand

  • Adding Enum Variant objective-c bridge

  • Fix - overrides are not persistent

  • Add default value to Enum Variant if it doesn’t exist

2017-08-31: iOS V1.0.14

  • Removed Analytics module

  • Fix - Flag view controller value was marked as true when original value was false

  • Adding force Value

2017-07-12: iOS V1.0.0

  • Inline docs added

  • Fix - reset of flags view controller

  • Rename ROXConfiguration to RoxConfiguration and ROXEnumVariant to RoxEnumVariant

  • Added typealias for ROX module

  • ROXRemoteVariable should be strongly typed to it’s type

  • Added support for loading bundled default data

  • Added swift API for remote Variables

  • Separating objective-c with swift API

  • Adding Configuration support

  • Adding Carthage support

  • Adding default values