Unleash offers a number of client libraries (SDKs) designed to help you integrate Unleash into your applications. The SDKs provide an interface for fetching and evaluating feature flags.
With Unleash’s architecture, feature flags can be evaluated within the SDKs or Unleash Edge, making evaluations incredibly fast. SDKs cache feature flag data in memory, providing high reliability.
Unleash provides official SDKs for a number of programming languages. Our community has also contributed SDKs for additional languages.
Backend SDKs run in backend services. They communicate with Unleash or Unleash Edge using the Client API and require a client token. Backend SDKs perform the flag evaluation locally, meaning all user data is retained within the SDK.
Unleash offers the following backend SDKs:
Frontend SDKs are used in frontend and mobile applications. They communicate with Unleash or Unleash Edge through the Frontend API and require a frontend token. Unlike backend SDKs, frontend SDKs do not perform the flag evaluation locally. Instead, they fetch all enabled feature flags for a given Unleash Context. The flag evaluation happens either in Unleash Edge, or in the Unleash server, when using the Frontend API directly.
When the SDK initializes, it sets up an in-memory repository and retrieves a list of all enabled flags and their variants in a single request. Once fetched, the SDK serves flag values from memory, without making additional requests. It periodically refreshes the list of enabled flags to keep the data up to date.
Unleash offers the following frontend SDKs:
The following tables show which features are supported by each backend SDK. Some features are only applicable to specific SDKs, depending on the programming language or how the client is implemented.
Symbol Reference
✅ Implemented | ❌ Not supported | ⭕ Not implemented, but under consideration | N/A Not applicable to this SDK
All backend SDKs have basic support.
All backend SDKs have support for the basic operators (IN, NOT_IN).
Static fields (environment, appName), defined fields, and custom properties are supported in all backend SDKs.
isEnabled implementationIf you need a language or framework not covered officially, explore our community contributions:
Angular - TypeScript (angular-unleash-proxy-client by Karelics)
Angular - TypeScript (ngx-unleash-proxy-client)
Clojure (AppsFlyer/clojure-unleash)
ColdBox - CFML (coldbox-modules/unleashsdk)
Elixir (afontaine/unleash_ex)
Haskell (finn-no/unleash-client-haskell)
Kotlin (silvercar/unleash-client-kotlin)
NestJS - Node.js (pmb0/nestjs-unleash)
PHP (minds/unleash-client-php)
PHP - Symfony (Stogon/unleash-bundle)
Solid (nunogois/proxy-client-solid)
If you can’t find an SDK that fits your requirements, you can also develop your own SDK. To make implementation easier, check out these resources:
Once they have been initialized, all Unleash clients continue to function without an internet connection or in the event that the Unleash server has an outage.
Because the SDKs and the Unleash Edge cache their feature flag states locally and only communicate with the Unleash server or Edge at predetermined intervals, a broken connection only means that they won’t get any new updates.
Unless the SDK supports bootstrapping, it needs to connect to Unleash at startup to get its initial feature flag data set. If the SDK doesn’t have a feature flag data set available, all flags fall back to evaluating as disabled or as the specified default value.
By default, all SDKs reach out to the Unleash server at startup to fetch their flag configuration. Additionally, most of the backend SDKs and Unleash Edge support bootstrapping, which allows them to get their flag configuration from a file, the environment, or other local resources. These SDKs can function without any network connection.
Bootstrapping is also supported by the following frontend SDKs:
To identify which SDK instances are connected to Unleash, the following headers must be attached to all requests made by the SDK to the server (/api/client for backend SDKs and /api/frontend for frontend SDKs):
unleash-connection-id
Description: A unique identifier for the current SDK instance.
Format: Automatically generated using the idiomatic unique identifier generator for the specific programming ecosystem. For example, randomUUID from crypto in Node.js.
Additional information: This connection ID represents a long-lived connection between the SDK and the Unleash server. An SDK should generate a new connection ID each time an SDK instance is instantiated (for example, when calling new Unleash() in a Node SDK).
The same connection ID should be used for each request when an SDK instance polls the API. This header replaces the legacy unleash-instanceid which can be overwritten by the client.
Backend SDKs used in short-lived request/response models (like Next.js server mode and PHP) should not provide this header.
unleash-sdk
@ symbol and the semantic version of the SDK. For example, unleash-client-java@10.0.1 or unleash-client-node@6.4.4.unleash-appname (Optional)
billing-service.