Feature flags are not a luxury reserved for companies with 50+ engineers and six-figure tooling budgets. They are a fundamental deployment safety mechanism that every team needs.
Depify includes a full-featured flag engine in every plan, because feature flags should be part of your reliability stack, not a separate line item.
Feature flags decouple deployment from release. You can merge code to main, deploy it to production, and keep it invisible to users until you are ready.
Ship to 5% of users, monitor error rates, then scale to 100%. Reduce blast radius on every release.
Bad release? Flip a flag instead of reverting commits and redeploying. Takes seconds, not minutes.
Show new features to beta users, enterprise customers, or specific regions. Surgical precision.
Disable a feature in seconds when something goes wrong in production. Via dashboard, API, CLI, or Slack.
The most common use of feature flags is a percentage rollout: show the new checkout flow to 10% of users, then ramp up.
But the rollout must be sticky. If user Alice is in the 10% group, she must stay in the 10% group on every page load, every API call, every session.
Depify uses deterministic hashing (MurmurHash3 of flag_key + user_id) to assign each user to a consistent bucket.
# How sticky hashing works internally
hash = murmurhash3("new_checkout" + "user_12345")
bucket = hash % 100 # => 37
# If rollout percentage is 10%: bucket 37 >= 10, feature OFF
# If rollout percentage is 50%: bucket 37 < 50, feature ON
# User 12345 always gets bucket 37 for "new_checkout"
Sometimes you need surgical precision: show this feature to enterprise customers in Europe, or to users who signed up in the last 30 days.
| Operator | Description | Example |
|---|---|---|
equals | Exact match | plan equals "enterprise" |
not_equals | Does not match | role not_equals "viewer" |
contains | String contains | email contains "@company.com" |
not_contains | String does not contain | email not_contains "test" |
starts_with | String prefix | country starts_with "US" |
ends_with | String suffix | email ends_with ".edu" |
greater_than | Numeric comparison | age greater_than 18 |
less_than | Numeric comparison | days_since_signup less_than 30 |
in | Value in set | user_id in ["u1", "u2", "u3"] |
not_in | Value not in set | country not_in ["CN", "RU"] |
matches | Regex match | email matches ".*@gmail\\.com" |
Rules can be combined with AND/OR logic to create complex targeting segments reusable across multiple flags.
Boolean flags are the most common, but they are not sufficient for A/B testing. Depify supports multi-variate flags with up to 10 variants.
curl -X POST https://api.depify.io/api/v1/flags \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"flag": {
"key": "checkout_layout",
"name": "Checkout Page Layout",
"flag_type": "multivariate",
"variants": [
{ "key": "control", "value": "single_page", "weight": 34 },
{ "key": "variant_a", "value": "multi_step", "weight": 33 },
{ "key": "variant_b", "value": "accordion", "weight": 33 }
],
"environment": "production"
}
}'
Flags live in environments: development, staging, and production. Each environment has its own state and targeting rules.
When ready to promote, Depify copies the flag configuration from one environment to the next. No manual re-entry, no copy-paste errors.
When something goes wrong in production, you need to disable a feature in seconds, not minutes.
One-click kill switch from the Depify dashboard. Instant propagation.
depify flags kill checkout_layout --env production or /depify kill checkout_layout in Slack.
Depify supports scheduled rollouts that automatically increase the percentage over time.
curl -X POST https://api.depify.io/api/v1/flags/checkout_layout/schedule \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"schedule": {
"steps": [
{ "percentage": 5, "at": "2026-03-24T09:00:00Z" },
{ "percentage": 25, "at": "2026-03-25T09:00:00Z" },
{ "percentage": 50, "at": "2026-03-26T09:00:00Z" },
{ "percentage": 100, "at": "2026-03-28T09:00:00Z" }
],
"auto_pause_on_error_spike": true,
"error_threshold_percent": 5
}
}'
The auto_pause_on_error_spike option integrates with Depify's API monitoring. If error rates spike above the threshold during a rollout step, the schedule pauses automatically and alerts you.
Depify flags are evaluated via a simple REST API. No SDK required. This means flags work from any language, any framework, any runtime.
// JavaScript / Node.js
const response = await fetch(
'https://api.depify.io/api/v1/flags/evaluate',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${DEPIFY_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
flag_key: 'new_checkout',
context: {
user_id: currentUser.id,
email: currentUser.email,
plan: currentUser.plan
}
})
}
);
const { enabled, variant } = await response.json();
if (enabled) {
renderNewCheckout(variant);
} else {
renderLegacyCheckout();
}
# Python
import requests
result = requests.post(
'https://api.depify.io/api/v1/flags/evaluate',
headers={'Authorization': f'Bearer {DEPIFY_API_KEY}'},
json={
'flag_key': 'new_checkout',
'context': {
'user_id': str(current_user.id),
'email': current_user.email,
'plan': current_user.plan
}
}
).json()
if result['enabled']:
return render_new_checkout(result.get('variant'))
else:
return render_legacy_checkout()
The evaluation chain runs in strict order: kill switch, prerequisites, targeting segments, percentage rollout, default. This gives you fine-grained control over exactly who sees what.
"We migrated from a $340/month feature flag service to Depify. Same capabilities, better dashboard, and it comes bundled with API monitoring. The savings alone justified the switch."
Feature flags are included in every Depify plan. The free tier includes 10 flags with boolean and multivariate support.
Pro plans include unlimited flags, scheduled rollouts, and targeting segments.
Percentage rollouts, targeting rules, kill switches, and scheduled rollouts. Included in every plan.
Start Free Trial