Commit graph

17221 commits

Author SHA1 Message Date
Vector73
f2766b979b
docs: Fixes typo in route handlers (#54605) 2023-08-26 15:24:16 -05:00
Vercel Release Bot
c8ff659133
Update font data (#54585)
This auto-generated PR updates font data with latest available
2023-08-26 16:46:25 +00:00
Tim Neutkens
1fe5f9511d
Reuse edgeConditionNames variable (#54594)
Small change to reuse the same array defined right above.

<!-- Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible we request that
you follow the checklist sections below.
Choose the right checklist for the change(s) that you're making:

## For Contributors

### Improving Documentation

- Run `pnpm prettier-fix` to fix formatting issues before opening the
PR.
- Read the Docs Contribution Guide to ensure your contribution follows
the docs guidelines:
https://nextjs.org/docs/community/contribution-guide

### Adding or Updating Examples

- The "examples guidelines" are followed from our contributing doc
https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md
- Make sure the linting passes by running `pnpm build && pnpm lint`. See
https://github.com/vercel/next.js/blob/canary/contributing/repository/linting.md

### Fixing a bug

- Related issues linked using `fixes #number`
- Tests added. See:
https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md

### Adding a feature

- Implements an existing feature request or RFC. Make sure the feature
request has been accepted for implementation before opening a PR. (A
discussion must be opened, see
https://github.com/vercel/next.js/discussions/new?category=ideas)
- Related issues/discussions are linked using `fixes #number`
- e2e tests added
(https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs
- Documentation added
- Telemetry added. In case of a feature if it's used or not.
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md


## For Maintainers

- Minimal description (aim for explaining to someone not on the team to
understand the PR)
- When linking to a Slack thread, you might want to share details of the
conclusion
- Link both the Linear (Fixes NEXT-xxx) and the GitHub issues
- Add review comments if necessary to explain to the reviewer the logic
behind a change

### What?

### Why?

### How?

Closes NEXT-
Fixes #

-->

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-08-26 13:45:46 +02:00
JJ Kasper
8afd85d47f
Add missing install env for release stats (#54581)
This should fix the stalled action as it seems we aren't skipping this postinstall step when we should be which explains why it was passing for PR stats but not release stats

x-ref: https://github.com/vercel/next.js/actions/runs/5980582756/job/16227150469
2023-08-25 22:44:15 +00:00
vercel-release-bot
529a1be6c1 v13.4.20-canary.9 2023-08-25 21:26:50 +00:00
Shu Ding
b4a5663c5f
optimize_barrel SWC transform and new optimizePackageImports config (#54572)
## Implementation

Base on #54530, we're implementing a `optimize_barrel` transform to
optimize barrel files to only export the names we need. If the
transformed file isn't a "barrel file", we just re-export the names from
it without any transformation.

Take `lucide-react` as an example, with #54530 we are able to transform

```js
import { IceCream } from 'lucide-react'
```

to 

```js
import { IceCream } from '__barrel_optimize__?names=IceCream!=!lucide-react?__barrel_optimize_noop__=IceCream'
```

And then, we apply that new request with a new Webpack module rule to
use the SWC loader with option `optimizeBarrelExports: ['IceCream']`,
which eventually got passed to this new `optimize_barrel` transform and
does the optimization.

## Notes

We'll have to add a new `getModularizeImportAliases` alias list to map
`lucide-react` to the ESM version, as we have the `['main', 'module']`
resolve order for the server compiler. Otherwise this optimization
doesn't work in that compiler.

There's no e2e test added because it's already covered by the
`modularize-imports` test as we removed the default `lucide-react`
transform rules and it still works.

We'll need to test other libs before migrating them to the new
`optimizePackageImports` option.

---

Closes #54571, closes #53605, closes #53789, closes #53894, closes
#54063.
2023-08-25 22:29:39 +02:00
JJ Kasper
eee137615e
Update release stats install/build executing (#54576)
Aims to make debugging the release stats failure easier as currently we
don't see the logs are the command is executing

x-ref:
https://github.com/vercel/next.js/actions/runs/5976635577/job/16221230094
x-ref: https://github.com/vercel/next.js/pull/54536
2023-08-25 12:45:58 -07:00
Lee Robinson
b048d7eee2
docs: Forms and mutations (#54314)
This PR is a larger change to documentation to make the following
updates:

- Deconstructs [Server
Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions)
into "Forms and Mutations" and an API reference
- Removes content in place of future React API documentation pages
- Removes outdated [Building
Forms](https://nextjs.org/docs/pages/building-your-application/data-fetching/building-forms)
docs from the Pages Router and adds conditional content for both routes
in "Forms and Mutations"
- Adds TypeScript code blocks to API Routes page, recommends Route
Handlers for isomorphic signatures.
- Updates `revalidatePath` and `revalidateTag` docs to have a Server
Actions example.

---------

Co-authored-by: Delba de Oliveira <32464864+delbaoliveira@users.noreply.github.com>
2023-08-25 14:31:11 -05:00
Tobias Koppers
2de45693a9
Revert "Decreased watchpack aggregate timeout" (#54515)
Reverts vercel/next.js#54461

Closes WEB-1436
2023-08-25 16:46:12 +00:00
Vincent Voyer
e4ff4da7c8
fix(DX): More precise error messages for export const config deprecation (#54492)
Before:
```
Error: `export const config` in /vercel/path0/src/app/api/route.js is deprecated. Please change `runtime` property to segment export config. See https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config
```

After:
```
Error: `export const config` in /vercel/path0/src/app/api/route.js is deprecated:
  - Change `config.runtime…` to `export const runtime = "edge"`
  - Change `config.regions…` to `export const preferredRegion = ["us-east-1"]`
Visit https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config for more information.
```

The values proposed in Change.. are the actual ones from the customers, they can just copy paste.

Closes NEXT-1560
2023-08-25 16:25:15 +00:00
Clément Dreptin
41be932238
docs: fix source files hash calculation (#54509)
Hello!

I recently tried to cache the `.next/cache` directory in a GitHub action following what was said in the documentation and realized that hashing the source files didn't work properly.

This problem also occured in [next-cache](https://github.com/jongwooo/next-cache) and was fixed by [this PR](https://github.com/jongwooo/next-cache/pull/17).

This PR simply changes the example from the documentation to apply the same fix (stop using brackets in the patterns passed to `hashFiles`).

Hope it helps!

### Improving Documentation

- [x] Run `pnpm prettier-fix` to fix formatting issues before opening the PR.
- [x] Read the Docs Contribution Guide to ensure your contribution follows the docs guidelines: https://nextjs.org/docs/community/contribution-guide
2023-08-25 16:04:21 +00:00
vercel-release-bot
dbfcfd75b7 v13.4.20-canary.8 2023-08-25 14:28:07 +00:00
Tobias Koppers
08d3258762
update turbopack (#54558)
* https://github.com/vercel/turbo/pull/5723 <!-- Alex Kirszenberg - Misc
comments in turbo_tasks -->
* https://github.com/vercel/turbo/pull/5714 <!-- OJ Kwon - test(ci):
update datadog-ci -->
* https://github.com/vercel/turbo/pull/5705 <!-- Justin Ridgewell -
Transformation code necessary to support Server Actions -->
* https://github.com/vercel/turbo/pull/5739 <!-- Justin Ridgewell -
Update rust toolchain -->
* https://github.com/vercel/turbo/pull/5785 <!-- Tobias Koppers - add
evaluatables to chunk list ident -->
* https://github.com/vercel/turbo/pull/5783 <!-- Tobias Koppers -
Tracing improvements -->
* https://github.com/vercel/turbo/pull/5738 <!-- Alex Kirszenberg -
Generic types over Vcs -->
* https://github.com/vercel/turbo/pull/5795 <!-- Leah - fix: snapshot
test path canonicalization -->
* https://github.com/vercel/turbo/pull/5794 <!-- Tobias Koppers - fix
"any" context condition implementation -->
* https://github.com/vercel/turbo/pull/5800 <!-- Tobias Koppers - add
middleware entry type -->
* https://github.com/vercel/turbo/pull/5786 <!-- Tobias Koppers -
perform invalidation directly on writes -->

Closes WEB-1446
2023-08-25 16:22:35 +02:00
Steven
6a70ebf2aa
chore(docs): add example of sanity image to loaderFile config (#54529)
https://www.sanity.io/docs/image-urls
2023-08-25 14:10:26 +00:00
vercel-release-bot
d8b1ad41a7 v13.4.20-canary.7 2023-08-25 13:43:11 +00:00
Jiachi Liu
b82e2cde89
Fix missing new line for certain logs (#54442)
When logging are sending from worker they're missing new line, that
could be directly added after to spinner

#### After

![image](https://github.com/vercel/next.js/assets/4800338/c4494ff8-0335-49e3-8cce-2f9dc1fe7975)

#### Before

![image](https://github.com/vercel/next.js/assets/4800338/bcf3e27d-de39-4e27-ac57-09c922c09ecc)
2023-08-25 15:27:27 +02:00
JJ Kasper
483ebc2516
Skip copying signal field for revalidate (#54533)
This ensures we don't pass through the signal field when revalidating a
fetch as that can be delayed and we don't want to abort the
revalidation.

Closes: https://github.com/vercel/next.js/issues/54045
2023-08-25 15:24:06 +02:00
Balázs Orbán
9a2a349639
chore(eslint): bump ESLint plugins (#54490)
Fixes #54480
2023-08-25 10:58:06 +00:00
Tobias Koppers
4d6febf426
Turbopack: add edge support for pages apis (#54449)
### What?

* add support for middleware manifest and edge adapter for pages API
routes
* improve the error reporting a tiny bit

### Why?

### How?


Closes WEB-1428
2023-08-25 09:11:31 +02:00
Zack Tanner
dbac7552eb
fix resolve routes behavior when matching a dynamic segment (#54539)
When `fallback: false` is set and you visit a dynamic segment (e.g. `/[slug]`), the router server was getting stuck in a `x-no-fallback` loop and eventually would fail because it was matching the output at `check_fs` before attempting to resolve dynamic routes in the `check: true` block.

Closes NEXT-1557
2023-08-25 02:14:09 +00:00
JJ Kasper
36b45c6f50
Break-up install and build steps for PR stats (#54536)
Breaks up these commands to track down the timeout for release stats. 

x-ref: https://github.com/vercel/next.js/actions/runs/5969590815/job/16195862006
2023-08-25 02:00:36 +00:00
Ahmed Abdelbaset
7ac6bb1a88
docs: Add missing parameters to both useSelectedLayoutSegment & useSelectedLayoutSegments (#53602)
This PR adds missing parameters to the `useSelectedLayoutSegment` & `useSelectedLayoutSegments` hooks since they take *optional* `parallelRoutesKey`.

Co-authored-by: Lee Robinson <9113740+leerob@users.noreply.github.com>
2023-08-24 23:14:47 +00:00
Steven
a607deaaf7
chore(ci): emit env vars that impact ci results (#54534)
The values of `NEXT_TEST_MODE` and `HEADLESS` can impact the test results so we should capture these values when CI runs.
2023-08-24 23:12:23 +00:00
vercel-release-bot
96f571218b v13.4.20-canary.6 2023-08-24 22:34:30 +00:00
Shu Ding
3f1fae947c
Implement named_import_transform (#54530)
This is the first step to enable the automatic "modularize imports"
optimization for some libraries. It transforms named imports like
`import { A, B, C as F } from 'foo'` to a special loader string: `import
{ A, B, C as F } from "barrel-optimize-loader?names=A,B,C!foo"`.

In a follow-up PR we'll apply corresponding optimization with another
SWC transformer.
2023-08-24 22:54:13 +02:00
JJ Kasper
2590f4931b
Update runner labels for PR stats (#54524)
Speeds up our stats generation by swapping out the underlying runner,
previously this took 13+ minutes now it's around 5 minutes.
2023-08-24 13:47:09 -07:00
JJ Kasper
ba0efe9770
Update flakey image component tests (#54526)
x-ref: https://github.com/vercel/next.js/actions/runs/5967624344/job/16189684792#step:28:1642
2023-08-24 20:15:10 +00:00
JJ Kasper
e471a46a28
Enable verbose logging for turbo in CI (#54525)
Gives us more insight into turbo runs when building swc
2023-08-24 12:49:17 -07:00
JJ Kasper
8487278c52
Fix failing TS test from new release (#54523)
Fixes: 

![CleanShot 2023-08-24 at 11 20
41@2x](https://github.com/vercel/next.js/assets/22380829/00d7e646-f41f-43ed-a18a-4532d0b7f5dc)

x-ref:
https://github.com/vercel/next.js/actions/runs/5967378932/job/16188975903?pr=54515#step:28:256
2023-08-24 11:36:38 -07:00
Lee Robinson
4e052deff2
docs: fix broken link missing leading slash (#54520) 2023-08-24 17:19:23 +00:00
Delba de Oliveira
94b7743cbe
Docs: Fix formatting issues in the rendering docs (#54517) 2023-08-24 16:49:46 +00:00
vercel-release-bot
9bcd570bc1 v13.4.20-canary.5 2023-08-24 16:38:19 +00:00
Zack Tanner
e08839a5a9
fix infinite navigate events when Promise is proxied (#54394)
### What
When the global `window.Promise` is proxied, things that rely on custom Promise properties (e.g. the `status` field) break. In the case of navigation events, the prefetch cache is never identified as being fulfilled, so navigation hangs in an infinite loop.

### How?
This ensures that the value being stored in the prefetch cache have the expected Promise signature even when proxied. 

x-ref: https://github.com/vercel/next.js/discussions/53746 
[slack x-ref](https://vercel.slack.com/archives/C03S8ED1DKM/p1692626697034029)
2023-08-24 16:22:48 +00:00
Delba de Oliveira
1dc5c066cb
docs: Rewrite Rendering Section and React Essentials Page (#51579)
We initially wrote the [React
page](https://nextjs.org/docs/getting-started/react-essentials) to
introduce Server Components in the App Router, but over time, some
implementation details have changed, and the information has become
stale. The React team is working on adding new docs, so I'd like to
change the narrative on the Next.js docs from "client vs. server
components" to "writing code for the server and for the client" - and
link back to the React documentation when it becomes available.

As React developers, we're very familiar with writing code for the
client, it's nice and simple. But doing so comes at the expense of not
being familiar with the server. The aim of these docs is to help
developers become proficient in both the client and server environments.

I'd like to take it back to the foundations, and not use abstractions
like SSG and CSR, MPAs or SPAs, as those terms come with their own set
of assumptions that make it harder to understand how RSC works. Instead,
we'll focus on the request lifecycle, show how application code flows
from the server to the client, and discuss the trade-offs of doing
operations in each environment.

- [x] Page: Rendering Fundamentals
   - [x] Environments: Client and Server
   - [x] Request-response lifecycle
   - [x] Network Boundary
- [x] Page: Server Components
    - [x] Benefits and use cases of server rendering
    - [x] How to use Server Components in Next.js
    - [x] How Server Components are rendered
    - [x] Static Rendering
    - [x] Dynamic Rendering
    - [x] Streaming
- [x] Page: Client Components
    - [x] Benefits and use cases of client rendering
    - [x] How to use Client Components in Next.js
    - [x] How Client Components are rendered
        - [x] Initial vs. Subsquent navigation
- [x] Page: Composition Patterns
    - [x] When to use client and server components
    - [x] Server Component Patterns
    - [x] Client Component Patterns
    - [x] Interleaving Client and Server Components
- [ ] ~Diagrams~ will follow up with new PR.
- [x] Set up redirects: https://github.com/vercel/front/pull/24917

---------

Co-authored-by: Térence Hollander <hollanderterence@gmail.com>
Co-authored-by: shawnthwei <32075290+shawnthwei@users.noreply.github.com>
Co-authored-by: Michael Novotny <manovotny@gmail.com>
2023-08-24 08:48:44 -05:00
Uzair Ali
32f11c34e8
Update 10-testing.mdx (#54107)
Fixed `next/jest.js` import in documentation. without `.js` it show this error
```
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'F:\React\my-project\node_modules\next\jest' imported from F:\React\my-project\jest.config.mjs
Did you mean to import next/jest.js?
    at new NodeError (node:internal/errors:399:5)
    at finalizeResolution (node:internal/modules/esm/resolve:326:11)
    at moduleResolve (node:internal/modules/esm/resolve:945:10)
    at defaultResolve (node:internal/modules/esm/resolve:1153:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:838:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36)
 ```
2023-08-24 12:02:00 +00:00
Kiko Beats
08b117ac5c
upgrade Edge Runtime dependency (#54489) 2023-08-24 11:00:31 +00:00
Zack Tanner
9ea6bc4bcb
fix: custom incremental cache handlers should work when transpiled (#54472)
This fixes a `CurCacheHandler is not a constructor` error when the custom cache handler path is transpiled from ESM -> CJS (resulting in the handler being attached to the `default` property on the module's exports)

Closes NEXT-1558
Fixes #54453
2023-08-24 03:48:30 +00:00
David Porter
be5f9baf74
docs: Add next-i18n-router as a resource for internationalized routing (#52344)
### Why?
Many developers are asking how to add internationalized routing in the App Router as it works in the Pages Router. [next-i18n-router](https://www.npmjs.com/package/next-i18n-router) is a very helpful package that fully solves this challenge.

### How?
Unlike the example provided in these Next.js i18n docs, [next-i18n-router](https://www.npmjs.com/package/next-i18n-router) does not require nesting all pages in a `[lang]` dynamic segment. It also allows for the default language to be accessible without a locale prefix in the path (just like in the Pages Router).

It includes locale detection based on the `accept-language` header as recommended in the Next.js docs, as well as support for the `NEXT_LOCALE` cookie to set a user's preferred language (just like in the Pages Router).
2023-08-24 01:07:43 +00:00
Will Binns-Smith
7b5f3b354a
Trace upload fixup (#54455)
This:

- Includes Next.js version as metadata
- Includes `navigation-to-hydration` timings (note: this metric still needs to be refined to better capture complete hydration)
- Updates `client-hmr-latency`'s `updatedModules` to be of the form `[project]/foo.js` instead of `./foo.js`, aligning with other events.


Closes WEB-1429
2023-08-24 00:29:25 +00:00
vercel-release-bot
80e6f07f01 v13.4.20-canary.4 2023-08-23 23:32:02 +00:00
Zack Tanner
1dffd3c02a
remove HMR polling in favor of more targeted events (#54406)
This removes the client-side polling logic that we're doing on every HMR
tick in favor of events like `addedPage` / `removedPage`. It was leading
to a lot of misc issues & confusion surrounding error/404 pages being
polled needlessly.

Instead this updates `addedPage` / `removedPage` to be emitted on the
server, so that we can leverage those hooks to reload when necessary.

Fixes #10024
Fixes #51132
Closes NEXT-1372
related discussion: https://github.com/vercel/next.js/discussions/40000

---------
2023-08-23 16:25:57 -07:00
JJ Kasper
fb3f045679
Generate prefetch RSC paylod during build for SSR paths (#54403)
This ensures we prerender the prefetch RSC payload for non-fully
prerendered paths so that we don't need to invoke un-necessarily to
generate this payload.

x-ref: [slack
thread](https://vercel.slack.com/archives/C05KYT5S9FF/p1692155103311829)
2023-08-23 16:09:27 -07:00
JJ Kasper
7a6b6c8ad8
Update install-native script to avoid pnpm cache (#54462)
Seems this sometimes pulls from pnpm cache instead of checking for newer canary version so this updates to use `pnpm add` instead which should help here.
2023-08-23 20:30:46 +00:00
Wyatt Johnson
7363bf4354
Decreased watchpack aggregate timeout (#54461)
This decreases the aggregate event timeout for WatchPack in development to `5ms` which should improve the performance of reloading routes for users developing Next.js applications.
2023-08-23 20:15:21 +00:00
Shu Ding
758b9d251a
Use push for Server Action redirections (#54458)
Closes #53911. When calling `redirect()` instead a Server Action, the previous route should exist in the history when it's handled by the framework.
2023-08-23 19:47:46 +00:00
Steven
0621171f0b
chore(ci): add socket.yaml (#54446)
This config file will prevent Socket from scanning unnecessary directories and should speed it up.

See https://docs.socket.dev/docs/socket-yml
2023-08-23 18:12:51 +00:00
Lee Robinson
ed3aea924d
docs: Remove unneeded word in caching docs (#54451) 2023-08-23 16:24:31 +00:00
Tim Neutkens
00106b7ef4
Optimize webpack memory cache garbage collection (#54397)
## What

Adds a reworked version of webpack's [built-in memory cache garbage
collection
plugin](853bfda35a/lib/cache/MemoryWithGcCachePlugin.js (L15))
that is more aggressive in cleaning up unused modules than the default.

The default marks 1/5th of the modules as "up for potentially being
garbage collected". The new plugin always checks all modules. In my
testing this does not cause much overhead compared to the current
approach which leverages writing to two separate maps. The change also
makes the memory cache eviction more predictable: when an item has not
been accessed for 5 compilations it is evicted from the memory cache, it
could still be in the disk cache.


In order to test this change I had to spin up the benchmarks but these
were a bit outdated so I've cleaned up the benchmark applications.

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-08-23 15:46:32 +02:00
vercel-release-bot
93e4e6d438 v13.4.20-canary.3 2023-08-23 13:13:36 +00:00
Jiachi Liu
9834ab7e15
Fix not found css not being preloaded while navigation (#53906)
### Problem

One style of `not-found` has `precendence` property with "undefined" value, which can't be handled by React Float, then during navigation the style could not load properly, lead to the style missing in issue #53210.

### Solution

Always enable `precendence` for all links, so all the css styles of page and convention components can be hoist by react properly. Float will decide which one should be handled. Previously this change only applies to template, actually we can apply it to all components so that they can all be handled properly especially during client navigation.

Related react change: https://github.com/facebook/react/pull/27265
Fixes #53210
2023-08-23 13:07:30 +00:00