CloudBees Feature Management - iOS changelog

CloudBees Feature Management is an advanced feature flagging solution that lets your development teams quickly build and deploy applications without compromising on safety. By providing a gradual release mechanism and a simple way to define target audiences, CloudBees Feature Management allows developers and product managers to optimize feature releases and customize the user experience. CloudBees Feature Management gives teams control over features that are in staging, production, or any environment in the deployment pipeline.

2021-03-08: V4.10.9

  • Fixing split condition for different locales

2020-09-22: V4.9.22

  • Making sure push notifications only get new configurations, but don’t unfreeze flags

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