Commit graph

6507 commits

Author SHA1 Message Date
Tim Neutkens
d1f18a51fe
Move router reducer to separate file (#45236)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-26 13:23:43 +01:00
Gal Schlezinger
35f68bc691
[edge] improve fetch stack traces in edge runtime (#44750)
Right now, when doing the following in an Edge API:

```typescript
export default async () => {
  await fetch("https://hello.world");
};
```

The stack trace generated does not contain the actual line of code that caused the error.
This gives a bad developer experience when working with `next dev`.
This PR fixes that for this specific use case and adds a test to make sure there's no regression.

For `next start`, there's also a small change, that needs to be pushed upstream to `edge-runtime`.
In order to run user code in the Edge Runtime, we call `vm.evaluate(code: string)`. However,
if we embrace the `options` from the signature of `vm.runInContext(code, ctx, options)`, we can
pass in the filename so the stack trace is correct.

## Bug

- [ ] Related issues linked using `fixes #number`
- [x] Integration tests added
- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)
2023-01-26 10:16:53 +00:00
Shu Ding
d5504cea2c
Allow metadata related exports in TS plugin (#45282)
This PR ensures that `metadata` and `generateMetadata` are valid exports
for pages and layouts during the TS plugin check.

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see
[`contributing.md`](https://github.com/vercel/next.js/blob/canary/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`
- [ ]
[e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs)
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://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && 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>
2023-01-25 23:48:19 +01:00
Shu Ding
f2a295de9d
Fix typo in TS plugin (#45279) 2023-01-25 14:12:08 -08:00
Shu Ding
e8b208d170
TS plugin: warn about amp config in app (#45254)
Asked by @ijjk in
https://github.com/vercel/next.js/pull/45228#discussion_r1086004983:

<img width="1171" alt="CleanShot 2023-01-25 at 10 26 15@2x"
src="https://user-images.githubusercontent.com/3676859/214526847-6481e33b-060e-4e15-bf1d-4274760068f5.png">


## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see
[`contributing.md`](https://github.com/vercel/next.js/blob/canary/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`
- [ ]
[e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs)
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://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && 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>
2023-01-25 22:19:19 +01:00
JJ Kasper
e868f77ede
Update app cache handling in development (#45248) 2023-01-25 11:51:53 -08:00
JJ Kasper
6a51edc35d
v13.1.6-canary.1 2023-01-24 20:00:52 -08:00
JJ Kasper
7b40ffa587
Add handling for app/pages manifest race condition (#45244) 2023-01-24 17:51:18 -08:00
Jimmy Lai
2811722ba0
misc: change strategy for link prefetch test (#45234)
Co-authored-by: JJ Kasper <jj@jjsweb.site>
2023-01-24 16:04:56 -08:00
Hannes Bornö
018208fb15
Add editor links to RSC build error (#45179) 2023-01-24 15:13:37 -08:00
Jiachi Liu
45a9373113
Support metadata icons field (#45105)
NEXT-400

## Feature

- [x] 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`
- [x] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) 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://github.com/vercel/next.js/blob/canary/contributing.md)
2023-01-24 18:19:11 +00:00
Jimmy Lai
ff1664b11b
perf: avoid sync re-renders when using next/link and next/image (#45165)
fixes NEXT-164

## Context

This PR fixes an issue happening when using `next/image` or `next/link` where rendering them caused sync re-renders with React. This breaks [selective hydration](https://github.com/reactwg/react-18/discussions/130) in React.

## The fix

The cause of this behaviour is that we're calling `setState` in a ref mount, which basically "forces" React to disable concurrent rendering. It finishes the render, runs synchronously the passive effects and re-renders again to make sure that everything is in sync, all of that in without yielding to the browser to paint.

Here in this case, the `setState` call is because of the `useIntersectionObserver` hook. It's implemented in a way that requires the user to call a setter that will store the ref value in a component state variable to re-trigger a render and re-run the effect to create the intersection observer.

This is not necessary as the ref init phase always runs before the passive effect runs, so we can just copy the ref to another ref inside `useIntersectionObserver` without triggering a re-render.

## Before/After

1st screenshot: before
2nd screenshot: after

Basically on the first screenshot, you can see that React is doing a synchronous re-render (see `flushPassiveEffects`). This is not good.

If you look at screenshot 2, you can see it does not happen anymore and that the passive effects are flushed in another block in the flamegraph.

<img width="1110" alt="CleanShot 2023-01-23 at 14 30 11@2x" src="https://user-images.githubusercontent.com/11064311/214051860-c42d2849-cd10-4922-a3e0-9b715fc87b23.png">

<img width="520" alt="CleanShot 2023-01-23 at 14 29 01@2x" src="https://user-images.githubusercontent.com/11064311/214051555-04adf516-9c0b-4056-ac65-1ef33614c767.png">





## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/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`
- [ ] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) 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://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2023-01-24 17:47:18 +00:00
Jan Kaifer
b386f680cc
Update handling of autoscrolling on navigation in app (#43845)
- Add support for scrolling to the sides and down when navigating
- Add tests for vertical scrolling
- Add tests for horizontal scrolling
- Add tests for `router.refresh()`
	- should not scroll by itself
	- should not block router.push from scrolling
	- should not scroll when page refreshed using fash refresh
- Scroll to the top of document if that gets page into viewport
	- I didn't want to implement some heuristics on if we can scroll to the top of the page so I just scroll there and check.
	- This implementation may not play well with some nested scrollable containers (but that never worked, just FYI)
	
- Improved typings on `BrowserInterface` a little - backward compatible change.

Co-authored-by: Shu Ding <3676859+shuding@users.noreply.github.com>
2023-01-24 15:41:06 +00:00
JJ Kasper
2e251cb85f
Revert "Revert "Revert "Revert "Initial support for metadata (#44729)"" (#45113)"" (#45196)
Hopefully last time

Reverts vercel/next.js#45130
2023-01-24 13:21:59 +00:00
Hannes Bornö
0d2aeb570d
Reduce component stack spacing for components without metadata (#45218)
Reduces the spacing when the component doesn't have any metadata.

Before
![image](https://user-images.githubusercontent.com/25056922/214269347-a9da3372-b22e-45ef-89a8-f9c794e661f4.png)

After
![image](https://user-images.githubusercontent.com/25056922/214269203-0fd6fb53-1cf8-44a2-94e1-427ab234c1d6.png)

Compared to components with file
![image](https://user-images.githubusercontent.com/25056922/214269573-5e723669-5eb9-446d-bc1a-ca8d9d8fe612.png)


## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/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`
- [ ] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) 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://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2023-01-24 11:15:05 +00:00
Hannes Bornö
7d00e362d2
Show component stack in error overlay on hydration error (#45089) 2023-01-24 11:12:29 +01:00
Hannes Bornö
6b5f5d2f9f
Add build time error if error.js is missing "use client" (#44961) 2023-01-24 09:57:40 +01:00
JJ Kasper
752136e84b
v13.1.6-canary.0 2023-01-23 15:04:49 -08:00
Jiachi Liu
e6ff749aee
Fix React.lazy preloading during SSR (#45160)
## Bug

Previously the `React.lazy` and Loadable preloading are creating different module loading promises with loader. Now we change to wait the loader in `React.lazy` to make sure for SSR case they're preloaded. The case to trigger this bug is: When adding `Document.getInitialProps` (aka. gIP), rendering goes to process the gIP first which would make the lazy elements executed before gIP, then preloading will happen after lazy which leads to Suspense resolves too fast without content.

Fixes #45151

- [x] Related issues linked using `fixes #number`
- [x] Integration tests added
- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)
2023-01-23 22:13:37 +00:00
Jiachi Liu
e33e46d950
Fix dynamic no ssr with babel transform (#45091) 2023-01-23 13:39:47 -08:00
JJ Kasper
f931a636e1
Add debug info to static bailout message (#45192) 2023-01-23 13:25:00 -08:00
JJ Kasper
4e6ea4aaf2
v13.1.5 2023-01-23 11:32:41 -08:00
JJ Kasper
8dac22ad56
v13.1.5-canary.3 2023-01-23 10:40:13 -08:00
Tim Neutkens
9f9c9ea807
Add support for node: prefix when importing Node.js builtin modules (#45149)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-23 14:16:35 +01:00
Hannes Bornö
1dcf981647
Don't log suppressed error during export (#45100)
Checks if we're exporting and skips to log the suppressed errors.

Before

![image](https://user-images.githubusercontent.com/25056922/213746411-c1834b65-ebf5-4db5-91b7-e77c9707d78a.png)

After

![image](https://user-images.githubusercontent.com/25056922/213746255-04322f83-68b6-4271-b4fb-c363bd2a8c9d.png)

Fixes NEXT-399

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see
[`contributing.md`](https://github.com/vercel/next.js/blob/canary/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`
- [ ]
[e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs)
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://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && 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>
2023-01-23 08:28:30 +01:00
JJ Kasper
440560fbbb
Ensure config warnings only show once (#45142)
Since we now call `loadConfig()` in various processes our `execOnce`
handling isn't tracking when we have already shown warnings/logs in
another process so this adds a `silent` flag that we can leverage when
calling `loadConfig()`.

## Bug

- [x] Related issues linked using `fixes #number`
- [x] Integration tests added
- [ ] Errors have a helpful link attached, see
[`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)

Fixes: [slack
thread](https://vercel.slack.com/archives/C03KAR5DCKC/p1674351677627259)
2023-01-21 22:47:24 -08:00
JJ Kasper
70282b7269
v13.1.5-canary.2 2023-01-21 21:24:01 -08:00
Tim Neutkens
a8c3b71192
Update reducer comments (#45127)
Co-authored-by: JJ Kasper <jj@jjsweb.site>
2023-01-21 21:35:08 +01:00
Tim Neutkens
ff50621228 v13.1.5-canary.1 2023-01-21 21:10:33 +01:00
Maia Teegarden
b224c5f3ee
Revert "Revert "Revert "Initial support for metadata (#44729)"" (#45113)" (#45130)
This reverts commit 259cbc1806.

It does not have necessary changes to make Turbopack work.



## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/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`
- [ ] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) 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://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2023-01-21 19:22:56 +00:00
Tim Neutkens
f970827db9 v13.1.5-canary.0 2023-01-21 17:11:49 +01:00
JJ Kasper
2293438ee0
Update incremental cache handler for minimal mode (#45123) 2023-01-20 16:38:16 -08:00
JJ Kasper
259cbc1806
Revert "Revert "Initial support for metadata (#44729)"" (#45113) 2023-01-20 15:34:50 -08:00
JJ Kasper
0a5d27287f
v13.1.4 2023-01-20 14:59:00 -08:00
JJ Kasper
3ce4789499
v13.1.4-canary.1 2023-01-20 12:59:33 -08:00
JJ Kasper
e0865b10e0
Revert "Initial support for metadata (#44729)" (#45111) 2023-01-20 11:57:18 -08:00
Damien Simonin Feugas
e8ae4e219e
fix(#44077): allow edge runtime for api routes inside src/ folder (#45093)
fixes: https://github.com/vercel/next.js/issues/44382
closes: https://github.com/vercel/next.js/pull/44882
closes: https://github.com/vercel/next.js/pull/44383
2023-01-20 11:04:27 -08:00
Tim Neutkens
c254b74c00 v13.1.4-canary.0 2023-01-20 10:32:03 +01:00
Shu Ding
d1f6a4295b
Initial support for metadata (#44729)
This PR implements page and layout exported `metadata` field support with limited properties.

## 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`
- [x] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) 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://github.com/vercel/next.js/blob/canary/contributing.md)


Co-authored-by: Jiachi Liu <4800338+huozhi@users.noreply.github.com>
Co-authored-by: Tim Neutkens <6324199+timneutkens@users.noreply.github.com>
2023-01-20 08:47:30 +00:00
JJ Kasper
919a71186e
v13.1.3 2023-01-19 19:01:12 -08:00
JJ Kasper
bd23ad3a9b
v13.1.3-canary.6 2023-01-19 15:27:33 -08:00
Jiachi Liu
c648f9d413
Fix next/dynamic non ssr in pages when appDir is enabled (#45066)
When `appDir` is enabled, `next/dynamic` with `ssr: false` didn't get
correctly compiled with swc. The `server_components` condition in
next_dynamic transform should respect to the server components
compilation, but it was accidently turned on when server components is
enabled.

This PR fixes it that only turn on the flag when it's in server
components compilation (when `is_server` option is `true`)

reported by @MaxLeiter 

## Bug

- [x] Related issues linked using `fixes #number`
- [x] Integration tests added
- [ ] Errors have a helpful link attached, see
[`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-20 00:25:46 +01:00
Hannes Bornö
0faedd9e1e
Fix error when CSS @import fails to resolve (#45010) 2023-01-19 14:43:32 -08:00
Selene Blok
0a5097c466
Add shiki and vscode-oniguruma to default server-external packages (#44968)
fixes https://github.com/vercel/next.js/issues/44316
fixes https://github.com/shikijs/shiki/issues/398

Co-authored-by: JJ Kasper <jj@jjsweb.site>
2023-01-19 13:50:59 -08:00
RD
72d35d0524
Fix typescript plugin (#44128)
Co-authored-by: Shu Ding <g@shud.in>
Co-authored-by: JJ Kasper <jj@jjsweb.site>
2023-01-19 13:18:41 -08:00
Hannes Bornö
9b39c79d2c
Display the reason of hydration error in error overlay (#44857) 2023-01-19 13:45:34 +01:00
Hannes Bornö
d363e6f2b3
Don't dispaly "Error: " twice when router isn't mounted (#45038)
Before

![image](https://user-images.githubusercontent.com/25056922/213422675-d2865012-ea23-4ee7-b984-4021e698bce0.png)

After

![image](https://user-images.githubusercontent.com/25056922/213422561-5730efea-82da-4e13-aac6-a1e84b098605.png)

Fixes NEXT-381

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see
[`contributing.md`](https://github.com/vercel/next.js/blob/canary/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`
- [ ]
[e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs)
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://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing
doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
2023-01-19 13:12:36 +01:00
JJ Kasper
9b97461ba8
v13.1.3-canary.5 2023-01-18 17:03:39 -08:00
JJ Kasper
57fb41b880
Ensure additional windows are not created on Windows OS (#45022) 2023-01-18 16:59:02 -08:00
Hannes Bornö
c50641f709
Remove next-app-loader from import trace (#44996) 2023-01-18 14:52:39 -08:00