Skip to main content

Issues and PRs > Review last rejected at

Tom Williams avatar
Written by Tom Williams
Updated this week

Dataset: Issues & Pull Requests

Entity: Pull Requests, Issues

Field ID: review_last_rejected_at

Type: Datetime

Description: The datetime at which a pull request review was last rejected after a review (CHANGES_REQUESTED). For issues, it is the timestamp of the newest rejection review across all resolving pull requests.

Source: Calculated from pull request reviews

Transformation logic:

  • Pull requests: It is the submission datetime of the last pull request review with the status CHANGES_REQUESTED.

  • Issues: It is the submission datetime of the newest CHANGES_REQUESTED' review across all resolving pull requests. Resolving pull requests are pull requests that reference the issue via auto-closing keywords.

From:

Github (PRs, Issues)

Calculated

Gitlab (PRs, Issues)

Calculated

Bitbucket (PRs, Issues)

Calculated

Azure DevOps (PRs, Issues)

Calculated

JIRA (Issues)

Calculated

ClickUp (Issues)

Calculated

Trello (Issues)

Calculated

Reporting Use Cases

The Review Last Rejected At field is a critical timestamp that marks the most recent time a reviewer requested changes on a pull request. It signals the start of a "rework" cycle, making it essential for measuring the efficiency of your feedback loop and identifying pull requests that are blocked or require significant changes.

  • Measuring Rework Duration: This field's primary use is to calculate the time it takes for a developer to address feedback and resubmit their work for another review.

    • You can measure this "rework time" with the custom formula (last_review_submitted_at - review_last_rejected_at) / DAY(). A high average for this metric could indicate that the requested changes are complex, that requirements were unclear, or that developers are slow to address feedback.

  • Filtering for Blocked Pull Requests: This timestamp is a clear indicator that a pull request is in a "needs work" state and cannot move forward.

    • You can create a high-priority list of all open pull requests that are currently blocked by a rejection using a filter where Review Last Rejected At is not null and Review State = "CHANGES_REQUESTED". Sorting this list by the rejection date can help you prioritize the oldest blocked items.

  • Analyzing Code Quality Trends: You can track the frequency of rejections to get a sense of your team's initial code quality.

    • A custom metric like ROUND(COUNT_IF(IS_NOT_NULL(review_last_rejected_at)) / COUNT() * 100, 2) calculates the percentage of pull requests that require at least one round of changes. A high or rising percentage could be a signal that developers are submitting work prematurely or that coding standards are not being met.

Did this answer your question?