Switchbox vs PostHog Feature Flags
PostHog is the feature flag tool most likely to already be sitting in your stack, which makes this the hardest comparison I have to write honestly. If you use PostHog for analytics, flags are right there, for free, wired into the same events. I am not going to try to talk you out of that. What I can do is draw the real line between a flag feature inside an analytics platform and a service built only for flags, and let you decide which one your situation calls for.
I build the second kind. Here is the honest split.
This Is Not a Price Argument
Let me get this out of the way, because pretending otherwise would cost me your trust on everything after it. PostHog's free tier gives you a million flag requests a month, and its server-side local evaluation can stay free more or less indefinitely. On paper, their free tier beats my paid one. If price is the only axis you care about and you are comfortable in their ecosystem, PostHog wins that line and I am not going to fake a way around it.
The comparison that actually matters is about shape, not sticker: a dedicated flag tool versus a flag feature bundled into an analytics product, and where your users' data goes when a flag is evaluated.
How Each One Evaluates a Flag
PostHog's evaluation model has a wrinkle worth understanding, because it changes the privacy story. Its server SDKs (Node, Python, Go, and the rest) can evaluate locally: they fetch flag definitions periodically and compute the answer in your process, the same model Switchbox uses. But its browser SDK evaluates remotely by default. Each check calls PostHog's API, sends the user's context, and receives the result. Local evaluation is not available in the browser SDK.
Switchbox evaluates on-device everywhere, browser included. The full config is a static JSON file published to Cloudflare's edge; the SDK fetches it on a poll and evaluates every rule locally. The user's context never leaves their machine, because there is no server of mine for it to be sent to.
| PostHog flags | Switchbox | |
|---|---|---|
| What it is | A feature of an analytics/product suite | A standalone feature flag service |
| Browser evaluation | Remote: context sent to PostHog per check | On-device: context never leaves the browser |
| Server evaluation | Local (Node, Python, Go, and more) | Local (Python, JavaScript) |
| Pricing | Per flag request, 1M/mo free | Flat $29/mo, reads unmetered |
| Self-host | Yes, open source | No, hosted only |
When You Should Use PostHog
- You already run PostHog for analytics. Flags are in the same tool, tied to the same events, at near-zero marginal cost. This is the sensible choice and you should take it.
- You want flags, experiments, and analytics unified. PostHog is built to connect a flag to an experiment to a metric in one place. Switchbox deliberately does not do the analytics half.
- You want to self-host. PostHog is open source; Switchbox is hosted only.
When Switchbox Is the Better Fit
- Flags are the actual job. If all you want is a toggle with rollouts and targeting, a tool built only for that has no event pipeline to adopt and no analytics product to take on.
- Client-side privacy matters. Switchbox's browser SDK evaluates on-device, so user context stays on the user's machine. For client-side flags specifically, that is a real difference from PostHog's remote browser evaluation. (Their server SDKs evaluate locally too, so this is a claim about the browser, not a blanket one.)
- You want reads you never have to count. Switchbox evaluations are unmetered with no request budget to reason about, so nothing about your flag reads grows a line on your bill as traffic climbs.
The one-line version: if you are already all-in on PostHog, use PostHog. If flags are the job and you would rather not adopt an analytics platform to get them, that is what Switchbox is for.
Try It
Five minutes, dashboard to CDN to your code:
pip install switchbox-flags
from switchbox import Switchboxclient = Switchbox(sdk_key="your-sdk-key-from-dashboard")if client.enabled("my_first_flag", user={"user_id": "42"}):print("served from the edge, evaluated locally")
The quickstart walks the whole path. For the full market picture, the honest comparison of every major flag service sorts the field, and the architecture post explains why the config is just a file on a CDN.