Skip to content
Read PR progressGitHub App + browser extension

Real review,
on the record.

Read PR gates pull request approval until a human has read every file. A CI check that turns green only when the diff has actually been read.

Setup
2 minutes
Public repos
Free
Private repos
$8 / mo
Read PR progress

read-pr / reviewed

5 of 7 files read · 3m 48s

Pending
  • Read PR progresslib/auth/session.tsread
  • Read PR progressapp/api/v1/users/route.tsread
  • Read PR progresslib/auth/providers.tsread
  • Read PR progresscomponents/Nav.tsxread
  • Read PR progressprisma/schema/read-pr.prismaread
  • Read PR progresslib/auth/jwt.ts32%
  • Read PR progresstests/auth.test.ts

Status check posted to PR #482 by Read PR.

Why Read PR exists

AI writes the code.
A human still has to read it.

Code review was the last human-in-the-loop step before merge. It held because writing code was slow. Now writing code is cheap and reading is the only part still done by hand.

Reviewers feel the squeeze. Approvals get faster. The two-character comment LGTM still works on every codebase, every team, every Friday at five.

Read PR puts reading back in the loop.

Time on file

Approval at 14:02:11

Read for 4m 12s, approval at 14:06:23

Coverage

0 of 7 files opened

7 of 7 files read

On the record

“LGTM”

“Read by @ian — 4m 12s across 7 files”

See it on a real PR.

A progress ring beside every file. The check stays pending until each reviewer has met their reading threshold.

acme/api·PR #482 — refactor session handling
Read PR progress2 of 7 files read
  • Read PR progressapp/api/v1/users/route.ts
    +42738s
  • Read PR progressapp/api/v1/users/[id]/route.ts
    +18022s
  • Read PR progresslib/auth/session.ts
    +631241s
  • Read PR progresslib/auth/providers.ts
    +2814
  • Read PR progresscomponents/Nav.tsx
    +93
  • Read PR progressprisma/schema/read-pr.prisma
    +1229s
  • Read PR progresstests/auth.test.ts
    +550
4m 12s across 2 files by @ianWaiting on review

How it works.

Two installs and a single CI check. Setup in under two minutes.

  1. Read PR progress01

    Install the app.

    Add Read PR to your GitHub organization. Pick the repos it watches. The required status check is registered automatically.

    github.com/apps/read-pr

  2. Read PR progress02

    Install the extension.

    Chrome, Edge, or Firefox. It injects a progress ring beside each file in the diff view and tracks dwell time as you scroll.

    Chrome Web Store · Firefox Add-ons

  3. Read PR progress03

    Review like you always do.

    Open the files view. Read. The check turns green when each file has met its threshold. Branch protection does the rest.

    git push origin feature/auth

One tool. Three jobs.

Read PR does not change the way you review. It changes what approval means after you do.

For reviewers

Read with the timer running.

A progress ring next to every file. The status check goes green when you have read each one. No surprises, no second-guessing whether you missed a file.

Setup guide

For tech leads

Approval means something.

Set a per-repo threshold once. Every approval after that has a verifiable reading record attached. The team self-corrects without you having to nag.

For engineering leaders

For compliance

Every review on the record.

Per-file dwell time, per reviewer, per PR. Exportable as JSON or CSV. Auditors get a real artifact instead of a screenshot of an approval.

For security & compliance

What's in the box.

Six things, each one earning its keep.

Read PR progress01

Per-file progress.

A ring fills next to every file as you scroll past it. Filled = read. Empty = waiting on you.

Read PR progress02

Smart re-review.

Files you've already read stay read. A later push only resets the files it actually changed.

Read PR progress03

Lockfiles ignored.

package-lock, pnpm-lock, generated, dist — all skipped by default. Override with a glob.

Read PR progress04

Quiet inside GitHub.

We use GitHub's tokens, spacing, and dark mode. The extension blends in instead of painting over.

Read PR progress05

Honest tracking.

Dwell time only. No keystrokes, no mouse paths, no screenshots. The extension is open source.

Read PR progress06

One CI check.

Required status check on every PR. Green when reading thresholds are met. Branch protection does the rest.

Rules you can defend in a review.

Thresholds are per repo. Scale with file size. Exclude lockfiles and generated code by default. Require every assigned reviewer — or any one.

  • — Lives at .readpr.yml in the repo, or in the dashboard.
  • — Reviewed like any other config file.
  • — Workspace defaults override per-repo only when set.
