All Projects → codeOfRobin → CloudKitFeatureFlags

codeOfRobin / CloudKitFeatureFlags

Licence: MIT license
A library that lets you setup feature flagging for your iOS app using CloudKit

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to CloudKitFeatureFlags

nestjs-config
NestJS Module for Nonfig services. Nonfig combines Configurations and Features. So you change features, and release swiftly, and measure to digital impact.
Stars: ✭ 40 (-56.04%)
Mutual labels:  feature-flags, feature-toggles
eight ball
Ruby gem for querying feature flags
Stars: ✭ 17 (-81.32%)
Mutual labels:  feature-flags, feature-toggles
doorkeeper
A Feature Toggle for PHP
Stars: ✭ 16 (-82.42%)
Mutual labels:  feature-flags, feature-toggles
js-sdk
JavaScript frontend SDK for ConfigCat. ConfigCat is a hosted feature flag service: https://configcat.com. Manage feature toggles across frontend, backend, mobile, desktop apps. Alternative to LaunchDarkly. Management app + feature flag SDKs.
Stars: ✭ 21 (-76.92%)
Mutual labels:  feature-flags, feature-toggles
react-client
React JS SDK client for Split Software
Stars: ✭ 23 (-74.73%)
Mutual labels:  feature-flags, feature-toggles
flipper
Feature Flipper, Feature Flags, Rollout Flags, Feature Toggles for Crystal
Stars: ✭ 21 (-76.92%)
Mutual labels:  feature-flags, feature-toggles
unleash-docker
Docker container for unleash
Stars: ✭ 89 (-2.2%)
Mutual labels:  feature-flags, feature-toggles
php-server-sdk
LaunchDarkly Server-side SDK for PHP
Stars: ✭ 31 (-65.93%)
Mutual labels:  feature-flags, feature-toggles
ld-redux
A library to integrate launch darkly with react redux
Stars: ✭ 33 (-63.74%)
Mutual labels:  feature-flags, feature-toggles
PowerShell-FeatureFlags
PowerShell module containing a Feature Flags implementation based on a local config file.
Stars: ✭ 15 (-83.52%)
Mutual labels:  feature-flags, feature-toggles
flagsmith-java-client
Java Client for Flagsmith. Ship features with confidence using feature flags and remote config. Host yourself or use our hosted version at https://www.flagsmith.com/
Stars: ✭ 16 (-82.42%)
Mutual labels:  feature-flags, feature-toggles
YMFF
Feature management made easy.
Stars: ✭ 26 (-71.43%)
Mutual labels:  feature-flags, feature-toggles
laravel-rollout
A package to integrate rollout into your Laravel project.
Stars: ✭ 23 (-74.73%)
Mutual labels:  feature-flags, feature-toggles
ld-scheduler
Schedule Launch Darkly flags on or off
Stars: ✭ 14 (-84.62%)
Mutual labels:  feature-flags, feature-toggles
js-client-sdk
LaunchDarkly Client-side SDK for Browser JavaScript
Stars: ✭ 93 (+2.2%)
Mutual labels:  feature-flags, feature-toggles
pheature-flags
Pheature flags main repository
Stars: ✭ 75 (-17.58%)
Mutual labels:  feature-flags, feature-toggles
java-server-sdk
LaunchDarkly Server-Side SDK for Java
Stars: ✭ 71 (-21.98%)
Mutual labels:  feature-flags, feature-toggles
php-client
PHP SDK client for Split Software
Stars: ✭ 14 (-84.62%)
Mutual labels:  feature-flags, feature-toggles
Toggler
Feature toggle library for PHP
Stars: ✭ 18 (-80.22%)
Mutual labels:  feature-flags, feature-toggles
unleash-client-java
Unleash client SDK for Java
Stars: ✭ 86 (-5.49%)
Mutual labels:  feature-flags, feature-toggles

CloudKitFeatureFlags

Swift

Features (hah!):

  • Rollouts in 10% increments (10%, 20%, 30% etc.)
  • A unique statistical approach, we don't need to store a large number of records or do lots of operations to rollback/deploy feature flags.
  • Most operations typically involve editing one row in your CK Public database.
  • All operations take place via the public databse, so no worrying about users running out of iCloud space.
  • Tests to ensure rollouts are reasonably accurate (there's tests to ensure rollouts are at least 0.5% accurate on user populations of 100k users, and 1% accurate on 10k users)
  • (Coming soon) Release features to specific allow-listed users - such as app reviewers
  • (Coming Soon) Admin interface to create and deploy feature flags
  • (Coming Soon) Gate feature flags to avoid leaking features currently in development, may require a CloudKit Schema migration

Broad ideas and implementation ideas here: https://www.craft.do/s/VIzO95A9chLeoW

Test application here: https://github.com/codeOfRobin/TestingCloudKitFeatureFlags (requires setting up a CloudKit container and changing the signing capabilities with your  Developer account)

Guide

Installation

Add to your project via Swift Package manager, package URL: https://github.com/codeOfRobin/CloudKitFeatureFlags. Since we're still early along, it's recommended to use the main branch.

Usage

  • Create feature flags somehow You can use the test app, or simply do it via the CloudKit dashboard. This is roughly the schema you're looking for (I'm working on making this experience better, feel free to open an issue if you need help!)
  • In your app, install the package and create an instance of CloudKitFeatureFlagsRepository
let container = CKContainer(identifier: "your container goes here, please make sure it's correctly set up in the "Signing and Capabilities section in Xcode")

lazy var featureFlags = CloudKitFeatureFlagsRepository(container: container)

/// For Combine reasons
var cancellables = Set<AnyCancellable>()
  • Use the featureFlagsRepository to query the status of a feature flag. In the future (coming soon!) it'll update realtime via a CKSubscription
featureFlags.featureEnabled(name: "some_feature_flag").sink(receiveCompletion: { (_) in }) { (value) in
  /// use `value` to change your UI imperatively, or bind the publisher directly!
  print(value)
}.store(in: &cancellables)
  • And that's it! You can control feature flags and rollouts directly from the CloudKit dashboard 🎉🎉🎉
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].