-
Couldn't load subscription status.
- Fork 29.7k
Improve initial setup with new App Router TypeScript project #64826
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve initial setup with new App Router TypeScript project #64826
Conversation
|
Allow CI Workflow Run
Note: this should only be enabled once the PR is ready to go and can only be enabled by a maintainer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, thank you. CI just needs fixing (or probably just retrying).
302646a to
da33856
Compare
Tests Passed |
Stats from current PRDefault Build (Increase detected
|
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| buildDuration | 18.2s | 16.3s | N/A |
| buildDurationCached | 10.3s | 7.8s | N/A |
| nodeModulesSize | 360 MB | 360 MB | |
| nextStartRea..uration (ms) | 442ms | 439ms | N/A |
Client Bundles (main, webpack)
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| 139-HASH.js gzip | 31.8 kB | 31.8 kB | N/A |
| 2478adb-HASH.js gzip | 53.5 kB | 53.5 kB | N/A |
| 4967-HASH.js gzip | 5.1 kB | 5.1 kB | N/A |
| 6701.HASH.js gzip | 168 B | 168 B | ✓ |
| framework-HASH.js gzip | 45.2 kB | 45.2 kB | ✓ |
| main-app-HASH.js gzip | 228 B | 226 B | N/A |
| main-HASH.js gzip | 31.6 kB | 31.6 kB | N/A |
| webpack-HASH.js gzip | 1.65 kB | 1.64 kB | N/A |
| Overall change | 45.3 kB | 45.3 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 194 B | 193 B | N/A |
| _error-HASH.js gzip | 192 B | 192 B | ✓ |
| amp-HASH.js gzip | 510 B | 510 B | ✓ |
| css-HASH.js gzip | 343 B | 342 B | N/A |
| dynamic-HASH.js gzip | 2.51 kB | 2.52 kB | N/A |
| edge-ssr-HASH.js gzip | 266 B | 265 B | N/A |
| head-HASH.js gzip | 365 B | 362 B | N/A |
| hooks-HASH.js gzip | 391 B | 390 B | N/A |
| image-HASH.js gzip | 4.32 kB | 4.32 kB | N/A |
| index-HASH.js gzip | 268 B | 268 B | ✓ |
| link-HASH.js gzip | 2.69 kB | 2.69 kB | N/A |
| routerDirect..HASH.js gzip | 328 B | 328 B | ✓ |
| script-HASH.js gzip | 393 B | 395 B | N/A |
| withRouter-HASH.js gzip | 323 B | 323 B | ✓ |
| 1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
| Overall change | 1.73 kB | 1.73 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 484 B | 484 B | ✓ |
| Overall change | 484 B | 484 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| index.html gzip | 528 B | 528 B | ✓ |
| link.html gzip | 540 B | 541 B | N/A |
| withRouter.html gzip | 523 B | 523 B | ✓ |
| Overall change | 1.05 kB | 1.05 kB | ✓ |
Edge SSR bundle Size
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| edge-ssr.js gzip | 108 kB | 108 kB | N/A |
| page.js gzip | 3.04 kB | 3.05 kB | N/A |
| Overall change | 0 B | 0 B | ✓ |
Middleware size
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| middleware-b..fest.js gzip | 623 B | 623 B | ✓ |
| middleware-r..fest.js gzip | 155 B | 154 B | N/A |
| middleware.js gzip | 27.9 kB | 27.9 kB | N/A |
| edge-runtime..pack.js gzip | 839 B | 839 B | ✓ |
| Overall change | 1.46 kB | 1.46 kB | ✓ |
Next Runtimes
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| app-page-exp...dev.js gzip | 171 kB | 171 kB | ✓ |
| app-page-exp..prod.js gzip | 98.4 kB | 98.4 kB | ✓ |
| app-page-tur..prod.js gzip | 99.9 kB | 99.9 kB | ✓ |
| app-page-tur..prod.js gzip | 94.2 kB | 94.2 kB | ✓ |
| app-page.run...dev.js gzip | 157 kB | 157 kB | ✓ |
| app-page.run..prod.js gzip | 93 kB | 93 kB | ✓ |
| app-route-ex...dev.js gzip | 21.4 kB | 21.4 kB | ✓ |
| app-route-ex..prod.js gzip | 15.2 kB | 15.2 kB | ✓ |
| app-route-tu..prod.js gzip | 15.2 kB | 15.2 kB | ✓ |
| app-route-tu..prod.js gzip | 14.9 kB | 14.9 kB | ✓ |
| app-route.ru...dev.js gzip | 21.3 kB | 21.3 kB | ✓ |
| app-route.ru..prod.js gzip | 14.9 kB | 14.9 kB | ✓ |
| pages-api-tu..prod.js gzip | 9.55 kB | 9.55 kB | ✓ |
| pages-api.ru...dev.js gzip | 9.82 kB | 9.82 kB | ✓ |
| pages-api.ru..prod.js gzip | 9.55 kB | 9.55 kB | ✓ |
| pages-turbo...prod.js gzip | 21.4 kB | 21.4 kB | ✓ |
| pages.runtim...dev.js gzip | 22.1 kB | 22.1 kB | ✓ |
| pages.runtim..prod.js gzip | 21.4 kB | 21.4 kB | ✓ |
| server.runti..prod.js gzip | 65.3 kB | 65.3 kB | ✓ |
| Overall change | 975 kB | 975 kB | ✓ |
build cache Overall increase ⚠️
| vercel/next.js canary | unstubbable/next.js improve-app-router-ts-setup | Change | |
|---|---|---|---|
| 0.pack gzip | 1.61 MB | 1.61 MB | |
| index.pack gzip | 112 kB | 112 kB | N/A |
| Overall change | 1.61 MB | 1.61 MB |
Diff details
Diff for main-HASH.js
Diff too large to display
e7e0a1f to
2f6421c
Compare
|
fyi this slightly relates to #61413 as well |
@ryan-nauman How are these related? |
|
@eps1lon both add tests for
it could be confusing to have them in both places |
Yeah, I need to merge those now, after rebasing. I'm not sure about the history of |
yes. same as i followed the guide in https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md. i have one console with |
2f6421c to
7d88627
Compare
|
@eps1lon I've now merged the two unit test files for |
999feae to
c19acba
Compare
@eps1lon Do you mean "running tests" as in |
e3a6619 to
4964b72
Compare
53f0dc2 to
8ce9c0b
Compare
At least |
8ce9c0b to
5d9f86e
Compare
Alright, done. Just to make sure we're having the same understanding regarding the statement "which would now change the tsconfig": |
5d9f86e to
a6e09b6
Compare
Continuation of vercel#64508 This avoids needing to update a freshly created tsconfig.json when first running the `dev` command.
This is the case after starting the `dev` command for the first time, after having created a new project with `create-next-app`.
This should avoid getting unrelated git changes when running `next dev`
in any of these projects.
Commands used to update the files:
```sh
find test -name tsconfig.json -exec dirname {} \; | while read dir; do pnpm next lint "$dir"; done
pnpm format
```
a6e09b6 to
a4e8c97
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll babysit CI to get this in. Great work, thank you!
What?
Fixes a couple of issues in the latest Canary regarding the
tsconfig.jsonadjustments that are done after creating a new App Router project withcreate-next-app. Specifically:devcommand for the first time after having created a new project withcreate-next-app, because in the tsconfig templatesstrictis enabled per default.Why?
Avoid creating any changes to
tsconfig.jsonin a fresh project on first run, and don't confuse the user with wrong logs.How?
I fixed the issues in
writeConfigurationDefaults(), and added unit tests, as well as adjusted the existing integration tests, to prevent regressions. Additionally, I've created a new project inside of the Next.js monorepo withpnpm create-next-appand ran thedevcommand inside of this project to verify my fixes.