Traffic flow
When your app calls its API endpoint, here is what happens:api.your-game.com silently redirects traffic to your Fleack tenant, which acts as a transparent proxy.
The five-step request lifecycle
Fleack receives the request
Your app sends its normal API call to
api.your-game.com. Because the CNAME points to your Fleack tenant, the request arrives at the Fleack edge instead of your backend.Fleack forwards the request unchanged
Fleack proxies the request — headers, body, method, and query parameters — to your real backend exactly as your app sent it. Your backend sees the original request without modification.
Your backend responds
Your backend returns its normal response. Fleack holds that response while it checks whether any running test matches the endpoint and the user.
Fleack injects a variant if a test matches
If a running test targets this endpoint and the user is in the assigned segment, Fleack rewrites the specific JSON path with the user’s assigned variant value. Every other byte of the response is untouched. If no test matches, the response passes through unchanged.
What Fleack captures
For every request that passes through the edge, Fleack records:- HTTP method and normalized path — routing query parameters (filter, sort, pagination keys) are excluded so the same endpoint isn’t counted as multiple distinct endpoints.
- HTTP status, response latency, and a response body sample — body samples are captured from GET responses only, and always from the upstream response before any variant injection. The Levers catalog always reflects what your backend actually returns, never a rewritten test value.
- A
user_hint— a coarse user identity derived from request headers, path segments, query parameters, or the body. When no real identity can be extracted, Fleack falls back to a hash ofuser-agentplus IP. - Profile-level scalars — from endpoints that return per-user data (level, ARPU, days since install). These power segmentation without requiring any additional instrumentation on your part.
SLOs
| Metric | Target | What it means |
|---|---|---|
| Edge latency p95 | < 40 ms | Time Fleack adds between receiving the request and forwarding it, plus injection overhead on the response path. |
| Availability | 99.9% (Pro) / 99.99% (Enterprise) | Percentage of requests Fleack accepts and either forwards or returns a defined error for. |
| Fail-open success rate | 100% | If Fleack itself fails, your users always see the original backend response or a clean 502. Fleack never breaks your app. |
What you do not have to do
- No SDK to install. Your app’s
Podfile,build.gradle, orpackage.jsondoes not change. - No new app build to ship. No App Store review, no Play Store rollout, no waiting for users to update.
- No new permissions. Fleack does not require any additions to your
Info.plistorAndroidManifest.xml. - No analytics rewiring. Your existing analytics continue to work. Fleack’s exposure logging runs as an additional stream alongside them.
When Fleack is the wrong choice
Fleack requires your app to make a network call that Fleack can intercept. There are a few situations where that’s not possible:- Bundled config — if your app reads configuration from a file bundled into the binary (no API call), Fleack has nothing to intercept. Move that config to a backend endpoint first.
- Offline flag evaluation — if your use case requires millisecond feature flag decisions without a network round-trip, use a traditional SDK such as LaunchDarkly or Statsig. Fleack is online-only by design.
- Enterprise flag governance — if you need approval workflows, SOC 2 audit trails on every flag change, or role-based access controls across environments at scale, Fleack is not the right fit. Fleack is built for experimentation throughput, not flag operations discipline.
DNS setup
Add the CNAME record and verify traffic is flowing through Fleack.
Fail-open guarantee
Understand what happens when something goes wrong on Fleack’s side.