PR cycle time trend: don't panic over one bad week
PR Cycle Time Trend is a weekly line: median hours from a pull request opening to it merging. There are no colour bands here to tell you Elite from Low — just the shape of the line itself, week after week, telling you whether shipping is getting harder.
Weekly p50 open-to-merge hours, 12-week window.
What it measures, and where the data comes from
One number a week: the median (p50) number of hours a merged pull request spent open before it merged. Median, deliberately — a handful of week-long PRs shouldn't be able to drag the whole line around, so this widget doesn't let them.
- GitHub — merged pull requests only, timed from when the PR was opened to when it merged, grouped into the ISO week (Monday start) it landed in.
- Weeks with no merges plot no point — an empty week isn't zero hours, it's missing data, and the line treats it that way.
This is a close cousin of Lead Time for Changes, and worth telling apart clearly: Lead Time starts its clock at the first commit, while this widget starts at PR open. If your team opens a PR early and pushes commits into it over days, the two lines will diverge — and that gap is itself informative.
How to read it
Trace the line's direction across the full window before you fixate on its current position. A flat line — even a flat line sitting fairly high — is a stable process. A line with no clear direction, wobbling within a band, is also fine; that's just week-to-week variance, not a trend.
What earns your attention is a consistent slope in one direction across three or more consecutive weeks — not the level of any single point. A week that jumps by itself gets forgotten by the next data point; a slope holding for most of a month doesn't, and it usually has a specific, findable cause upstream.
What it tells you over time
This line moves for reasons that live between "PR opened" and "PR merged" — review pickup, reviewer availability, merge-queue congestion, or PRs simply growing in scope after they're opened. It rarely moves because people started writing code more slowly; that part of the process isn't what this widget is timing. Treat a rising line as a prompt to look at the wait states, not at how hard anyone is working.
Example situations
1. The line climbs for several weeks straight
A steady climb over five weeks, no single outlier driving it.
What you're seeing: a consistent upward slope, week over week, with no single spike doing the damage — every week is a little worse than the one before it. That pattern is what separates a real trend from bad luck.
How to react: this is the signature of PRs taking longer end to end, not any one PR going wrong. Go looking for where the wait is actually happening before you assume it's review speed — it might just as easily be PR size creeping up.
2. A single-week spike that's really one or two PRs
One week jumps, then the line drops right back to baseline.
What you're seeing: the line jumps sharply for exactly one week and then falls straight back to where it was. The median moved, but the surrounding weeks look untouched.
How to react: don't call an all-hands over one bad point. A median can still get pulled around by a small number of unusually large PRs merging the same week — that's precisely what this chart can't distinguish from a real, broad slowdown on its own.
Frequently asked
- What does PR cycle time trend measure?
- The weekly median hours from a pull request opening to it merging, plotted as a line. There are deliberately no benchmark bands — only the shape of the line over time.
- How do I tell a real slowdown from one outsized PR?
- Check the PR Cycle Time Scatter for the same period. If one or two dots sit far above the rest, the median moved because of them; if the whole cluster shifted upward, the slowdown is genuine.
- Why are there no Elite or Low bands on this widget?
- Because open-to-merge time varies too much between teams and problem types for a universal tier to be honest. The trend against your own history is the meaningful comparison.
Related widgets
- PR Cycle Time Scatter — the per-PR dots this weekly median is built from.
- Lead Time for Changes — the first-commit-to-merge sibling metric, with benchmark bands.
- Review Pickup Time — isolates the reviewer-wait slice that most often drives this line.
- Back to the widget reference.
Last updated