No description
Find a file
Steven a6a6117197
feat(next/image)!: remove squoosh in favor of sharp as optional dependency (#63321)
## History

Previously, we added support for `squoosh` because it was a wasm
implementation that "just worked" on all platforms when running `next
dev` for the first time. However, it was slow so we always recommended
manually installing `sharp` for production use cases running `next
build` and `next start`.

Now that [`sharp` supports
webassembly](https://sharp.pixelplumbing.com/install#webassembly), we no
longer need to maintain `squoosh`, so it can be removed. We also don't
need to make the user install sharp manually because it can be installed
under `optionalDependencies`. I left it optional in case there was some
platform that still needed to manually install the wasm variant with
`npm install --cpu=wasm32 sharp` such as codesandbox/stackblitz (I don't
believe sharp has any fallback built in yet).

Since we can guarantee `sharp`, we can also remove `get-orientation` dep
and upgrade `image-size` dep.

I also moved an [existing `sharp`
test](https://github.com/vercel/next.js/pull/56674) into its own fixture
since it was unrelated to image optimization.

## Related Issues
- Fixes https://github.com/vercel/next.js/issues/41417
- Related https://github.com/vercel/next.js/pull/54670
- Related https://github.com/vercel/next.js/issues/54708
- Related https://github.com/vercel/next.js/issues/44804
- Related https://github.com/vercel/next.js/issues/48820
- Related https://github.com/vercel/next.js/pull/61810
- Related https://github.com/vercel/next.js/pull/61696
- Related https://github.com/vercel/next.js/issues/44685
- Closes https://github.com/vercel/next.js/issues/64362

## Breaking Change

This is a breaking change because newer versions of `sharp` no longer
support `yarn@1`.

- https://github.com/lovell/sharp/issues/3750

The workaround is to install with `yarn --ignore-engines` flag.

Also note that Vercel no longer defaults to yarn when no lockfile is
found

- https://github.com/vercel/vercel/pull/11131
- https://github.com/vercel/vercel/pull/11242

Closes NEXT-2823
2024-04-25 14:01:56 -04:00
.cargo chore: remove unused rust dependencies (#62176) 2024-04-16 17:48:06 +02:00
.config Update teamname in codeowners (#57775) 2023-10-31 12:33:13 +00:00
.devcontainer re-enable next-dev-tests (#47087) 2023-03-14 16:05:19 +01:00
.github feat(next/image)!: remove squoosh in favor of sharp as optional dependency (#63321) 2024-04-25 14:01:56 -04:00
.husky Replace pre-commit with husky (#38350) 2022-07-06 11:14:16 -05:00
.vscode Enable loading source maps for Next Server and React (#64527) 2024-04-22 12:40:23 +00:00
bench Fix basic-app benchmark application (#60842) 2024-01-20 20:35:20 -06:00
contributing chore: rename 'example bug' label to 'examples' (#64775) 2024-04-19 12:39:44 +02:00
docs feat(next/image)!: remove squoosh in favor of sharp as optional dependency (#63321) 2024-04-25 14:01:56 -04:00
errors Docs: Explain why Layouts (RSCs) can't access pathname (#64785) 2024-04-25 08:44:12 +01:00
examples Docs: Explain why Layouts (RSCs) can't access pathname (#64785) 2024-04-25 08:44:12 +01:00
packages feat(next/image)!: remove squoosh in favor of sharp as optional dependency (#63321) 2024-04-25 14:01:56 -04:00
scripts feat(next/image)!: remove squoosh in favor of sharp as optional dependency (#63321) 2024-04-25 14:01:56 -04:00
test feat(next/image)!: remove squoosh in favor of sharp as optional dependency (#63321) 2024-04-25 14:01:56 -04: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 Improve top level await coverage (#64508) 2024-04-17 17:44:40 +02:00
.eslintrc.json Use new JSX transform (#56294) 2023-12-09 00:17:50 +01:00
.git-blame-ignore-revs chore(git): add .git-blame-ignore-revs (#60582) 2024-01-12 16:09:58 -05: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 Revert "feat: support import attributes" (#65001) 2024-04-24 21:02:10 +00:00
.prettierignore_staged Use local AMP validator to reduce test flakiness (#63838) 2024-03-28 20:25:35 +00: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 Sync Cargo.lock with turbo (#64989) 2024-04-24 18:22:48 +00:00
Cargo.toml feat(turbopack): Handle fragments in requests (#64232) 2024-04-23 21:10:13 +02: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 v14.3.0-canary.23 2024-04-25 10:26:21 +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 add cargo fmt to lint staged (#56430) 2023-10-04 17:46:44 +00:00
package.json feat(next/image)!: remove squoosh in favor of sharp as optional dependency (#63321) 2024-04-25 14:01:56 -04:00
pnpm-lock.yaml feat(next/image)!: remove squoosh in favor of sharp as optional dependency (#63321) 2024-04-25 14:01:56 -04: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 Fix windows CI due to node release (#64950) 2024-04-24 01:26:56 +00:00
rust-toolchain.toml chore: remove unused rust dependencies (#62176) 2024-04-16 17:48:06 +02: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.base.json Stop using baseUrl in root tsconfig (#64117) 2024-04-09 00:25:43 +02:00
tsconfig.json chore: extends from shared base tsconfig (#59776) 2023-12-19 18:52:22 +01: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.