No description
Find a file
Janka Uryga 0fee50ed6e
fix: app-router prefetch crash when an invalid URL is passed to Link (#66755)
Closes [#66650](https://github.com/vercel/next.js/issues/66650)
Closes NEXT-3520

### What?

- Make Link not throw during prefetch if it received an invalid `href`
(see [#66650](https://github.com/vercel/next.js/issues/66650))
- Throw in dev mode if an invalid link was passed to `router.prefetch`
-- this matches current prod behavior
- (previously, we'd immediately exit out of `router.prefetch`, so the
user would see no indication that this'd fail in prod)

### Why?

If an invalid URL was passed to `<Link>`, the whole app would crash and
show "A client-side exception occurred". A failed prefetch should not
bring down the whole app.

Note that This preserves the current behavior of explicit
`router.prefetch(url)` throwing an error if `url` is invalid. We may
want to adjust this in the future, but that could be considered a
breaking change, so I'm leaving it out for now. This only affects
`Link`, which was intended to catch any errors thrown from
`router.prefetch`, but that bit was accidentally broken.
2024-06-11 21:36:27 +02:00
.cargo Use rust-lld for Windows on arm64 (#66360) 2024-05-31 16:00:01 -07:00
.config Update teamname in codeowners (#57775) 2023-10-31 12:33:13 +00:00
.devcontainer fix: Update docker base images to node:20 (#66702) 2024-06-10 16:40:26 +02:00
.github remove related e2e workflow (#66758) 2024-06-11 10:18:58 -07:00
.husky refactor: remove unnecessary lint-staged operations (#65861) 2024-05-30 00:56:30 +00:00
.vscode chore: add git blame ignore-revs support to gitlens for vscode configuration (#65762) 2024-05-14 14:18:10 -07:00
bench chore: update prettier to 3.2.5 (#65092) 2024-05-08 21:47:14 +02:00
contributing chore: rename 'example bug' label to 'examples' (#64775) 2024-04-19 12:39:44 +02:00
docs Docs: Fix typo (#66749) 2024-06-11 08:30:42 -05:00
errors chore(docs): remove suggestion of manually installing sharp (#66034) 2024-05-21 15:42:55 +00:00
examples Update Sanity example deps and prepare for next v15 (#66158) 2024-06-04 10:46:46 -07:00
packages fix: app-router prefetch crash when an invalid URL is passed to Link (#66755) 2024-06-11 21:36:27 +02:00
patches [Memory] Add option to reduce memory usage caused by duplicate strings in webpack-sources (#66003) 2024-05-22 15:30:05 -05:00
scripts Log stdio for pull-turbo-cache script (#66759) 2024-06-11 10:30:56 -07:00
test fix: app-router prefetch crash when an invalid URL is passed to Link (#66755) 2024-06-11 21:36:27 +02:00
turbo/generators fix(generators): update errors gen (#60233) 2024-01-04 20:22:21 +01:00
.alexignore Integrate next-* crates from Turbopack (#47019) 2023-03-13 14:33:17 +01:00
.alexrc docs: Add "special" to the Alex allowlist (#48021) 2023-04-06 16:32:06 +02:00
.eslintignore Unignore test/**/*.test.* for ESLint (#66415) 2024-06-03 18:15:29 +02:00
.eslintrc.json [lint] Allow lint warnings to pass in CI (#66140) 2024-06-10 12:57:46 -07:00
.git-blame-ignore-revs chore: add git blame ignore-revs support to gitlens for vscode configuration (#65762) 2024-05-14 14:18:10 -07:00
.gitattributes chore: update gitattributes with linguist-vendored (#54683) 2023-08-28 21:50:19 +00:00
.gitignore ci: report daily turbo integration test results from this repo (#58965) 2023-12-04 16:18:42 +01:00
.node-version Update .node-version (#56460) 2023-10-05 07:40:12 +00:00
.npmrc fix: npm publish provenance permissions (#48757) 2023-04-24 14:08:55 +00:00
.prettierignore chore: update prettier to 3.2.5 (#65092) 2024-05-08 21:47:14 +02:00
.prettierrc.json chore(examples): use default prettier for examples/templates (#60530) 2024-01-11 16:01:44 -07:00
.rustfmt.toml build(cargo): move workspaces manifest to top level (#48198) 2023-04-19 18:38:36 +02:00
azure-pipelines.yml use pathToFileUrl to make esm import()s work with absolute windows paths (#64386) 2024-04-12 19:58:13 +02:00
Cargo.lock feat(turbopack-ecmascript): cache external modules with wrapper (#63337) 2024-06-10 15:39:40 +00:00
Cargo.toml feat(turbopack-ecmascript): cache external modules with wrapper (#63337) 2024-06-10 15:39:40 +00:00
CODE_OF_CONDUCT.md updated code of conduct to v2.1 (#34208) 2022-02-10 18:11:42 -06:00
contributing.md chore: improve repo templates (#46629) 2023-03-01 09:25:51 -08:00
jest.config.js test: use replay jest runner to add current test name to recording (#60438) 2024-01-10 10:31:32 +01:00
jest.replay.config.js Add Replay integration for dev e2e tests (#40955) 2022-09-29 14:45:10 -07:00
lerna.json v15.0.0-canary.25 2024-06-11 00:13:55 +00:00
license.md chore: update Copyright time from 2023 to 2024 (#60071) 2024-01-02 11:06:02 -08:00
lint-staged.config.js refactor: simplified lint-staged config (#66720) 2024-06-11 08:51:53 -07:00
package.json Update React from 1df34bdf62 to 6230622a1a (#66726) 2024-06-11 00:06:12 +00:00
pnpm-lock.yaml Update devDependecy prettier-plugin-tailwindcss (#66713) 2024-06-11 11:12:55 -07:00
pnpm-workspace.yaml Remove next-dev and its test suite and benchmarks (#55983) 2023-09-26 05:22:39 +02:00
readme.md Monorepo (#5341) 2018-10-01 01:02:10 +02:00
release.js chore: update labels in workflows/templates (#63713) 2024-04-17 14:28:51 +02:00
run-tests.js Run Pages Router test with same version as Next.js peer dependency (#66712) 2024-06-10 19:03:13 +02:00
rust-toolchain.toml Update rust toolchain to nightly-2024-05-31 (#66428) 2024-06-01 03:37:04 +00:00
socket.yaml chore(ci): add socket.yaml (#54446) 2023-08-23 18:12:51 +00:00
test-file.txt Add additional file serving tests (#12479) 2020-05-04 11:58:19 -05:00
tsconfig-tsec.json Integrate tsec into the linting process (#33746) 2022-02-24 16:59:18 -08:00
tsconfig.json Fix broken BrowserInterface type (#66461) 2024-06-03 12:56:49 +00:00
tsec-exemptions.json next/script: Correctly apply async and defer props (#52939) 2024-04-15 15:01:50 -07:00
turbo.json Revert turborepo to 1.13.3-canary.2 cont. (#64895) 2024-04-22 23:40:49 +00:00
UPGRADING.md docs: update broken link in UPGRADING.md (#60342) 2024-01-06 14:46:07 -08:00
vercel.json Silence GH Comments for Preview URLs (#18766) 2020-11-03 21:59:47 +00:00

Next.js

Getting Started

Used by some of the world's largest companies, Next.js enables you to create full-stack web applications by extending the latest React features, and integrating powerful Rust-based JavaScript tooling for the fastest builds.

Documentation

Visit https://nextjs.org/docs to view the full documentation.

Community

The Next.js community can be found on GitHub Discussions where you can ask questions, voice ideas, and share your projects with other people.

To chat with other community members you can join the Next.js Discord server.

Do note that our Code of Conduct applies to all Next.js community channels. Users are highly encouraged to read and adhere to them to avoid repercussions.

Contributing

Contributions to Next.js are welcome and highly appreciated. However, before you jump right into it, we would like you to review our Contribution Guidelines to make sure you have a smooth experience contributing to Next.js.

Good First Issues:

We have a list of good first issues that contain bugs that have a relatively limited scope. This is a great place for newcomers and beginners alike to get started, gain experience, and get familiar with our contribution process.

Authors

A list of the original co-authors of Next.js that helped bring this amazing framework to life!


Security

If you believe you have found a security vulnerability in Next.js, we encourage you to responsibly disclose this and NOT open a public issue. We will investigate all legitimate reports. Email security@vercel.com to disclose any security vulnerabilities. Alternatively, you can visit this link to know more about Vercel's security and report any security vulnerabilities.