Menu

Tier 2 Topic PM.2.10

Feature Flags, Rollouts & Release Management

Ship safely. Feature flagging strategy, percentage rollouts, canary releases, kill switches, and the operational discipline of getting code to users without breaking things.

20% Theory 55% Methods & Templates 25% Examples
Theory

What feature flags and release management mean for PMs

Feature flags are conditional switches that let you enable or disable functionality for specific users without deploying new code. They decouple deployment (code reaches production) from release (users see the feature). This distinction changes how PMs think about shipping: instead of "this feature goes live when the code ships," it becomes "we deploy the code, then gradually release to users, watching metrics at each stage."

For PMs, feature flags unlock four capabilities that change your operating model:

  • Gradual rollout — show a new feature to 5% of users, monitor for issues, then expand to 20%, 50%, 100%.
  • Targeting — show a feature only to enterprise users, or beta testers, or users in a specific region.
  • Kill switch — instantly disable a feature if it causes problems, without a code rollback.
  • Experimentation — run A/B tests by showing different feature variants to different groups.

The PM's role isn't implementing flags — it's owning the release strategy: deciding who sees what when, defining the metrics that trigger expansion or rollback, and managing the lifecycle of flags from creation through cleanup. Unmanaged feature flags become their own form of tech debt — "flag debt" — where nobody knows which flags are still active, which are permanent, and which control abandoned experiments.

Practical

Feature flag strategy

Feature Flag Strategy Matrix Core Method

Use when: deciding what type of flag to use for a new feature.

Not all flags are equal. Categorize by purpose:

  • Release flags — temporary switches for gradual rollout. Remove after 100% rollout. Lifespan: days to weeks.
  • Experiment flags — control A/B test variants. Remove after experiment concludes. Lifespan: weeks.
  • Ops flags — kill switches for critical functionality. Keep permanently. Lifespan: forever.
  • Permission flags — feature access by plan tier or user role. Part of the product, not temporary. Lifespan: forever.
  • Development flags — hide work-in-progress from users. Remove before or at launch.

The strategy matrix helps because each type has different lifecycle management. Release flags have a defined removal date. Experiment flags have a defined analysis date. Permission flags are part of your packaging strategy. Treating all flags the same leads to flag debt: 200 flags in production, half of which nobody remembers creating.

Percentage Rollout Plan Core Method

Use when: releasing a new feature gradually to catch problems before full exposure.

Define rollout stages with clear criteria for advancing or rolling back. A typical plan:

  • Stage 1 (1-5%) — internal team + small user sample. Monitor for crashes, errors, and edge cases. Duration: 1-2 days.
  • Stage 2 (10-20%) — broader exposure. Monitor core metrics (conversion rate, error rate, latency). Duration: 2-3 days.
  • Stage 3 (50%) — half your users. Statistically meaningful for metric comparison. Duration: 3-5 days.
  • Stage 4 (100%) — full rollout. Clean up the flag within 1 sprint.

Define advance criteria ("error rate stays below 0.5%, no P1 incidents, core metric doesn't drop more than 2%") and rollback criteria ("error rate exceeds 1%, any P1 incident, core metric drops more than 5%"). Write these before the rollout starts, not during a crisis.

Practical tip

Always include yourself and your PM peers in Stage 1. Dogfooding catches UX issues that metrics miss: confusing error messages, broken edge cases, unexpected behavior. If you wouldn't ship this to your own workflow, don't ship it to 50% of users.

Canary releases and dark launches

Canary Release Protocol Technique

Use when: deploying infrastructure changes or backend modifications where user-facing behavior should be identical.

A canary release routes a small percentage of traffic to the new version while the majority stays on the old version. Unlike feature flags (which show different features), canary releases show the same feature but run it on different infrastructure. Monitor: error rate comparison, latency percentiles (P50, P95, P99), resource consumption, and downstream service health. If the canary shows degradation, route traffic back to the old version instantly. Canary releases are the safety net for database migrations, API version upgrades, and infrastructure changes.

Dark Launch Pattern Technique

Use when: you need to test a feature's backend under production load without users seeing it.

A dark launch runs new code in production but hides the results from users. The system processes requests through both the old and new paths, compares results, and only shows the old path to users. This lets you validate correctness and performance under real traffic without risk. Use dark launches for: search algorithm changes (run both algorithms, compare relevance), recommendation engines (generate recommendations from both models, measure quality), and data pipeline changes (process data through both pipelines, compare outputs).

Kill switches and incident response

Kill Switch Checklist Core Method

Use when: a feature is causing problems in production and needs to be disabled immediately.

