-
Notifications
You must be signed in to change notification settings - Fork 27.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(next/image): add support for images.qualities
in next.config
#74257
base: canary
Are you sure you want to change the base?
Conversation
Failing test suitesCommit: 3da81cc
Expand output● with dangerouslyAllowSVG config › dev support with next.config.js › should normalize invalid status codes
● with dangerouslyAllowSVG config › dev support with next.config.js › should timeout for upstream image exceeding 7 seconds
● with dangerouslyAllowSVG config › dev support with next.config.js › should handle non-ascii characters in image url
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain icns
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain pic/pct
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain animated gif
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain animated png
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain animated png 2
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain animated webp
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain vector svg
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain ico format
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain jpg format for old Safari
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain png format for old Safari
● with dangerouslyAllowSVG config › dev support with next.config.js › should downlevel webp format to jpeg for old Safari
● with dangerouslyAllowSVG config › dev support with next.config.js › should downlevel avif format to jpeg for old Safari
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize relative url and webp Firefox accept header
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize relative url and png accept header
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize relative url with invalid accept header as png
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize relative url with invalid accept header as gif
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize relative url with invalid accept header as tiff
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize gif (not animated)
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize tiff
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize avif
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize relative url and old Chrome accept header as webp
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize relative url and new Chrome accept header as avif
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize avif and maintain format
● with dangerouslyAllowSVG config › dev support with next.config.js › should compress avif smaller than webp at q=100
● with dangerouslyAllowSVG config › dev support with next.config.js › should compress avif smaller than webp at q=75
● with dangerouslyAllowSVG config › dev support with next.config.js › should compress avif smaller than webp at q=50
● with dangerouslyAllowSVG config › dev support with next.config.js › should resize absolute url from localhost
● with dangerouslyAllowSVG config › dev support with next.config.js › should automatically detect image type when content-type is octet-stream
● with dangerouslyAllowSVG config › dev support with next.config.js › should use cache and stale-while-revalidate when query is the same for external image
● with dangerouslyAllowSVG config › dev support with next.config.js › recursive url is not allowed › should pass with absolute next image url
● with dangerouslyAllowSVG config › dev support with next.config.js › should fail when internal url is not an image
● with dangerouslyAllowSVG config › dev support with next.config.js › should fail when url fails to load an image
● with dangerouslyAllowSVG config › dev support with next.config.js › should use cache and stale-while-revalidate when query is the same for internal image
● with dangerouslyAllowSVG config › dev support with next.config.js › should use cached image file when parameters are the same for svg
● with dangerouslyAllowSVG config › dev support with next.config.js › should use cached image file when parameters are the same for animated gif
● with dangerouslyAllowSVG config › dev support with next.config.js › should set 304 status without body when etag matches if-none-match
● with dangerouslyAllowSVG config › dev support with next.config.js › should maintain bmp
● with dangerouslyAllowSVG config › dev support with next.config.js › should not resize if requested width is larger than original source image
● with dangerouslyAllowSVG config › dev support with next.config.js › should error if the resource isn't a valid image
● with dangerouslyAllowSVG config › dev support with next.config.js › should error if the image file does not exist
● with dangerouslyAllowSVG config › dev support with next.config.js › should handle concurrent requests
Read more about building and testing Next.js in contributing.md.
Expand output● with minimumCacheTTL of 5 sec › dev support with next.config.js › should normalize invalid status codes
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should timeout for upstream image exceeding 7 seconds
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should handle non-ascii characters in image url
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain icns
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain pic/pct
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain animated gif
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain animated png
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain animated png 2
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain animated webp
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should not allow vector svg
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should not allow svg with application header
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should not allow svg with comma header
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should not allow svg with uppercase header
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should not allow svg with wrong header
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain ico format
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain jpg format for old Safari
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain png format for old Safari
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should downlevel webp format to jpeg for old Safari
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should downlevel avif format to jpeg for old Safari
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize relative url and webp Firefox accept header
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize relative url and png accept header
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize relative url with invalid accept header as png
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize relative url with invalid accept header as gif
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize relative url with invalid accept header as tiff
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize gif (not animated)
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize tiff
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize avif
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize relative url and old Chrome accept header as webp
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize relative url and new Chrome accept header as avif
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize avif and maintain format
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should compress avif smaller than webp at q=100
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should compress avif smaller than webp at q=75
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should compress avif smaller than webp at q=50
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should resize absolute url from localhost
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should automatically detect image type when content-type is octet-stream
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should use cache and stale-while-revalidate when query is the same for external image
● with minimumCacheTTL of 5 sec › dev support with next.config.js › recursive url is not allowed › should pass with absolute next image url
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should fail when internal url is not an image
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should fail when url fails to load an image
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should use cache and stale-while-revalidate when query is the same for internal image
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should use cached image file when parameters are the same for animated gif
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should set 304 status without body when etag matches if-none-match
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should maintain bmp
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should not resize if requested width is larger than original source image
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should error if the resource isn't a valid image
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should error if the image file does not exist
● with minimumCacheTTL of 5 sec › dev support with next.config.js › should handle concurrent requests
Read more about building and testing Next.js in contributing.md.
Expand output● Image Component basePath + trailingSlash Tests › development mode › should correctly load image src from import
● Image Component basePath + trailingSlash Tests › development mode › should correctly load image src from import
● Image Component basePath + trailingSlash Tests › development mode › should correctly load image src from string
● Image Component basePath + trailingSlash Tests › development mode › should correctly load image src from string
Read more about building and testing Next.js in contributing.md.
Expand output● with contentDispositionType inline › dev support with next.config.js › should normalize invalid status codes
● with contentDispositionType inline › dev support with next.config.js › should timeout for upstream image exceeding 7 seconds
● with contentDispositionType inline › dev support with next.config.js › should handle non-ascii characters in image url
● with contentDispositionType inline › dev support with next.config.js › should maintain icns
● with contentDispositionType inline › dev support with next.config.js › should maintain pic/pct
● with contentDispositionType inline › dev support with next.config.js › should maintain animated gif
● with contentDispositionType inline › dev support with next.config.js › should maintain animated png
● with contentDispositionType inline › dev support with next.config.js › should maintain animated png 2
● with contentDispositionType inline › dev support with next.config.js › should maintain animated webp
● with contentDispositionType inline › dev support with next.config.js › should not allow vector svg
● with contentDispositionType inline › dev support with next.config.js › should not allow svg with application header
● with contentDispositionType inline › dev support with next.config.js › should not allow svg with comma header
● with contentDispositionType inline › dev support with next.config.js › should not allow svg with uppercase header
● with contentDispositionType inline › dev support with next.config.js › should not allow svg with wrong header
● with contentDispositionType inline › dev support with next.config.js › should maintain ico format
● with contentDispositionType inline › dev support with next.config.js › should maintain jpg format for old Safari
● with contentDispositionType inline › dev support with next.config.js › should maintain png format for old Safari
● with contentDispositionType inline › dev support with next.config.js › should downlevel webp format to jpeg for old Safari
● with contentDispositionType inline › dev support with next.config.js › should downlevel avif format to jpeg for old Safari
● with contentDispositionType inline › dev support with next.config.js › should resize relative url and webp Firefox accept header
● with contentDispositionType inline › dev support with next.config.js › should resize relative url and png accept header
● with contentDispositionType inline › dev support with next.config.js › should resize relative url with invalid accept header as png
● with contentDispositionType inline › dev support with next.config.js › should resize relative url with invalid accept header as gif
● with contentDispositionType inline › dev support with next.config.js › should resize relative url with invalid accept header as tiff
● with contentDispositionType inline › dev support with next.config.js › should resize gif (not animated)
● with contentDispositionType inline › dev support with next.config.js › should resize tiff
● with contentDispositionType inline › dev support with next.config.js › should resize avif
● with contentDispositionType inline › dev support with next.config.js › should resize relative url and old Chrome accept header as webp
● with contentDispositionType inline › dev support with next.config.js › should resize relative url and new Chrome accept header as avif
● with contentDispositionType inline › dev support with next.config.js › should resize avif and maintain format
● with contentDispositionType inline › dev support with next.config.js › should compress avif smaller than webp at q=100
● with contentDispositionType inline › dev support with next.config.js › should compress avif smaller than webp at q=75
● with contentDispositionType inline › dev support with next.config.js › should compress avif smaller than webp at q=50
● with contentDispositionType inline › dev support with next.config.js › should resize absolute url from localhost
● with contentDispositionType inline › dev support with next.config.js › should automatically detect image type when content-type is octet-stream
● with contentDispositionType inline › dev support with next.config.js › should use cache and stale-while-revalidate when query is the same for external image
● with contentDispositionType inline › dev support with next.config.js › recursive url is not allowed › should pass with absolute next image url
● with contentDispositionType inline › dev support with next.config.js › should fail when internal url is not an image
● with contentDispositionType inline › dev support with next.config.js › should fail when url fails to load an image
● with contentDispositionType inline › dev support with next.config.js › should use cache and stale-while-revalidate when query is the same for internal image
● with contentDispositionType inline › dev support with next.config.js › should use cached image file when parameters are the same for animated gif
● with contentDispositionType inline › dev support with next.config.js › should set 304 status without body when etag matches if-none-match
● with contentDispositionType inline › dev support with next.config.js › should maintain bmp
● with contentDispositionType inline › dev support with next.config.js › should not resize if requested width is larger than original source image
● with contentDispositionType inline › dev support with next.config.js › should error if the resource isn't a valid image
● with contentDispositionType inline › dev support with next.config.js › should error if the image file does not exist
● with contentDispositionType inline › dev support with next.config.js › should handle concurrent requests
Read more about building and testing Next.js in contributing.md.
Expand output● Static Image Component Tests › development mode › should load direct imported image
● Static Image Component Tests › development mode › should load staticprops imported image
Read more about building and testing Next.js in contributing.md.
Expand output● with latest sharp › dev support w/o next.config.js › should handle non-ascii characters in image url
● with latest sharp › dev support w/o next.config.js › should maintain icns
● with latest sharp › dev support w/o next.config.js › should maintain pic/pct
● with latest sharp › dev support w/o next.config.js › should maintain animated gif
● with latest sharp › dev support w/o next.config.js › should maintain animated png
● with latest sharp › dev support w/o next.config.js › should maintain animated png 2
● with latest sharp › dev support w/o next.config.js › should maintain animated webp
● with latest sharp › dev support w/o next.config.js › should not allow vector svg
● with latest sharp › dev support w/o next.config.js › should not allow svg with application header
● with latest sharp › dev support w/o next.config.js › should not allow svg with comma header
● with latest sharp › dev support w/o next.config.js › should not allow svg with uppercase header
● with latest sharp › dev support w/o next.config.js › should not allow svg with wrong header
● with latest sharp › dev support w/o next.config.js › should maintain ico format
● with latest sharp › dev support w/o next.config.js › should maintain jpg format for old Safari
● with latest sharp › dev support w/o next.config.js › should maintain png format for old Safari
● with latest sharp › dev support w/o next.config.js › should downlevel webp format to jpeg for old Safari
● with latest sharp › dev support w/o next.config.js › should downlevel avif format to jpeg for old Safari
● with latest sharp › dev support w/o next.config.js › should resize relative url and webp Firefox accept header
● with latest sharp › dev support w/o next.config.js › should resize relative url and png accept header
● with latest sharp › dev support w/o next.config.js › should resize relative url with invalid accept header as png
● with latest sharp › dev support w/o next.config.js › should resize relative url with invalid accept header as gif
● with latest sharp › dev support w/o next.config.js › should resize relative url with invalid accept header as tiff
● with latest sharp › dev support w/o next.config.js › should resize gif (not animated)
● with latest sharp › dev support w/o next.config.js › should resize tiff
● with latest sharp › dev support w/o next.config.js › should resize avif
● with latest sharp › dev support w/o next.config.js › should resize relative url and old Chrome accept header as webp
● with latest sharp › dev support w/o next.config.js › should fail when internal url is not an image
● with latest sharp › dev support w/o next.config.js › should use cache and stale-while-revalidate when query is the same for internal image
● with latest sharp › dev support w/o next.config.js › should use cached image file when parameters are the same for animated gif
● with latest sharp › dev support w/o next.config.js › should set 304 status without body when etag matches if-none-match
● with latest sharp › dev support w/o next.config.js › should maintain bmp
● with latest sharp › dev support w/o next.config.js › should not resize if requested width is larger than original source image
● with latest sharp › dev support w/o next.config.js › should error if the resource isn't a valid image
● with latest sharp › dev support w/o next.config.js › should error if the image file does not exist
● with latest sharp › dev support with next.config.js › should normalize invalid status codes
● with latest sharp › dev support with next.config.js › should timeout for upstream image exceeding 7 seconds
● with latest sharp › dev support with next.config.js › should handle non-ascii characters in image url
● with latest sharp › dev support with next.config.js › should maintain icns
● with latest sharp › dev support with next.config.js › should maintain pic/pct
● with latest sharp › dev support with next.config.js › should maintain animated gif
● with latest sharp › dev support with next.config.js › should maintain animated png
● with latest sharp › dev support with next.config.js › should maintain animated png 2
● with latest sharp › dev support with next.config.js › should maintain animated webp
● with latest sharp › dev support with next.config.js › should not allow vector svg
● with latest sharp › dev support with next.config.js › should not allow svg with application header
● with latest sharp › dev support with next.config.js › should not allow svg with comma header
● with latest sharp › dev support with next.config.js › should not allow svg with uppercase header
● with latest sharp › dev support with next.config.js › should not allow svg with wrong header
● with latest sharp › dev support with next.config.js › should maintain ico format
● with latest sharp › dev support with next.config.js › should maintain jpg format for old Safari
● with latest sharp › dev support with next.config.js › should maintain png format for old Safari
● with latest sharp › dev support with next.config.js › should downlevel webp format to jpeg for old Safari
● with latest sharp › dev support with next.config.js › should downlevel avif format to jpeg for old Safari
● with latest sharp › dev support with next.config.js › should resize relative url and webp Firefox accept header
● with latest sharp › dev support with next.config.js › should resize relative url and png accept header
● with latest sharp › dev support with next.config.js › should resize relative url with invalid accept header as png
● with latest sharp › dev support with next.config.js › should resize relative url with invalid accept header as gif
● with latest sharp › dev support with next.config.js › should resize relative url with invalid accept header as tiff
● with latest sharp › dev support with next.config.js › should resize gif (not animated)
● with latest sharp › dev support with next.config.js › should resize tiff
● with latest sharp › dev support with next.config.js › should resize avif
● with latest sharp › dev support with next.config.js › should resize relative url and old Chrome accept header as webp
● with latest sharp › dev support with next.config.js › should resize relative url and new Chrome accept header as avif
● with latest sharp › dev support with next.config.js › should resize avif and maintain format
● with latest sharp › dev support with next.config.js › should compress avif smaller than webp at q=100
● with latest sharp › dev support with next.config.js › should compress avif smaller than webp at q=75
● with latest sharp › dev support with next.config.js › should compress avif smaller than webp at q=50
● with latest sharp › dev support with next.config.js › should resize absolute url from localhost
● with latest sharp › dev support with next.config.js › should automatically detect image type when content-type is octet-stream
● with latest sharp › dev support with next.config.js › should use cache and stale-while-revalidate when query is the same for external image
● with latest sharp › dev support with next.config.js › recursive url is not allowed › should pass with absolute next image url
● with latest sharp › dev support with next.config.js › should fail when internal url is not an image
● with latest sharp › dev support with next.config.js › should fail when url fails to load an image
● with latest sharp › dev support with next.config.js › should use cache and stale-while-revalidate when query is the same for internal image
● with latest sharp › dev support with next.config.js › should use cached image file when parameters are the same for animated gif
● with latest sharp › dev support with next.config.js › should set 304 status without body when etag matches if-none-match
● with latest sharp › dev support with next.config.js › should maintain bmp
● with latest sharp › dev support with next.config.js › should not resize if requested width is larger than original source image
● with latest sharp › dev support with next.config.js › should error if the resource isn't a valid image
● with latest sharp › dev support with next.config.js › should error if the image file does not exist
● with latest sharp › dev support with next.config.js › should handle concurrent requests
Read more about building and testing Next.js in contributing.md.
Expand output● Static Image Component Tests for basePath › production mode › Should use immutable cache-control header for static import
● Static Image Component Tests for basePath › development mode › Should use immutable cache-control header for static import
Read more about building and testing Next.js in contributing.md.
Expand output● Image Component Unicode Image URL › development mode › should load static unicode image
● Image Component Unicode Image URL › development mode › should load internal unicode image
● Image Component Unicode Image URL › development mode › should load external unicode image
● Image Component Unicode Image URL › development mode › should load internal image with space
● Image Component Unicode Image URL › development mode › should load external image with space
● Image Component Unicode Image URL › production mode › should load static unicode image
● Image Component Unicode Image URL › production mode › should load internal unicode image
● Image Component Unicode Image URL › production mode › should load external unicode image
● Image Component Unicode Image URL › production mode › should load internal image with space
● Image Component Unicode Image URL › production mode › should load external image with space
Read more about building and testing Next.js in contributing.md.
Expand output● Image Component Unicode Image URL › development mode › should load static unicode image
● Image Component Unicode Image URL › development mode › should load internal unicode image
● Image Component Unicode Image URL › development mode › should load external unicode image
● Image Component Unicode Image URL › development mode › should load internal image with space
● Image Component Unicode Image URL › development mode › should load external image with space
● Image Component Unicode Image URL › production mode › should load static unicode image
● Image Component Unicode Image URL › production mode › should load internal unicode image
● Image Component Unicode Image URL › production mode › should load external unicode image
● Image Component Unicode Image URL › production mode › should load internal image with space
● Image Component Unicode Image URL › production mode › should load external image with space
Read more about building and testing Next.js in contributing.md.
Expand output● Static Image Component Tests › production mode › Should use immutable cache-control header for static import
● Static Image Component Tests › production mode › should load direct imported image
● Static Image Component Tests › production mode › should load staticprops imported image
Read more about building and testing Next.js in contributing.md.
Expand output● Image localPatterns config › production mode › should load matching images
Read more about building and testing Next.js in contributing.md.
Expand output● Image Loader Config › development mode - component › should work with loaderFile config, leaving default image optimization enabled
● Image Loader Config › production mode - component › should work with loaderFile config, leaving default image optimization enabled
● Image Loader Config › development mode - getImageProps › should work with loaderFile config, leaving default image optimization enabled
● Image Loader Config › production mode - getImageProps › should work with loaderFile config, leaving default image optimization enabled
Read more about building and testing Next.js in contributing.md.
Expand output● app dir - next-image › image content › should render images on / route
● app dir - next-image › image content › should render images on /client route
● app dir - next-image › image content › should render images nested under page dir on /nested route
● app dir - next-image › image content › should render legacy images under /legacy route
● app dir - next-image › image content › should render legacy images in edge runtime on /legacy-edge-runtime route
Read more about building and testing Next.js in contributing.md.
Expand output● next-image-proxy › loads images without any errors
● next-image-proxy › should work with connection upgrade by removing it via filterReqHeaders()
Read more about building and testing Next.js in contributing.md.
Expand output● Image Component basePath Tests › development mode › should load the images
● Image Component basePath Tests › development mode › should correctly ignore prose styles
Read more about building and testing Next.js in contributing.md.
Expand output● Production Usage › With Security Related Issues › should not execute script embedded inside svg image, even if dangerouslyAllowSVG=true
Read more about building and testing Next.js in contributing.md.
Expand output● clientTraceMetadata › app router › should inject propagation data for a dynamically server-side-rendered page
● clientTraceMetadata › app router › hard loading a dynamic page twice should yield different dynamic trace data
● clientTraceMetadata › app router › should only insert the client trace metadata once
● clientTraceMetadata › app router › next dev only › should inject propagation data for a statically server-side-rendered page
● clientTraceMetadata › app router › next dev only › soft navigating to a dynamic page should not transform previous propagation data
● clientTraceMetadata › app router › next dev only › soft navigating to a static page should not transform previous propagation data
● clientTraceMetadata › pages router › should inject propagation data for a dynamically server-side-rendered page
● clientTraceMetadata › pages router › hard loading a dynamic page twice should yield different dynamic trace data
● clientTraceMetadata › pages router › next dev only › should inject propagation data for a statically server-side-rendered page
● clientTraceMetadata › pages router › next dev only › soft navigating to a dynamic page should not transform previous propagation data
● clientTraceMetadata › pages router › next dev only › soft navigating to a static page should not transform previous propagation data
Read more about building and testing Next.js in contributing.md. |
Stats from current PRDefault BuildGeneral Overall increase
|
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
buildDuration | 18.6s | 15.9s | N/A |
buildDurationCached | 15s | 12.4s | N/A |
nodeModulesSize | 416 MB | 416 MB | |
nextStartRea..uration (ms) | 465ms | 479ms | N/A |
Client Bundles (main, webpack)
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
1187-HASH.js gzip | 52.4 kB | 52.4 kB | N/A |
8276.HASH.js gzip | 169 B | 168 B | N/A |
8377-HASH.js gzip | 5.36 kB | 5.39 kB | N/A |
bccd1874-HASH.js gzip | 52.8 kB | 52.8 kB | N/A |
framework-HASH.js gzip | 57.5 kB | 57.5 kB | N/A |
main-app-HASH.js gzip | 232 B | 235 B | N/A |
main-HASH.js gzip | 34.1 kB | 34.1 kB | N/A |
webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 39.4 kB | 39.4 kB | ✓ |
Overall change | 39.4 kB | 39.4 kB | ✓ |
Client Pages
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
_app-HASH.js gzip | 193 B | 193 B | ✓ |
_error-HASH.js gzip | 193 B | 193 B | ✓ |
amp-HASH.js gzip | 512 B | 510 B | N/A |
css-HASH.js gzip | 343 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.84 kB | ✓ |
edge-ssr-HASH.js gzip | 265 B | 265 B | ✓ |
head-HASH.js gzip | 363 B | 362 B | N/A |
hooks-HASH.js gzip | 393 B | 392 B | N/A |
image-HASH.js gzip | 4.49 kB | 4.51 kB | N/A |
index-HASH.js gzip | 268 B | 268 B | ✓ |
link-HASH.js gzip | 2.35 kB | 2.34 kB | N/A |
routerDirect..HASH.js gzip | 328 B | 328 B | ✓ |
script-HASH.js gzip | 397 B | 397 B | ✓ |
withRouter-HASH.js gzip | 323 B | 326 B | N/A |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 3.59 kB | 3.59 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
_buildManifest.js gzip | 749 B | 745 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
index.html gzip | 523 B | 524 B | N/A |
link.html gzip | 538 B | 538 B | ✓ |
withRouter.html gzip | 519 B | 521 B | N/A |
Overall change | 538 B | 538 B | ✓ |
Edge SSR bundle Size
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
edge-ssr.js gzip | 128 kB | 128 kB | N/A |
page.js gzip | 206 kB | 206 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Middleware size
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 668 B | 666 B | N/A |
middleware-r..fest.js gzip | 155 B | 156 B | N/A |
middleware.js gzip | 31.2 kB | 31.2 kB | N/A |
edge-runtime..pack.js gzip | 844 B | 844 B | ✓ |
Overall change | 844 B | 844 B | ✓ |
Next Runtimes
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
274-experime...dev.js gzip | 322 B | 322 B | ✓ |
274.runtime.dev.js gzip | 314 B | 314 B | ✓ |
app-page-exp...dev.js gzip | 359 kB | 359 kB | N/A |
app-page-exp..prod.js gzip | 129 kB | 129 kB | N/A |
app-page-tur..prod.js gzip | 142 kB | 142 kB | N/A |
app-page-tur..prod.js gzip | 137 kB | 137 kB | N/A |
app-page.run...dev.js gzip | 347 kB | 347 kB | N/A |
app-page.run..prod.js gzip | 125 kB | 125 kB | N/A |
app-route-ex...dev.js gzip | 37.5 kB | 37.5 kB | ✓ |
app-route-ex..prod.js gzip | 25.5 kB | 25.5 kB | ✓ |
app-route-tu..prod.js gzip | 25.5 kB | 25.5 kB | ✓ |
app-route-tu..prod.js gzip | 25.4 kB | 25.4 kB | ✓ |
app-route.ru...dev.js gzip | 39.2 kB | 39.2 kB | ✓ |
app-route.ru..prod.js gzip | 25.4 kB | 25.4 kB | ✓ |
pages-api-tu..prod.js gzip | 9.69 kB | 9.69 kB | ✓ |
pages-api.ru...dev.js gzip | 11.6 kB | 11.6 kB | ✓ |
pages-api.ru..prod.js gzip | 9.68 kB | 9.68 kB | ✓ |
pages-turbo...prod.js gzip | 21.7 kB | 21.7 kB | N/A |
pages.runtim...dev.js gzip | 27.5 kB | 27.5 kB | N/A |
pages.runtim..prod.js gzip | 21.7 kB | 21.7 kB | N/A |
server.runti..prod.js gzip | 916 kB | 916 kB | ✓ |
Overall change | 1.13 MB | 1.13 MB | ✓ |
build cache
vercel/next.js canary | vercel/next.js styfle/add-qualities | Change | |
---|---|---|---|
0.pack gzip | 2.08 MB | 2.08 MB | N/A |
index.pack gzip | 73.9 kB | 73.8 kB | N/A |
Overall change | 0 B | 0 B | ✓ |
Diff details
Diff for edge-ssr.js
Diff too large to display
Diff for image-HASH.js
@@ -1,7 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2983],
{
- /***/ 3705: /***/ (
+ /***/ 8255: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -9,7 +9,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/image",
function () {
- return __webpack_require__(8448);
+ return __webpack_require__(8926);
},
]);
if (false) {
@@ -18,7 +18,7 @@
/***/
},
- /***/ 7342: /***/ (module, exports, __webpack_require__) => {
+ /***/ 4369: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
__webpack_require__(6049)
);
const _head = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(7196)
+ __webpack_require__(956)
);
- const _getimgprops = __webpack_require__(2661);
- const _imageconfig = __webpack_require__(72);
- const _imageconfigcontextsharedruntime = __webpack_require__(6386);
- const _warnonce = __webpack_require__(4496);
- const _routercontextsharedruntime = __webpack_require__(6443);
+ const _getimgprops = __webpack_require__(485);
+ const _imageconfig = __webpack_require__(4664);
+ const _imageconfigcontextsharedruntime = __webpack_require__(1250);
+ const _warnonce = __webpack_require__(1648);
+ const _routercontextsharedruntime = __webpack_require__(907);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(3433)
+ __webpack_require__(6489)
);
- const _usemergedref = __webpack_require__(1942);
+ const _usemergedref = __webpack_require__(5942);
// This is replaced by webpack define plugin
const configEnv = {
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
/***/
},
- /***/ 1942: /***/ (module, exports, __webpack_require__) => {
+ /***/ 5942: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -432,7 +432,7 @@
/***/
},
- /***/ 2661: /***/ (
+ /***/ 485: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -448,9 +448,9 @@
return getImgProps;
},
});
- const _warnonce = __webpack_require__(4496);
- const _imageblursvg = __webpack_require__(4796);
- const _imageconfig = __webpack_require__(72);
+ const _warnonce = __webpack_require__(1648);
+ const _imageblursvg = __webpack_require__(4812);
+ const _imageconfig = __webpack_require__(4664);
const VALID_LOADING_VALUES =
/* unused pure expression or super */ null && [
"lazy",
@@ -852,7 +852,7 @@
/***/
},
- /***/ 4796: /***/ (__unused_webpack_module, exports) => {
+ /***/ 4812: /***/ (__unused_webpack_module, exports) => {
"use strict";
/**
* A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -907,7 +907,7 @@
/***/
},
- /***/ 1969: /***/ (
+ /***/ 8273: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -934,10 +934,10 @@
},
});
const _interop_require_default = __webpack_require__(173);
- const _getimgprops = __webpack_require__(2661);
- const _imagecomponent = __webpack_require__(7342);
+ const _getimgprops = __webpack_require__(485);
+ const _imagecomponent = __webpack_require__(4369);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(3433)
+ __webpack_require__(6489)
);
function getImageProps(imgProps) {
const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -969,7 +969,7 @@
/***/
},
- /***/ 3433: /***/ (__unused_webpack_module, exports) => {
+ /***/ 6489: /***/ (__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -983,6 +983,7 @@
});
function defaultLoader(param) {
let { config, src, width, quality } = param;
+ var _config_qualities;
if (false) {
}
return (
@@ -992,7 +993,11 @@
"&w=" +
width +
"&q=" +
- (quality || 75) +
+ (quality ||
+ ((_config_qualities = config.qualities) == null
+ ? void 0
+ : _config_qualities.at(-1)) ||
+ 75) + // TODO: is it safe to use .at()?
(src.startsWith("/_next/static/media/") && false ? 0 : "")
);
}
@@ -1004,7 +1009,7 @@
/***/
},
- /***/ 8448: /***/ (
+ /***/ 8926: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -1021,8 +1026,8 @@
// EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
var jsx_runtime = __webpack_require__(5105);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
- var next_image = __webpack_require__(8140);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
+ var next_image = __webpack_require__(5434);
var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
/* harmony default export */ const nextjs = {
src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1052,12 +1057,12 @@
/***/
},
- /***/ 8140: /***/ (
+ /***/ 5434: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(1969);
+ module.exports = __webpack_require__(8273);
/***/
},
@@ -1067,7 +1072,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(3705)
+ __webpack_exec__(8255)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 8377-HASH.js
@@ -1,8 +1,8 @@
"use strict";
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
- [8377],
+ [2727],
{
- /***/ 8377: /***/ (module, exports, __webpack_require__) => {
+ /***/ 2727: /***/ (module, exports, __webpack_require__) => {
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
value: true,
@@ -13,27 +13,27 @@
return Image;
},
});
- const _interop_require_default = __webpack_require__(2952);
- const _interop_require_wildcard = __webpack_require__(333);
- const _jsxruntime = __webpack_require__(3094);
+ const _interop_require_default = __webpack_require__(384);
+ const _interop_require_wildcard = __webpack_require__(4261);
+ const _jsxruntime = __webpack_require__(7048);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
- __webpack_require__(1446)
+ __webpack_require__(228)
);
const _reactdom = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(8307)
+ __webpack_require__(9221)
);
const _head = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(8050)
+ __webpack_require__(1116)
);
- const _getimgprops = __webpack_require__(3201);
- const _imageconfig = __webpack_require__(6678);
- const _imageconfigcontextsharedruntime = __webpack_require__(578);
- const _warnonce = __webpack_require__(1971);
- const _routercontextsharedruntime = __webpack_require__(7795);
+ const _getimgprops = __webpack_require__(5763);
+ const _imageconfig = __webpack_require__(6224);
+ const _imageconfigcontextsharedruntime = __webpack_require__(6720);
+ const _warnonce = __webpack_require__(894);
+ const _routercontextsharedruntime = __webpack_require__(9093);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(1315)
+ __webpack_require__(2809)
);
- const _usemergedref = __webpack_require__(592);
+ const _usemergedref = __webpack_require__(1329);
// This is replaced by webpack define plugin
const configEnv = {
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -355,7 +355,7 @@
/***/
},
- /***/ 592: /***/ (module, exports, __webpack_require__) => {
+ /***/ 1329: /***/ (module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -365,7 +365,7 @@
return useMergedRef;
},
});
- const _react = __webpack_require__(1446);
+ const _react = __webpack_require__(228);
function useMergedRef(refA, refB) {
const cleanupA = (0, _react.useRef)(() => {});
const cleanupB = (0, _react.useRef)(() => {});
@@ -414,7 +414,7 @@
/***/
},
- /***/ 5318: /***/ (
+ /***/ 272: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -428,9 +428,9 @@
return AmpStateContext;
},
});
- const _interop_require_default = __webpack_require__(2952);
+ const _interop_require_default = __webpack_require__(384);
const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(1446)
+ __webpack_require__(228)
);
const AmpStateContext = _react.default.createContext({});
if (false) {
@@ -439,7 +439,7 @@
/***/
},
- /***/ 1210: /***/ (__unused_webpack_module, exports) => {
+ /***/ 1467: /***/ (__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -461,7 +461,7 @@
/***/
},
- /***/ 3201: /***/ (
+ /***/ 5763: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -475,9 +475,9 @@
return getImgProps;
},
});
- const _warnonce = __webpack_require__(1971);
- const _imageblursvg = __webpack_require__(3482);
- const _imageconfig = __webpack_require__(6678);
+ const _warnonce = __webpack_require__(894);
+ const _imageblursvg = __webpack_require__(5868);
+ const _imageconfig = __webpack_require__(6224);
const VALID_LOADING_VALUES =
/* unused pure expression or super */ null && [
"lazy",
@@ -879,8 +879,8 @@
/***/
},
- /***/ 8050: /***/ (module, exports, __webpack_require__) => {
- /* provided dependency */ var process = __webpack_require__(6611);
+ /***/ 1116: /***/ (module, exports, __webpack_require__) => {
+ /* provided dependency */ var process = __webpack_require__(9829);
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
value: true,
@@ -901,19 +901,19 @@
return defaultHead;
},
});
- const _interop_require_default = __webpack_require__(2952);
- const _interop_require_wildcard = __webpack_require__(333);
- const _jsxruntime = __webpack_require__(3094);
+ const _interop_require_default = __webpack_require__(384);
+ const _interop_require_wildcard = __webpack_require__(4261);
+ const _jsxruntime = __webpack_require__(7048);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
- __webpack_require__(1446)
+ __webpack_require__(228)
);
const _sideeffect = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(4607)
+ __webpack_require__(4101)
);
- const _ampcontextsharedruntime = __webpack_require__(5318);
- const _headmanagercontextsharedruntime = __webpack_require__(7060);
- const _ampmode = __webpack_require__(1210);
- const _warnonce = __webpack_require__(1971);
+ const _ampcontextsharedruntime = __webpack_require__(272);
+ const _headmanagercontextsharedruntime = __webpack_require__(1790);
+ const _ampmode = __webpack_require__(1467);
+ const _warnonce = __webpack_require__(894);
function defaultHead(inAmpMode) {
if (inAmpMode === void 0) inAmpMode = false;
const head = [
@@ -1097,7 +1097,7 @@
/***/
},
- /***/ 3482: /***/ (__unused_webpack_module, exports) => {
+ /***/ 5868: /***/ (__unused_webpack_module, exports) => {
/**
* A shared function, used on both client and server, to generate a SVG blur placeholder.
*/
@@ -1151,7 +1151,7 @@
/***/
},
- /***/ 578: /***/ (
+ /***/ 6720: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -1165,11 +1165,11 @@
return ImageConfigContext;
},
});
- const _interop_require_default = __webpack_require__(2952);
+ const _interop_require_default = __webpack_require__(384);
const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(1446)
+ __webpack_require__(228)
);
- const _imageconfig = __webpack_require__(6678);
+ const _imageconfig = __webpack_require__(6224);
const ImageConfigContext = _react.default.createContext(
_imageconfig.imageConfigDefault
);
@@ -1179,7 +1179,7 @@
/***/
},
- /***/ 6678: /***/ (__unused_webpack_module, exports) => {
+ /***/ 6224: /***/ (__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -1221,13 +1221,14 @@
contentDispositionType: "attachment",
localPatterns: undefined,
remotePatterns: [],
+ qualities: undefined,
unoptimized: false,
}; //# sourceMappingURL=image-config.js.map
/***/
},
- /***/ 1315: /***/ (__unused_webpack_module, exports) => {
+ /***/ 2809: /***/ (__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -1239,6 +1240,7 @@
});
function defaultLoader(param) {
let { config, src, width, quality } = param;
+ var _config_qualities;
if (false) {
}
return (
@@ -1248,7 +1250,11 @@
"&w=" +
width +
"&q=" +
- (quality || 75) +
+ (quality ||
+ ((_config_qualities = config.qualities) == null
+ ? void 0
+ : _config_qualities.at(-1)) ||
+ 75) + // TODO: is it safe to use .at()?
(src.startsWith("/_next/static/media/") && false ? 0 : "")
);
}
@@ -1260,7 +1266,7 @@
/***/
},
- /***/ 7795: /***/ (
+ /***/ 9093: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -1274,9 +1280,9 @@
return RouterContext;
},
});
- const _interop_require_default = __webpack_require__(2952);
+ const _interop_require_default = __webpack_require__(384);
const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(1446)
+ __webpack_require__(228)
);
const RouterContext = _react.default.createContext(null);
if (false) {
@@ -1285,7 +1291,7 @@
/***/
},
- /***/ 4607: /***/ (
+ /***/ 4101: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -1299,7 +1305,7 @@
return SideEffect;
},
});
- const _react = __webpack_require__(1446);
+ const _react = __webpack_require__(228);
const isServer = typeof window === "undefined";
const useClientOnlyLayoutEffect = isServer
? () => {}
Diff for main-HASH.js
Diff too large to display
Diff for app-page-exp..ntime.dev.js
Diff too large to display
Diff for app-page-exp..time.prod.js
Diff too large to display
Diff for app-page-tur..time.prod.js
Diff too large to display
Diff for app-page-tur..time.prod.js
Diff too large to display
Diff for app-page.runtime.dev.js
Diff too large to display
Diff for app-page.runtime.prod.js
Diff too large to display
Diff for pages-turbo...time.prod.js
Diff too large to display
Diff for pages.runtime.dev.js
Diff too large to display
Diff for pages.runtime.prod.js
Diff too large to display
Work in progress...
images.qualities
vercel#12792