How We Release the Spotify App: A Look Under the Hood (Part 2) | Spotify Engineering (opens in new tab)
Spotify’s Release Manager Dashboard replaced a Jira-heavy workflow with a unified command center for mobile and desktop releases. It reduces context switching and cognitive load by aggregating release status, bugs, testing, build health, and usage metrics into one interface. A backend that caches and pre-aggregates data from roughly ten systems makes the dashboard fast and affordable.
From Jira to a Release Command Center
- Previously, Release Managers depended on Jira tickets, multiple browser tabs, and Slack conversations.
- This made it easy to miss details and required constant context switching.
- The dashboard was designed to:
- Prioritize the Release Manager’s workflow.
- Remain understandable to anyone familiar with Spotify’s release process.
- Reduce cognitive load.
- Support fast, accurate decisions.
Release Data
Spotify treats each platform-and-version combination as a track. Android, iOS, and Desktop share some libraries but are released independently.
- Track-specific information includes:
- Current release state.
- Release-blocking bugs.
- Team regression-testing sign-offs.
- Final release candidate build status.
- Build verification test results.
- App Store upload status.
- Crash, ANR, and CPU-exception rates per song.
- Daily active users.
- The dashboard also highlights:
- Blocking bugs without an assigned version.
- Bugs without a priority.
- Reports from internal users and alpha/beta testers.
- Release management includes finding appropriate owners for unassigned issues, even when temporary team ownership is needed.
React, TypeScript, and Backstage
- The dashboard is a Backstage plugin built with React and TypeScript.
- Spotify’s Backstage ecosystem already provides:
- Software Catalog functionality for distributing builds to app stores.
- App-build and crash plugins with deeper detail.
- Shared UI components and data across developer tools.
- The interface provides a quick health overview, with drill-down capabilities for investigating blockers.
- Status colors communicate urgency:
- Green: Ready for the next stage.
- Yellow: Something still needs attention.
- Red: An error requires corrective action.
Backend Aggregation and Performance
- A dedicated backend acts as an API gateway for approximately ten existing systems.
- It consolidates their data into one consistent API for the dashboard.
- The initial implementation queried large amounts of data on every reload, making it slow and expensive.
- Caching and five-minute pre-aggregation reduced load time to about eight seconds while significantly lowering operating costs.
Dashboard Sections
Production
- Shows the currently deployed Android, iOS, and Desktop versions.
- Since these releases have completed the release process, only production metrics are displayed.
- Metrics include:
- Crash data.
- Rolling daily active users over the previous 24 hours.
- This helps Release Managers detect problems shortly after rollout.
Current
- Displays the branched version that has not yet reached production.
- Tracks release blockers such as:
- Open blocking bugs.
- Incomplete regression testing.
- Crash rates above release thresholds.
- Builds that do not contain the latest release-branch commits.
- Yellow indicators represent pending work, while red indicators call for direct investigation or action.
- The ITGC section confirms that full production rollout is permitted only after:
- ITGC tests pass.
- Reporting is correct.
- Data loss remains below the defined threshold.
- A Release Status Ping link generates a Slack update with the release’s current state.
Upcoming
- Mirrors the Current release view for the next planned version.
- Sections that are not yet relevant are shown in a grayed-out state.
The dashboard illustrates how a specialized aggregation layer and focused UI can turn a fragmented release process into a clear operational workflow. For organizations managing complex, multi-platform releases, combining cached cross-system data with color-coded status and drill-down details can improve both speed and release safety.