OPEN SOURCE · BYOC · FREE BETA

Visual code review
for your frontend PRs

RenderPR runs Playwright across every viewport, posts screenshots and a live preview to your PR, and lets you iterate with @renderpr code change: … No fine-tuned magic — just Gemini + Playwright, running in your own AWS.

4
viewports captured
< $5/mo
typical AWS cost
100%
in your cloud
pelazas/renderpr · PR #15
R

renderpr bot · now

## Visual review

  • Preview environment ready
  • Dependencies + dev server
  • Capturing 4 viewports
  • Generating review
Live app · http://…:3000Playwright · 4 viewports

What it actually is

  • Gemini 2.5 Flash via OpenRouter
  • Playwright across 4 real viewports
  • Runs in your own AWS (Fargate)
  • Open source, Apache-friendly stack

What it isn't

  • A “fine-tuned frontend LLM”
  • A vector database / embeddings
  • A black box that hides your code
  • A SaaS that holds your repo hostage

Catches what code review can't.

Review pixels, not just diffs. RenderPR captures your changed routes at mobile (375), tablet (768), desktop (1280) and desktop-XL (1920) so you see exactly how a CSS change lands before you merge.

Talks back.

Don't open your IDE for a tweak. Comment @renderpr code change: "increase hero padding on mobile" and the bot edits the cloned repo, re-renders, and posts fresh screenshots in the same thread.

You stay in control.

Nothing ships without your word. @renderpr apply commits the suggestion to your PR branch (or a renderpr/suggestion branch for forks). Generated mocks are never committed.

What it actually posts

A live review, in the thread you already use.

No separate dashboard. Everything lands as a GitHub comment that updates itself while the work runs.

  1. Step 1

    PR opens (or you comment @renderpr)

    A webhook hits a Lambda, which fires a one-off Fargate task. The bot drops a placeholder comment immediately.

  2. Step 2

    Spins up your app

    Clones the PR, finds the frontend (monorepo-aware), installs deps, and boots the dev server inside the container.

  3. Step 3

    Navigates the changed routes

    Parses the diff to infer which routes actually changed (Next app/pages, React Router) instead of only shooting the homepage.

  4. Step 4

    Shoots 4 viewports + live preview

    Playwright captures mobile/tablet/desktop/desktop-XL and exposes a live URL at the task's public IP on :3000.

  5. Step 5

    Reviews & edits the comment in place

    Gemini reviews the screenshots against the diff and the single progress comment is updated live — no 7-minute silence.

pelazas/renderpr · PR #15
R

renderpr bot · now

## Visual review

  • Preview environment ready
  • Dependencies + dev server
  • Captured 4 viewports
  • Review posted
Live app · http://…:3000Playwright · 4 viewports

Live progress comment

One comment, edited as each stage completes — ✅ done, 🔄 in-progress, ❌ on failure. You always know what it's doing.

AI-generated mock data

No empty states or spinners. RenderPR reads which fields your changed components render and fabricates just-enough mock data — nothing committed to your repo.

Clickable live preview

Screenshots aren't enough when you need to poke at it. Every review links a running instance of the branch you can actually click through.

Three commands. That's it.

Drive the whole loop from a comment.

The bot stays awake polling the thread until 15 minutes of silence.

@renderpr review

Runs a fresh review on demand: re-renders the changed routes with Playwright, recaptures all four viewports, and posts an updated report. The default action when a PR opens.

@renderpr code change: "…"

Natural-language edits. Gemini selects the relevant files, generates a precise string-replacement diff, applies it in the container, and posts new screenshots so you can see the result.

alias: @renderpr change …

@renderpr apply

Commits the last suggested change to your PR branch with message “renderpr: apply suggested changes”. Fork PRs get a renderpr/suggestion branch instead. Generated mocks are excluded.

BRING YOUR OWN CLOUD · ALWAYS FREE

It runs entirely in your AWS.

RenderPR is open source and BYOC by design. One cdk deploy stands up the whole stack in your account. The software is free — you just pay AWS, which is typically under $5/month.

  • Your code is cloned into your own Fargate task and deleted when the run ends — it never touches our servers.
  • Secrets live in your AWS SSM Parameter Store (SecureString), injected post-deploy.
  • GitHub auth uses short-lived installation tokens (60-min), never PATs.
  • No NAT gateway, no idle servers — you pay only for the seconds a review runs.
API Gateway + LambdaECS FargatePlaywrightS3SSM Parameter StoreCDK v2
View the source & deploy guide
deploy.sh — your terminal
# clone it
$ git clone https://github.com/pelazas/renderpr
$ cd renderpr

# one-time per account/region
$ npx cdk bootstrap

# stand up the whole stack
$ npx cdk deploy

# inject GitHub App secrets
$ ./scripts/setup-secrets.sh

✓ RenderprStack deployed to eu-west-1
✓ webhook live · point your GitHub App at it

Pricing. (It's free.)

RenderPR is open source and in public beta. We're optimizing for feedback, not revenue. If you'd rather pay someone, pay AWS.

AVAILABLE NOW

Self-host

Open source. Deploy into your own AWS.

$0 + your AWS bill

  • Unlimited repos & reviews
  • Everything runs in your cloud
  • Typically under $5/month of AWS
  • Full source, no feature gates
Get the source
COMING SOON

Managed cloud

No AWS account, no CDK. We host it for you.

TBD · waitlist pricing

  • Zero infrastructure to manage
  • Per-repo settings UI for env & auth
  • Same engine, we run the Fargate
  • Early access for waitlist members
Join the waitlist

Frequently asked questions

How does the bot change my code?
It uses Gemini 2.5 Flash through OpenRouter — no fine-tuned model. The LLM first selects the relevant files from the cloned repo, then generates structured old-string → new-string edits that are applied as exact replacements. There's no vector database and no embeddings; it's deliberately simple and auditable.
Is my code secure?
Because RenderPR is BYOC, your code never leaves your own AWS account. The repo is cloned into an ephemeral Fargate task and removed when the run finishes. Secrets live in your SSM Parameter Store, and GitHub access uses short-lived installation tokens that expire in 60 minutes.
What's the real tech stack?
API Gateway + Lambda (Python 3.12) routes the webhook and launches an ECS Fargate task. Inside the container, Playwright drives a headless browser across four viewports, and Gemini (via OpenRouter) does the review and code edits. Everything is provisioned with AWS CDK v2.
Does it really mock my API?
Yes, but it's inferred, not magic. RenderPR reads your diff to see which fields your changed components render, fabricates just-enough mock data, and serves it via temporary server-side routes (with Playwright route interception as a fallback). Nothing is committed to your repo.
Which frameworks does it support today?
Discovery is currently tuned for npm + Next.js (App and Pages router) on port 3000, with monorepo detection. Broader package-manager and framework support (pnpm/yarn, Vite, Astro, SvelteKit) is on the roadmap.
Does it work with private repos?
Yes. The GitHub App only sees the repositories you explicitly grant it. Since you self-host, all the compute and tokens stay in your account.
Why is it free?
It's early and open source. We want as much real-world feedback as possible to harden the visual-review engine. A managed cloud option is coming for teams who don't want to run AWS themselves — join the waitlist for that.

Want the managed cloud?

Self-hosting is live today. The hosted version — zero AWS setup — is coming. Drop your email and you'll be first in.

No spam. Just one email when it's ready.