Commit graph

12334 commits

Author SHA1 Message Date
JJ Kasper
ec25b4742b
Add handling for auto installing TypeScript deps and HMRing tsconfig (#39838)
This adds handling for auto-detecting TypeScript being added to a project and installing the necessary dependencies instead of printing the command and requiring the user run the command. We have been testing the auto install handling for a while now with the `next lint` command and it has worked out pretty well. 

This also adds HMR handling for `jsconfig.json`/`tsconfig.json` in development so if the `baseURL` or `paths` configs are modified it doesn't require a dev server restart for the updates to be picked up. 

This also corrects our required dependencies detection as previously an incorrect `paths: []` value was being passed to `require.resolve` causing it to fail in specific situations.

Closes: https://github.com/vercel/next.js/issues/36201

### `next build` before

https://user-images.githubusercontent.com/22380829/186039578-75f8c128-a13d-4e07-b5da-13bf186ee011.mp4

### `next build` after


https://user-images.githubusercontent.com/22380829/186039662-57af22a4-da5c-4ede-94ea-96541a032cca.mp4

### `next dev` automatic setup and HMR handling

https://user-images.githubusercontent.com/22380829/186039678-d78469ef-d00b-4ee6-8163-a4706394a7b4.mp4


## Bug

- [x] Related issues linked using `fixes #number`
- [x] Integration tests added
- [x] Errors have helpful link attached, see `contributing.md`
2022-08-23 13:16:47 -05:00
Sukka
8dfab19d6e
fix(#39807): ignore width/height from webpack with "fill" (#39849)
Fixes #39807.

When statically importing an image, the `width` and `height` will always be provided alongside the `src` by the Webpack. `next/image` will ignore `width` and `height` come from Webpack when `layout === 'fill'`, while `next/future/image` will not, hence the issue. The PR fixes that. The corresponding integration test cases are also added.

cc @styfle 

## Bug

- [x] Related issues linked using `fixes #number`
- [x] Integration tests added
- [ ] Errors have helpful link attached, see `contributing.md`
2022-08-23 13:06:44 -05:00
JJ Kasper
cb430cce90
v12.2.6-canary.2 2022-08-23 09:29:24 -05:00
Henrik Wenz
16838d5dd4
[Docs] Migrate data-fetch example to typescript (#39852)
## Changelog

- Updated deps
- Migrated to Typescript
- Replaced `div` with `Fragment`

## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The examples guidelines are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples)
2022-08-23 14:23:38 +00:00
Hannes Bornö
ca9fef6ef6
Docs: Updated note about using next/head in basic-features/font-optimization (#39863)
## 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.md#adding-examples)
2022-08-23 09:15:09 -05:00
JJ Kasper
611e13f515
Fix disposing active entries in dev compilers (#39845)
As noticed in https://github.com/markdoc/markdoc/issues/131 it seems we are incorrectly disposing active entries causing HMR to fail after the configured `maxInactiveAge`. To fix this instead of only updating lastActiveTime for one compiler type's entry we update all active compiler types for the active entry. 

This also updates an existing test to catch this by waiting the `maxInactiveAge` before attempting a change that should trigger HMR. 

## Bug

- [x] Related issues linked using `fixes #number`
- [x] Integration tests added
- [x] Errors have helpful link attached, see `contributing.md`

Fixes: https://github.com/markdoc/markdoc/issues/131
2022-08-23 07:23:43 +00:00
JJ Kasper
31bcd044ff
Ensure moduleResolution is written correctly (#39836)
This removes the usage of `Node12` from the `parsedValues` for `moduleResolution` as this caused false detection of `undefined` being a valid value when it was removed in TypeScript. This also copies over the test from https://github.com/vercel/next.js/pull/37302 to ensure we don't regress on this. 

## Bug

- [x] Related issues linked using `fixes #number`
- [x] Integration tests added
- [x] Errors have helpful link attached, see `contributing.md`

Fixes: https://github.com/vercel/next.js/issues/37296
Closes: https://github.com/vercel/next.js/pull/37302
2022-08-22 18:36:36 -05:00
Shu Ding
cb1038cb6d
Refactor client CSS imports (#39758)
Removed the hack of client-side CSS injection via `chunk`. Instead collect them with the manifest plugin and SSR them as link tags.

Next step is to adjust HMR to not relying on mini-css-extract plugin and webpack.
2022-08-22 18:09:56 -05:00
Steven
3d0d09002a
Improve error message on next/future/image when objectFit or objectPosition (#39614)
Improve PR improves the error message on `next/future/image` when `objectFit` or `objectPosition` is provided and suggests using `style` instead. It also prints the stack trace so its clear where the error came from.
2022-08-22 23:07:41 +00:00
Steven
7e9f9bfbef
Fix onError handling in next/future/image (#39824)
This PR fixes a race condition where the `onError` handler was never called because the error happened before react attached the error handler.
2022-08-22 21:37:16 +00:00
Miguel Oller
1f5da04dad
Update cms-makeswift example (#39834)
Upgrade @makeswift/runtime to the latest version. This removes the need
for the MAKESWIFT_API_HOST environment variable and improves error
messages when integrating Next.js with Makeswift.

## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The examples guidelines are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples)
2022-08-22 16:02:19 -05:00
sumiren
6bc7cdaf47
doc: improve a word client side rendering (#39771)
The term client-side rendering is ambiguous and misleading.
Some people would assume the architecture where a blank page is returned from the server and HTML generation is totally done on the frontend.

So I changed the term to `client-side data fetching`, which is widely used throughout the rest of the document.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have 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 helpful link attached, see `contributing.md`

## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The examples guidelines are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples)
2022-08-22 14:55:46 -05:00
Arthur Denner
d2ab9bcc85
Mention router.isPreview on Preview Mode page (#39830)
The documentation is concise and straightforward, so I just added a sentence.
Let me know if you'd like to describe more, add an example, etc.

Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
2022-08-22 19:46:54 +00:00
Steven
b6bbbc813f
Update docs next/future/image with details about computed aspect ratio (#39829)
The browser support for this feature was added to caniuse so we can link there instead of linking to each browser bug tracker.
2022-08-22 17:31:57 +00:00
JJ Kasper
d2a2cc7808
Skip building /500 in dev mode (#39828)
Follow-up to #39826 this skips ensuring the /500 page when in development as it's not used since we use the error overlay instead. This also fixes the case where we don't clear the stalled timeout debug log when an error is thrown during ensuring.
2022-08-22 11:59:23 -05:00
JJ Kasper
4955da9eed
Update stalled ensure log to use debug instead (#39826)
This updates the stalled ensure log to use debug instead the log isn't really actionable by the user and is more so meant for debugging purposes.
x-ref: slack thread
2022-08-22 11:32:30 -05:00
JJ Kasper
b431bd4ba0
Leverage VERCEL_CLI_VERSION env for deploy tests (#39823)
This updates our next-e2e test deploy mode to auto pass along the VERCEL_CLI_VERSION env variable to allow testing builder changes easier. cc @nkzawa who encountered this.
2022-08-22 09:54:25 -05:00
Michael Oliver
c172d461c8
Remove unnecessary type reference in Vitest example (#39819)
Documentation / Examples

 Make sure the linting passes by running pnpm lint
 The examples guidelines are followed from our contributing doc


The Vitest docs state that /// <reference types="vitest" /> is only required when importing defineConfig from vite.
2022-08-22 09:18:40 -05:00
Adrian Bienias
8f023992a2
Update links to point to more accurate docs (#39818)
Initial links were pointing to basic features which don't describe redirections.
2022-08-22 14:01:14 +00:00
Maedah Batool
e307096e2f
Add clarity in docs for using exportPathMap with getStaticPaths (#39813)
This PR adds a warning note for using the exportPathMap function with getStaticPaths. Any routes defined with EPM will get overridden if that page uses GSP.
Bug

 Related issues linked using #534
 Integration tests added
 Errors have 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 helpful link attached, see contributing.md

Documentation / Examples

 Make sure the linting passes by running pnpm lint
 The examples guidelines are followed from our contributing doc
2022-08-22 08:50:56 -05:00
Henrik Wenz
827e120740
[docs] Migrate dynamic routing example to typescript (#39806)
Changelog

Migrated example to typescript
Remove obsolete Link->as prop
Normalize Module exports

Documentation / Examples

 Make sure the linting passes by running pnpm lint
 The examples guidelines are followed from our contributing doc

Co-authored-by: JJ Kasper <jj@jjsweb.site>
2022-08-22 08:37:36 -05:00
JJ Kasper
628d72fb03
Update ubuntu CI version due to deprecation (#39817)
GitHub actions is deprecating the Ubuntu 18.04 runner so this updates our CI to no longer leverage it in favor of the latest Ubuntu runner.
x-ref: https://github.com/vercel/next.js/actions/runs/2904029539
x-ref: https://github.com/actions/runner-images
2022-08-22 08:30:35 -05:00
Dave Welsh
8bc93d0209
Typescript Documentation Improvement for Persistent Layouts (#33659)
By making `NextPageWithLayout` generic and passing the type parameters to `NextPage`, our pages can continue to specify the props explicitly. This gives us type safety in `getInitialProps`, for example.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have 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 helpful link attached, see `contributing.md`

## Documentation / Examples

- [x] Make sure the linting passes by running `yarn lint`
2022-08-22 09:42:24 +00:00
Kiko Beats
28746520b6
build: upgrade edge-runtime (#39749)
https://github.com/vercel/edge-runtime/compare/v1.1.0-beta.26...v1.1.0-beta.27
2022-08-22 09:28:58 +00:00
Faris Masad
63651a63de
Add note about using the /_error page directly to custom error page article (#39671)
See https://github.com/vercel/next.js/issues/39144

It's not completely clear that `/_error` should not be used as a normal page. Added a note under `Caveats` in the custom error page article
2022-08-22 02:30:18 +00:00
Chase Adams
b7c2bd104d
fix meaninglessFileNames type in compiler options schema (#39698)
# Bug 

I would assume that this should be generated from TypeScript, but based on the [original PR](https://github.com/vercel/next.js/pull/38498/files) it wasn't clear that there was a way to generate these automatically.

Fixes the type of `styledComponents. topLevelImportPaths` and `styledComponents.meaninglessFileNames` so that it matches the [TypeScript type](https://github.com/vercel/next.js/blob/canary/packages/next/server/config-shared.ts#L457).

This was causing a warning here:

```
warn  - Invalid next.config.js options detected: 
  - The value at .compiler.styledComponents must be a boolean but it was an object.
  - The value at .compiler.styledComponents.meaninglessFileNames must be a boolean but it was an array.
  - The value at .compiler.styledComponents must match exactly one schema in oneOf.
 ```

## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`



Co-authored-by: chaseadamsio <103162876+chaseadamsio@users.noreply.github.com>
2022-08-21 23:25:10 +00:00
Kasper Aamodt
bc4d98af72
Convert with-goober example to TS (#39761)
## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The examples guidelines are followed from [our contributing doc]


Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
2022-08-21 22:56:51 +00:00
Henrik Wenz
74fb7ba03e
[Docs] Update mongodb example (#39658)
## Changelog

- Updated deps
- Migrated to typescript

## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The examples guidelines are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples)
2022-08-21 22:38:48 +00:00
greeble
1ebd6a1d94
Update next.js.configs line number (#39802) 2022-08-21 22:16:23 +00:00
Gal Schlezinger
41d4aa04c4
allow Edge Functions to stream a compressed fetch response (#39608)
When a user tried to have the following Edge Function:

```ts
export default () => fetch("https://example.vercel.sh");
```

The Edge Function were failing.

Why is that?

When `fetch` was called, an implicit `Accept-Encoding` header was added
to allow the origin to return a compressed response. Then, the origin
will set the `Content-Encoding` header in the response, to let the
client know that the body needs to be decompressed in order to be read.

That creates an issue though: `response.body` will be a
`ReadableStream<Uint8Array>`, or, a stream that contains binary data
that decodes into _the uncompressed data_ (or, plain text!).

What it means, is that `response.body` is uncompressed data, while
`response.headers.get('content-encoding')` is marking the response body
as compressed payload. This confuses the HTTP clients and makes them fail.

This commit removes the `content-encoding`, `transfer-encoding` and
`content-length` headers from the response, as the Next.js server _always_
streams Edge Function responses.

## Bug

- [ ] Related issues linked using `fixes #number`
- [x] Integration tests added
- [ ] Errors have helpful link attached, see `contributing.md`
2022-08-21 10:43:02 +00:00
Sukka
bf82a47393
refactor(use-intersection): remove useRef usage (#39791)
The PR neither fixes a bug nor introduces a new feature. It just makes the current code be more clearer.

We track the `unobserve` method (to clear the side-effect) in a ref before this PR which is not required anymore:

- The `unobserve` method can only be created during the `useEffect`
- The `unobserve` method will be called during `useEffect` cleans up.

In short, the "life cycle" of the `unobserve` method now only lives inside the `useEffect`. So we can remove the usage of `useRef`.
2022-08-21 10:10:09 +00:00
Sukka
05b621aa9c
refactor(portal): remove useRef from portal component (#39792)
The PR is similar to #39791.

Currently, `<Portal />` saves the container in a ref (with initial value as `null`). The update of the ref happens during the `useEffect`, after creating the corresponding HTMLElement. However, `<Portal />` has to use `forceUpdate` since mutating a ref will not cause the component to update.
The PR fixes that by saving the container of the `Portal` in a state, so no more `forceUpdate`.
2022-08-21 09:39:43 +00:00
Naoyuki Kanezawa
ea7efcb05c
fix(next): Do not display message when middleware is removed on dev mode (#39604)
Fixes https://github.com/vercel/next.js/issues/39532

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have helpful link attached, see `contributing.md`
2022-08-20 13:46:59 +00:00
Kelvin Mok
72fd04a636
[Docs] examples/with-redux-thunk , update README (#39555) (#39712)
## Documentation / Examples

- [x] Make sure the linting passes by running `pnpm lint`
- [x] The examples guidelines are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing.md#adding-examples)

This change is related to issue https://github.com/vercel/next.js/issues/39555  

PTAL, Thanks




Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
2022-08-20 13:01:53 +00:00
Puneet Kathar
f4ea33327c
Update contributing.md (#39767)
## 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.md#adding-examples)
2022-08-20 07:14:46 +00:00
Steven
5b6631a5c9
Add section to next/future/image docs about Known Browser Bugs (#39759)
This PR adds section to `next/future/image` docs about Known Browser Bugs. This also includes workarounds that might vary depending on the image and how the user plans to use it.
2022-08-20 00:21:00 +00:00
Alex Cole
aacc0ce90f
Tweak Convex example (#39739)
This is a followup to #39562 because I realized I made a few mistakes.

Remove convex.json file. Developers using the example should generate this on their own by running npx convex init.
Switch prettier to a dev dependency.
Ignore formatting in Convex generated code while running lint-staged and revert them back to the default generated form (I previously was only ignoring generated code in the main .prettierignore)
Change a let to a const

cc @thomasballinger
Documentation / Examples

 Make sure the linting passes by running pnpm lint
 The examples guidelines are followed from our contributing doc
2022-08-19 18:13:33 +01:00
Sukka
3466862d9d
fix(#39706): add avif support for node serve static (#39733)
The PR fixes #39706 by adding `avif` mime type directly to `send`. The PR also removes the previous avif workaround for image optimizer.

Note: The PR is still a workaround for now. I will submit a PR to `pillarjs/send` to help them update `mime` to fix the issue once and for all. But now `send.mime.define` just works.

## Bug

- [x] Related issues linked using `fixes #number`
- [x] Integration tests added
- [ ] Errors have helpful link attached, see `contributing.md`
2022-08-18 17:57:12 +00:00
JJ Kasper
f7eed07945
Use realpath when emitting traced package.json (#39683)
This ensures we emit the real path when emitting traced package.json files so that we don't conflict with symlinked package paths.
x-ref: slack thread
Bug

 Related issues linked using fixes #number
 Integration tests added
 Errors have helpful link attached, see contributing.md
2022-08-18 17:07:34 +01:00
Delba de Oliveira
ee134ee338
Change the React Server Components CTA to the router/layout RFC (#39724) 2022-08-18 14:23:10 +00:00
Sukka
5360440413
fix(#39609): warns about suspense and ssr (#39676)
Currently, `next/dynamic` will opt-in to `React.lazy` if `{ suspense: true }` is used. And React 18 will always resolve the `Suspense` boundary on the server-side, effectively ignoring the `ssr` option.

The PR fixes #39609 by showing a warning message when `{ suspense: true, ssr: false }` is detected. The error documentation and the corresponding test case has also been updated.

In the future, Next.js could implement a custom version of `React.lazy` that could suspense without executing the lazy-loaded component on the server-side.

cc @huozhi 

## Bug

- [x] Related issues linked using `fixes #number`
- [x] Integration tests added
- [x] Errors have helpful link attached, see `contributing.md`
2022-08-18 13:53:23 +00:00
magic-akari
78aefee1c6
fix(swc/emotion): Correct the SPACE_AROUND_COLON regex (#39710)
## Bug

- [x] fixes #39672 
- [x] Integration tests added
- [ ] Errors have helpful link attached, see `contributing.md`
2022-08-18 10:02:35 +00:00
Tobias Koppers
9c41634104
fix next-app-loader on windows (#39657)
## Bug

- [x] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have helpful link attached, see `contributing.md`


Co-authored-by: JJ Kasper <22380829+ijjk@users.noreply.github.com>
Co-authored-by: Jiachi Liu <4800338+huozhi@users.noreply.github.com>
2022-08-17 17:14:03 +00:00
JJ Kasper
b24b1d8421
v12.2.6-canary.1 2022-08-17 14:12:52 +01:00
Donny/강동윤
ab152918ad
feat(next-swc): Update swc (#39499)
This PR applies

 - https://github.com/swc-project/swc/pull/5487
   - Closes https://github.com/vercel/next.js/issues/39538
 - https://github.com/swc-project/swc/pull/5485
   - Closes https://github.com/vercel/next.js/issues/39412
 - https://github.com/swc-project/swc/pull/5498
   - Closes https://github.com/vercel/next.js/issues/39360
2022-08-17 11:21:57 +00:00
Shu Ding
c79b67cced
Improved server CSS handling (#39664)
Upgrade experimental React, and render link tags directly in the tree during development. The client bundle won't import CSS anymore, and server CSS imports will be transpiled into no-op strings just for HMR to use.

## Follow Ups
- [ ] Flash of unstyled elements when reloading styles
- [ ] Collect client style imports
- [ ] Console warning for duplicated resources
- [ ] Tests

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have 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 helpful link attached, see `contributing.md`

## 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.md#adding-examples)
2022-08-17 10:56:52 +00:00
Tim Neutkens
d4a98a15f7
Add todo for dependsOn (#39677) 2022-08-17 10:39:37 +01:00
Sukka
7fe5c883fc
fix(create-app): support github url has trailing slash (#39665)
## Bug

- [x] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have helpful link attached, see `contributing.md`

The PR fixes #39642, by supporting GitHub repo URLs with a trailing slash while without branch and path.
2022-08-17 01:59:32 +00:00
Steven
53f0e2b31c
Update image tests files from *.js to *.ts (#39663)
Let's utilize typescript for our tests
2022-08-16 23:29:55 +00:00
Balázs Orbán
7de3cf5f89
fix(next-server): Fix priority for edge routes (#39462)
Fixes #39411
Bug

 Related issues linked using fixes #number
 Integration tests added
 Errors have 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 helpful link attached, see contributing.md

Documentation / Examples

 Make sure the linting passes by running pnpm lint
 The examples guidelines are followed from our contributing doc

Co-authored-by: JJ Kasper <jj@jjsweb.site>
2022-08-16 19:05:03 +01:00