Release Planning
Release planning is the work of coordinating what ships when. For continuous-delivery teams, the plan is largely "what's done is what ships." For teams with fixed release cycles, planning matters more.
This page covers the practices for both modes.
Continuous vs. fixed-cycle releases
Continuous
Code merges to main; main deploys; users get changes within hours or days.
Plans are short-horizon: this week, this sprint. Coordination is mostly through code (merge order, dependencies between PRs).
Fixed cycle
Releases at fixed intervals: weekly, monthly, quarterly. Specific code is in a release branch; new features go to next release.
Plans matter more: which features in which release; what's in scope for v2.5; release branch creation and freeze dates.
Most modern web/cloud teams are continuous. Mobile apps, embedded systems, on-prem software often need fixed cycles.
What planning addresses
Scope
Which features will be in this release. Negotiated between product, engineering, sometimes other stakeholders.
Sequencing
Order of features. Dependencies between them. What needs to ship before what.
Risk management
Risky features get more attention: extra review, gradual rollout, kill switches.
Coordination
Cross-team work: backend changes that frontend depends on; database migrations that require coordinated deploys.
Communication
Who needs to know what's shipping when. Customers, support, sales, internal teams.
Continuous-delivery planning
For continuous teams, the plan is lightweight:
Sprint or iteration planning
Every 1-2 weeks: what's the team focused on? Loose plan; flexibility expected.
Roadmap
Quarterly direction; not commitments. "Things we plan to ship this quarter."
Coordination as needed
When a feature requires cross-team work, explicit planning for that feature. Not for everything.
Feature flags
Decouple deploy from release. Code ships continuously; features are released via flag flip when ready. See [FeatureToggleManagement](FeatureToggleManagement).
Fixed-cycle planning
For fixed-cycle teams, more structure:
Release planning meeting
Periodic — before each release. Decide scope; sequence; identify risks.
Release branch / cut date
When the release branch is created, scope is locked. New features go to next release.
Code freeze
A period before release where only critical fixes go in. Lets the team stabilize.
Release notes
Document what's in the release; for customers, support, and internal stakeholders.
Hotfix process
Critical issues require shipping outside the cycle. Defined process: branch from release; fix; deploy; merge back.
Cross-team coordination
Some features require multiple teams:
Sequenced deploys
Backend API changes deploy first; frontend deploys after consuming the new API. Dependent on the deploy infrastructure supporting this.
Backwards compatibility
The interim period when both versions of the API exist. Old clients keep working until the migration completes.
Coordination meetings
For high-stakes cross-team work, weekly sync meetings during the rollout. Once stable, no more meetings needed.
Dependency tracking
Tools (Jira, Linear, etc.) link cross-team dependencies. Visible to all parties.
Risk management in releases
Identify high-risk features
Schema migrations, security changes, payment-flow changes, anything customer-facing and visible.
Gradual rollout
Don't deploy to 100% immediately. Start internal, then small percentage, then ramp.
Kill switches
For risky features, an emergency disable. Tested before launch.
Monitoring during rollout
Watch metrics: error rate, latency, business KPIs. Pause or roll back if bad.
Blast radius limits
Some changes affect everything (auth, core APIs). Others are limited (one feature, one team's customers). Match the rigor to the risk.
Specific patterns
Calendar-based releases
Every Tuesday at 10am. Predictable; teams plan around it.
Train release model
Like a train: leaves on schedule; what's ready ships; what's not waits for the next one. Common in companies with rapid release cadence.
"Ready when ready"
Each feature ships when it's ready. No fixed cadence. Continuous-delivery extreme.
Major + minor releases
Major (v3.0): big features; communications event. Minor (v3.1, v3.2): incremental improvements.
For products with external users, the major-minor pattern provides predictability.
Communication
Internal
What's shipping; who's affected; what to test. Email, internal blog post, Slack channel.
Customer-facing
Release notes; blog posts; in-app announcements for big features. Aligned with marketing for major releases.
Support team
Support needs to know what's new before customers ask. Briefings before launch.
Common failure patterns
- **Plans that no one consults.** Document exists; doesn't reflect reality.
- **Cross-team work without explicit coordination.** Surprises during integration.
- **Big-bang releases of risky changes.** Bad outcomes affect everyone.
- **No rollback plan.** When things go wrong, no clear path back.
- **Ignoring dependencies.** Frontend ships expecting backend that didn't ship.
- **Communication too late.** Support hears about it from customers.
Further Reading
- [ReleaseEngineering](ReleaseEngineering) — The technical side
- [CiCdPipelines](CiCdPipelines) — Automation of releases
- [TechnicalProjectManagement](TechnicalProjectManagement) — Adjacent role
- [FeatureToggleManagement](FeatureToggleManagement) — Decouple deploy from release
- [DevOpsAndSre Hub](DevOpsAndSreHub) — Cluster index