At Atlassian, we use Merge Queues to ship frequent changes with confidence and streamline pull request merges. Across some of our busiest codebases, Merge Queues have sharply reduced incident frequency and turned merging from a stressful bottleneck into a background task.

Today, most of our largest repositories rely on Merge Queues—over 70 large repos across products like Jira, Rovo, Trello, and others—having safely landed 30,000 pull requests since adopting Merge Queues Beta last quarter. Overall, Merge queues improved developer productivity by increasing build reliability and reducing failures caused by semantic merge conflicts.

The problem: When merging becomes the bottleneck

As AI and better tooling accelerated development, making changes became easier, but safely shipping those changes remained painful.

At our scale, merging pull requests was no longer a seamless and simple step at the end of CI. It had become a reliability and productivity bottleneck that needed a scalable solution.

Before Merge Queues, engineers had to coordinate merges manually, and even green PRs often combined to break master, creating frequent firefighting and merge-strategy overhead.

Strong PR-level CI wasn’t enough. Merge time kept biting us:

  • Semantic merge conflicts: Pull requests passed branch CI and merged cleanly, yet collided logically on main when combined with other changes.
  • Reactive recovery: On-call and CI engineers reverted Pull requests, reran pipelines, and hacked rollbacks until fixing the main branch.
  • Human coordination overhead: Engineers waited for “quiet windows,” rebased and retried manually, and coordinated merges in chat.

The core gap: where validation ran versus where risk lived.

CI was answering the wrong question:

“Does this PR work on its own?”
vs.
“Does this change still work alongside everything else about to land?”

Across Jira, Rovo, and other high-traffic teams, slow and unreliable merging was increasingly dragging down developer velocity and confidence in main branches.

Adopting Merge Queue in Atlassian: Faster, Safer Merges

We rolled Merge Queues out in phases—measuring impact and iterating with internal feedback—and quickly saw clear gains in reliability and developer experience. We introduced Bitbucket Merge Queues to our Jira pipeline, resulting in the following improvements:

MetricBefore Merge QueuesAfter Merge Queues
CI reliability: failures due to semantic merge issues7–10% of failuresNearly zero
Number of internal incidents from semantic merge conflicts3–5 / weekRare edge cases only
Developer satisfaction: build reliability due to sematic merge issues being a key driver70%82%

Instead of frequent firefighting, teams now treat master breakages as exceptions, not background noise.

As Jira’s Head of Engineering put it after rolling Merge Queues out on the Jira repository:

With 800+ developers, 300+ merges a day. And the merge itself was the critical moment in our pipeline causing 7–10% semantic failures, weekly firefights, constant coordination overhead. We adopted Merge Queues on the Jira team and went to near-zero failures, cut build times from 40 to 35 minutes, and established our first merge SLO. But the real win is simpler than any metric: our engineers stopped thinking about merging altogether. They just queue and code.

A Jira tech lead described it this way:

“The best part is what I don’t see anymore: long Slack threads trying to figure out which PR broke master.”

We observed similar trends in other high-traffic repos across Atlassian: fewer merge-related incidents, clearer ownership when a PR breaks the build, less time waiting for merge windows, and more predictable merges. Across Atlassian, over 70 repositories now rely on Merge Queues, having safely landed more than 30,000 pull requests and having contributed to an internal developer satisfaction lift from 70% to 82%.

How Merge Queues work

In short, Merge queues do three things:

  1. Queue Pull Requests for a target branch: When checks and approvals pass, click Add to merge queue. The PR waits its turn for that branch.
  2. Validate against the expected future state: For each queued PR, the system creates a temporary bitbucket-merge-queue-* branch, merges what’s ahead of it (per strategy), and runs the merge-queue pipeline. This answers: “Would main stay green if we landed everything up to and including this PR?”
  3. Merge or eject: If the pipeline passes, the PR is merged into the target branch. If it fails, the PR is taken out of the queue and left open with the results shown on it, and any PRs behind it in the queue do not merge in that run.

When things go wrong

Key failure behaviours:

  • Failed builds eject pull requests, not the queue: If a merge-queue build fails, that PR is removed and left open. The queue re-evaluates; others can proceed.
  • Reordering and hot-fixes: Admins can move Pull requests to the top or drain/deactivate a queue to pause merges.
  • Bitbucket Pipelines integration: Use the merge-queues: section in bitbucket-pipelines.yml to run a faster validation suite without changing post-merge pipelines.

How the Jira team configured Merge Queues

Onboarding Jira CI to Bitbucket Merge Queues was very straightforward:

  • First, we created and configured a merge queue with build concurency = 14 based on the Pull requests throughput of 300+ Pull requests/day and Merge strategy = Merge commit to create a new commit for the merge.
  • Then, we defined the merge queue pipeline to run three parallel steps (parent-child pipelines) to validate the Pull request against the future state of the target branch for different distributions of the product. Parent-child pipelines enabled the Jira team to simplify its CI/CD workflows and improve reusability by allowing calls to downstream pipeline files.
  • Finally, developers began enqueuing their pull requests, utilizing merge queues to validate the changes triggering the merge queue pipelines. These pipelines executed specific steps to build the code and run the necessary tests.

Get Started and Provide Feedback

If you want to see how Merge Queues behave in practice on Bitbucket Cloud, you can start here:
Manage pull requests with merge queues | Bitbucket Cloud | Atlassian Support

We’d love to hear how Merge Queues work for your team—or what’s blocking you from adopting them. Join the discussion in the Atlassian Community: Introducing merge queues for Bitbucket Cloud [open beta]