Vitalgate vs Lighthouse CI
Both fail a pull request when Lighthouse says it got slower. Lighthouse CI is free and fully configurable, but you write the config, manage tokens and host a server if you want history. Vitalgate commits the workflow for you and adds a dashboard, PR comments, alerts and real-user data.
| Feature | Vitalgate | Lighthouse CI |
|---|---|---|
| Setup | Install the GitHub App, pick repos; the workflow is committed for you | Write lighthouserc and a workflow; add a token secret per repo |
| Budgets | LCP, CLS, FCP, TBT and score, edited in the dashboard; required or warning | Any Lighthouse audit, as assertions in a config file |
| Pull request feedback | A Vitalgate check plus a results comment, updated per push | A status check (via its GitHub App or a personal token) |
| Preview deployments | Audits the preview URL Vercel, Netlify or Render reports, no build | Possible with your own workflow scripting |
| History and trends | Built in, per repository and pull request | Needs a self-hosted Lighthouse CI server |
| Alerts | Email, Slack, Discord, Teams, Google Chat and webhooks | None built in |
| Real-user metrics (INP) | From the Chrome UX Report, per repository | No, lab data only |
| Runs per audit | Three per pull request; the median run is reported | Configurable, with median selection |
| Price | Free for 1 repository; Pro is $29/month per workspace for unlimited repositories. | Free |
Lighthouse CI details from its own site, checked October 2026. Lighthouse CI pricing: Free and open source. History and report diffs need a Lighthouse CI server you host yourself.
What a pull request gets from Vitalgate
A results comment, updated on every push, and a "Vitalgate" check that fails when a required budget is broken. Make the check required and the pull request can't be merged.
Vitalgate: a required performance budget was exceeded
| Metric | This PR | Change vs baseline | Budget | Result |
|---|---|---|---|---|
| Performance score | 81 | -11 | ≥ 90 (required) | |
| Largest Contentful Paint | 2.91s | +38% | ≤ 2.50s (required) | |
| Cumulative Layout Shift | 0.020 | no change | ≤ 0.100 | |
| First Contentful Paint | 1.42s | +2% | ≤ 1.80s | |
| Total Blocking Time | 0.24s | +33% | ≤ 0.30s |
Median of 3 Lighthouse lab runs on this workflow's runner. Full report on Vitalgate
Setup and upkeep
Lighthouse CI gives you the building blocks: you write the lighthouserc file, the GitHub Actions workflow, and store a token in each repository for status checks. That's flexible, and it's yours to maintain across every repo. Vitalgate detects the package manager, serve script and port, commits the workflow through its GitHub App, and authenticates runs with GitHub's OIDC tokens, so there's no secret to copy.
Budgets and feedback
Lighthouse CI can assert on any audit Lighthouse produces, which is more than Vitalgate covers. Vitalgate focuses on the metrics that matter for Core Web Vitals and the overall score, lets non-engineers change budgets from a dashboard, and explains failures in a pull request comment rather than only a red status.
Where Lighthouse CI is stronger
It's free, it runs anywhere (not just GitHub), it can assert on every Lighthouse audit, and it can audit several URLs per build. If you want full control and are happy to host and maintain it, it's a great choice.
Switching from Lighthouse CI
Already running Lighthouse CI? Switching takes a few minutes per repository, and your thresholds carry over.
- 1
Connect the repository
Install the Vitalgate GitHub App on the repository and connect it. Vitalgate commits .github/workflows/vitalgate.yml, or audits your preview deployments if Vercel, Netlify or Render already builds them.
- 2
Copy your assertions into budgets
Open the repository's Budgets tab and enter the thresholds from your lighthouserc file, using the mapping below. An assertion at the error level becomes a required budget; warn becomes a warning.
- 3
Swap the required check
In your branch protection rules, require the "Vitalgate" check instead of the Lighthouse CI status.
- 4
Remove what you no longer need
Delete your Lighthouse CI workflow, the LHCI_GITHUB_APP_TOKEN or LHCI_GITHUB_TOKEN secret, and the Lighthouse CI GitHub App. Vitalgate authenticates with GitHub's OIDC tokens, so there's no secret to add.
| In lighthouserc | Vitalgate budget |
|---|---|
| categories:performance minScore: 0.9 | Performance score ≥ 90 |
| largest-contentful-paint maxNumericValue: 2500 | LCP ≤ 2500 ms |
| cumulative-layout-shift maxNumericValue: 0.1 | CLS ≤ 0.1 |
| first-contentful-paint maxNumericValue: 1800 | FCP ≤ 1800 ms |
| total-blocking-time maxNumericValue: 300 | TBT ≤ 300 ms |
Assertions on other audits have no Vitalgate equivalent. Results stored on a Lighthouse CI server don't move over: the first pull request Vitalgate audits becomes the baseline.
Choose Lighthouse CI for
- Teams who want full control over every Lighthouse assertion
- CI systems other than GitHub Actions
- Budgets of zero, with time to host and maintain a server
Choose Vitalgate for
- Teams on GitHub who want budgets working in minutes, across many repos
- Auditing Vercel, Netlify or Render previews without building in CI
- Alerts and trends without hosting anything