.readpr.ymlYAML
rules:
minSecondsPerFile: 15Even a one-line change earns 15 seconds.
secondsPer100Lines: 5Scales with file size, not arbitrary.
maxSecondsPerFile: 180Caps the dwell-time accumulator at 3 minutes.
excludeGlobs:
- "**/*.lock"
- "pnpm-lock.yaml"
- "**/*.generated.*"Lockfiles, generated, vendored — skipped.
- "**/dist/**"
requireAllReviewers: falseOr true. Your branch protection, your call.

Every review, on the record.

Reading time, per reviewer, per file. Visible on the PR, auditable in the dashboard, exportable for compliance.

ReviewerFiles readTimeState
@ian7 / 74m 12sRead
@kai7 / 75m 03sRead
@renee4 / 72m 41sIn progress

Where Read PR fits.

Other tools sit before review (AI assistants) or after (audit tooling). Read PR sits inside it — the moment that matters.

 Read PRHonor systemAI review toolsAudit tooling
Verifies a human read the codeYes
Blocks merge until metYesOptional
Per-file granularityPer file, per reviewerPR-level approvalPR-level summarySnapshot at merge
Reads the diff for youNo — that's the pointYes
Audit trailPer-reviewer dwell time, exportableApproval timestampComment threadFull
SetupGitHub App + extension, 2 minFreeGitHub AppProcurement cycle

Read PR is built to live alongside the others. AI for the first read, a human for the one that counts, audit tooling for the after-the-fact paper trail.

We track reading, not readers.

  • — Time spent per file, per reviewer. Nothing about what you typed or clicked.
  • — No keystrokes. No screenshots. No mouse heatmaps.
  • — Reading state clears when the PR closes.
  • — Extension source code is public.
Full privacy page →

Per repo. Not per person.

Adding teammates is always free — pay only for the private repos Read PR watches. Public repos are on us.

Open source

Free

public repos

  • Unlimited public repos
  • Unlimited PRs
  • All rules + reviewer logs
  • No card required

Team

$8

per private repo / month

  • First 1 private repo included
  • Unlimited reviewers
  • Per-repo rule overrides
  • Reading-log export

Charged via Stripe. Pro-rated to the day. Disable a repo and the meter stops on the next reconcile.

Questions, answered.

The ten things engineers and security leads actually ask before installing.

What does Read PR actually do?

Read PR is a GitHub App and browser extension. The app posts a required status check on every pull request. The extension tracks reading time per file as a reviewer scrolls through GitHub's diff view. The check turns green when each reviewer has met the per-file reading threshold for the repo. It does nothing else — it doesn't read the diff, summarise the change, or post comments.

Doesn't this feel like surveillance?

We track reading, not readers. Read PR records dwell time per file, focus events, and which file is on screen. It does not record keystrokes, mouse paths, screen contents, scroll positions inside files, the contents of the code, or anything outside github.com pull-request pages. The extension is open source. Per-PR records expire 90 days after the PR closes unless your retention policy is longer.

Can a reviewer leave the tab open and walk away?

No. Reading time only accumulates while the file is on screen, the tab is focused, and there are signs of life — scroll movement or focus events. Open the tab and walk away and the timer pauses immediately.

What if a reviewer doesn't have the extension installed?

The CI check stays pending. The PR page shows a one-line nudge to install the extension. Optional manual attestation can be enabled per repo for one-off reviewers — audited the same way as a normal reading record, with the attestation flagged.

Does this slow down review?

No. The reading thresholds are configurable per repo and scale with file size. The defaults — 15 seconds minimum, 5 seconds per 100 lines, 3 minutes max per file — match how senior engineers actually read code. Lockfiles and generated files are excluded by default.

Does it work with required reviewers and CODEOWNERS?

Yes. Read PR sits as a separate required status check alongside your normal review requirements. Branch protection treats it the same as a passing test suite. CODEOWNERS still controls who is asked to review; Read PR controls whether their approval counts.

Will it post a comment on every PR?

It posts a single status check. No comments by default. The extension shows the progress ring inline next to each file in the GitHub UI — no PR comment thread spam.

What's the pricing?

Public repositories are free, forever. Private repositories are $8 per repo per month, with the first private repo included. Adding teammates is free — there are no per-seat charges. Billed via Stripe, prorated to the day.

Which browsers and Git hosts are supported?

Chrome, Edge, and Firefox today. Safari is on the roadmap. GitHub.com and GitHub Enterprise Cloud are supported. GitHub Enterprise Server is available on the Enterprise plan.

What happens to old reading records?

Per-file reading state clears when the PR closes or merges. Aggregate reviewer history is kept for 90 days, then deleted. Workspaces with audit retention requirements can extend retention indefinitely.

Read PR progress

Make the next approval mean something.

Two minutes to install. Free for public repos. The first private repo is on us.