Every critical feature should have a kill switch — a feature flag that disables the feature instantly without a code deployment. The kill switch checklist: Before launch: Verify the kill switch works in staging. Confirm it fully disables the feature (including dependent UI, API endpoints, and background jobs). Document the flag name and location. During incident: Disable the flag. Verify the feature is fully off (check from a user's perspective, not just the flag state). Notify stakeholders. After incident: Root-cause analysis. Fix the bug. Test the fix behind the flag before re-enabling. Gradual re-rollout.

The PM's kill switch responsibility: know where the switch is, know who can flip it (on-call engineer, not just the tech lead), and have a communication template ready. An incident is not the time to figure out how to tell customers what happened.

Common mistake

Kill switches that don't fully kill the feature. The flag disables the UI, but the background job keeps running. Or the flag disables the web version but not the mobile app. Test kill switches end-to-end before you need them in an emergency. A kill switch that leaves partial functionality running can cause worse problems than no kill switch at all.

Beta program design

Beta Program Design Framework

Use when: you want structured early feedback before a general release.

A beta program is more than "give some users early access." Design it with:

  • Selection criteria — who should be in the beta? Mix of power users (stress-test edge cases), new users (test learnability), and strategic accounts (validate enterprise fit).
  • Feedback mechanisms — in-app feedback widget, dedicated Slack channel, weekly survey, or scheduled calls.
  • Success criteria — what signals tell you the beta is ready for GA? (Bug count below X, satisfaction score above Y, key workflow completion rate above Z.).
  • Timeline — defined start and end dates. Open-ended betas become permanent pre-release limbo.

Limit beta size. 20-50 users gives you enough feedback diversity without overwhelming your team with support requests. For enterprise products, 5-10 accounts is often sufficient.

Checklist Release Readiness Checklist
  • Feature flag created and tested (on/off/targeting verified in staging)
  • Rollout plan documented (stages, percentages, duration, advance/rollback criteria)
  • Kill switch tested end-to-end (UI, API, background jobs all disabled)
  • Monitoring dashboards configured (error rate, latency, core metrics)
  • Alerting set up (PagerDuty/Slack alerts for rollback-trigger thresholds)
  • On-call team briefed (knows about the rollout, knows where the kill switch is)
  • Rollback plan tested (verified that disabling the flag cleanly reverts behavior)
  • Communication templates ready (internal incident comms, external status page update)
  • Analytics instrumented (events tracking feature usage for post-launch analysis)
  • Flag cleanup ticket created (scheduled for removal after 100% rollout)
Examples

Real-world examples

Case study

GitHub: Feature flags as a development culture

GitHub uses feature flags (via their internal tool, later open-sourced as "Scientist") for virtually every change. Engineers deploy to production multiple times per day, but features are only visible when their flag is enabled. This lets GitHub ship small increments continuously without big-bang releases. Their PM team owns the rollout strategy for each feature: which user segments see it first, what metrics define success, and when to advance or roll back.

Why it works: By making feature flags the default, GitHub eliminated the concept of a "release day" — and all the stress, coordination, and risk that comes with it. Every change is reversible, every rollout is gradual, and every feature has a defined success metric before it reaches 100%.

Case study

Netflix: Canary deployments at planetary scale

Netflix runs canary deployments for every infrastructure change, routing a small percentage of traffic to the new version while monitoring hundreds of metrics in real-time. Their automated canary analysis (ACA) system compares the canary's metrics against the baseline and automatically promotes or rolls back without human intervention. The PM role in this system is defining which business metrics (stream starts, playback quality, error rates) are included in the canary analysis — not just infrastructure metrics, but user experience metrics.

Why it works: Automation removes the human bottleneck from release decisions. Instead of an engineer manually checking dashboards at 2am, the system makes the rollback decision based on pre-defined criteria. The PM's contribution is ensuring those criteria include business impact, not just technical health.

Common pitfalls

!

Flag debt: never cleaning up temporary flags

After a feature reaches 100% rollout, the flag should be removed within 1-2 sprints. In practice, teams forget. Six months later, you have 150 flags in production, nobody knows which ones are safe to remove, and the codebase is littered with if (flag.enabled) branches. Create a flag cleanup ritual: every sprint, review flags older than 30 days and remove any that are at 100%.

!

Testing only the "on" state

Teams test the feature with the flag on but forget to test the experience with the flag off. What do users see when the flag is disabled? An empty state? A broken layout? A confusing error? The "off" state is the experience for 95% of users during a gradual rollout — it needs to be clean.

!

Rolling out to 100% without analysis

Skipping from 50% to 100% because "nothing broke" without analyzing the impact on your core metrics. "Nothing broke" means no incidents — it doesn't mean the feature is performing well. Compare activation, retention, and engagement metrics between the flag-on and flag-off groups before going to 100%.

Connected topics in your library

Deep Dive

Appendix

On this page