Feature Flags Proxy
The following page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.
Release notes
In this release, we added support for a feature flag proxy. This proxy sits between the Feature Flag server and the client consuming the flag. This extends support for static web sites. The proxy solves performance issues since it caches the toggles and can easily scale up. It solves security concerns as all the user based decisions are done on the server side and for the single page use case, the proxy will make sure to send responses specific and limitted to the logged in user.
Problem to solve
As a developer developing a static web site, I want the ability to use Feature Flags to toggle on/off features directly on my website/
Intended users
User experience goal
Proposal
Create a proxy API endpoint for Unleash Feature flag requests (server) in GitLab that allows users to provide their unleash context and returns all feature flags and their resolved state (on/off)
API Schema
We currently don't support variants, so providing nil
for that field should be fine. The API should return a list of IToggle
s
Metrics are sent to ${baseUrl}/client/metrics
, so that endpoint should return 200 OK
to support the client.
export interface IVariant {
name: string;
payload?: {
type: string,
value: string,
};
}
export interface IToggle {
name: string;
enabled: boolean;
variant: IVariant;
}
interface IResopnse {
data: Array<IToggle>;
}
Further details
The proxy solves three important aspects:
Performance– The proxy will cache all toggles in memory, and will be running on the edge, close to your end-users. A single instance will be able to handle thousands of request/sec, and you can scale it easily by adding additional instances.
Security – The proxy evaluates the feature flags for the user on the server-side, and only exposes the results of enabled feature flags for a specific user.
Privacy – If you run the proxy yourself (we can host it as well though) we will not see your end users. This means that you still have full control of your end-users, the way it should be!