RPC provider performance comparison, as a single-page Next.js app. Chainstack Compare frontend.
Shows P50/P95/P99 latency, availability, and per-region breakdowns for RPC providers across Ethereum, Solana, BNB Chain, Arbitrum, Base, Hyperliquid, and Robinhood, measured from four regions.
This app only renders. The probes and dashboards that produce the data live in compare-dashboard-functions; this app queries their Grafana at request time.
Needs Node.js 20.9 or later.
npm install
cp .env.sample .env.localSet GRAFANA_API_TOKEN in .env.local — a Grafana service account token with the Viewer role. Without it the page renders but every metric shows as unavailable.
To run against your own Grafana, change GRAFANA_URL and PROM_DS_UID in src/lib/grafana.ts and the CHAINS list in src/lib/queries.ts.
| Command | Purpose |
|---|---|
npm run dev |
dev server on localhost:3000 |
npm run build |
production build, includes type checking |
npm start |
serve the production build |
npm run lint |
ESLint |
No test suite — lint and build are the checks.
protocol—ethereum,solana,bnb,arbitrum,base,hyperliquid,robinhood. Defaults toethereum.range—24hor7d. Defaults to24h.
Unrecognized values fall back to the default, so links are safe to share.
src/app/ # single route, layout, loading fallback
src/components/ # RpcPerformance/ holds the table, chips, range switcher
src/lib/ # PromQL, Grafana client, scoring
Fork or branch from main, run npm run lint and npm run build, then open a pull request. Commit messages follow Conventional Commits.
See CLAUDE.md before touching the data layer.