6be2868787
This PR adds the benchmarking script I've been using for #40251 to measure the performance improvements that we make to the Edge SSR runtime. This tool: - uploads two version of the benchmarking project to Vercel, one with the latest canary and the one with your current local changes in dist (don't forget to build!) - runs some tests against the published url to measure TTFB - displays a nice chart and table What this doesn't do (yet): - allow you to choose which URL to compare - allow you to change the measured metric - run a battery of differnet test ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have a helpful link attached, see `contributing.md` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have a helpful link attached, see `contributing.md` https://user-images.githubusercontent.com/11064311/191270204-04447e20-5a40-43a9-bcda-b7eaeb3d270a.mov ## Documentation / Examples - [ ] Make sure the linting passes by running `pnpm lint` - [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md) Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> |
||
---|---|---|
.. | ||
benchmark-app | ||
.env.dev | ||
.gitignore | ||
bench.js | ||
chart.js | ||
gen-request.js | ||
generate-package-json.js | ||
package.json | ||
project-utils.js | ||
README.md |
Benchmarking Next.js on production
This script allows you to measure some performance metrics of your local build of Next.js on production by uploading your current build to Vercel with an example app and running some basic benchmarks on it.
Requirements
- the Vercel CLI
Setup
Rename the provided ./env.local
file to ./env
and fill in the required VERCEL_TEST_TOKEN
and VERCEL_TEST_TEAM
values. You can find and generate those from vercel.com.
Run pnpm install
, pnpm bench
and profit.
Note: if you made some changes to Next.js, make sure you compiled them by running at the root of the monorepo either pnpm dev
or pnpm build --force
.
How it works
- with the Vercel CLI, we setup a project
- we
npm pack
the local Next build and add it to the repo - we upload the repo to Vercel and let it build
- once it builds, we get the deployment url and run some tests