James Anderson
62db98056c
fix(image): allow any quality 1-100 when images.qualities is unset ( #2023 )
...
* fix(image): allow any quality 1-100 when images.qualities is unset
The image optimization endpoint returned 400 for any quality other than
75 (e.g. `<Image quality={90}>`) because vinext defaulted the allowed
quality list to `[75]` whenever `images.qualities` was not configured.
Next.js only enforces a quality allowlist when `images.qualities` is set;
when unset it permits any integer quality from 1-100. This aligns vinext
with that behaviour: `parseImageParams`/`resolveDevImageRedirect` now take
an optional allowlist and only restrict quality when one is provided, and
the build/runtime plumbing emits `null` (not `[75]`) when unset so the
"allow all" semantics survive into the deploy worker.
Repro: GET /_next/image?url=%2Fshop%2Ftablet.png&w=750&q=90 -> 400.
Fixes the app-router-playground image optimization failure.
* test(image): update App Router blur-exception tests for quality parity
With `images.qualities` unset, any quality 1-100 is now permitted (Next.js
parity), so q=70 is a normal quality rather than a rejected one. Pin the
blur-quality-exception tests to `qualities: [75]` so they still exercise the
dev-only exception, and add a case asserting q=70 is allowed in production
when qualities is unset.
2026-06-15 10:43:20 +01:00
..
2026-05-22 13:03:08 +00:00
2026-06-15 00:22:00 +01:00
2026-06-15 00:22:00 +01:00
2026-04-27 07:50:39 +01:00
2026-06-14 22:28:25 +00:00
2026-06-09 11:47:31 +01:00
2026-06-14 23:31:38 +01:00
2026-05-19 18:12:42 +01:00
2026-05-27 16:17:16 +01:00
2026-06-13 22:05:31 +01:00
2026-06-02 20:25:25 +01:00
2026-06-14 23:59:28 +01:00
2026-06-11 22:24:45 +00:00
2026-06-08 19:01:29 +01:00
2026-06-07 21:55:56 +01:00
2026-06-13 22:08:02 +01:00
2026-05-05 19:39:39 +01:00
2026-06-13 21:59:39 +01:00
2026-06-14 22:28:25 +00:00
2026-05-03 17:34:06 +01:00
2026-06-05 14:38:01 +01:00
2026-06-14 23:59:28 +01:00
2026-06-14 22:28:25 +00:00
2026-05-26 11:28:33 +01:00
2026-06-14 00:44:54 +01:00
2026-06-14 22:28:25 +00:00
2026-06-13 21:59:39 +01:00
2026-06-11 23:21:52 +01:00
2026-06-02 11:50:17 +01:00
2026-04-28 20:37:49 +01:00
2026-05-31 11:39:47 +01:00
2026-06-11 23:21:52 +01:00
2026-05-28 12:42:01 +01:00
2026-06-14 22:28:25 +00:00
2026-06-12 23:18:27 +01:00
2026-06-08 19:18:21 +01:00
2026-06-14 23:59:28 +01:00
2026-05-13 10:02:02 +01:00
2026-06-14 22:28:25 +00:00
2026-06-15 00:22:00 +01:00
2026-05-03 17:34:06 +01:00
2026-06-14 00:44:54 +01:00
2026-06-08 12:16:08 +01:00
2026-06-07 00:18:42 +01:00
2026-04-10 07:49:18 +01:00
2026-05-03 17:34:06 +01:00
2026-06-13 21:59:39 +01:00
2026-05-02 19:54:25 +01:00
2026-06-12 11:44:28 +01:00
2026-06-12 11:44:28 +01:00
2026-05-04 17:04:39 +01:00
2026-06-05 14:57:20 +01:00
2026-06-11 00:54:56 +01:00
2026-06-08 19:02:38 +01:00
2026-06-07 00:18:42 +01:00
2026-06-05 15:48:54 +01:00
2026-06-14 22:28:25 +00:00
2026-06-05 15:48:54 +01:00
2026-06-05 15:48:54 +01:00
2026-06-09 10:06:14 +01:00
2026-06-08 19:01:29 +01:00
2026-06-05 15:48:54 +01:00
2026-06-05 15:48:54 +01:00
2026-06-05 15:48:54 +01:00
2026-06-15 00:22:00 +01:00
2026-06-14 20:17:05 +01:00
2026-06-05 15:48:54 +01:00
2026-06-11 00:59:18 +01:00
2026-06-11 22:59:32 +01:00
2026-06-08 19:01:29 +01:00
2026-06-13 00:10:42 +01:00
2026-06-08 19:01:29 +01:00
2026-06-05 15:48:54 +01:00
2026-06-13 00:10:42 +01:00
2026-05-15 13:41:10 +00:00
2026-05-15 13:41:10 +00:00
2026-06-15 10:43:20 +01:00
2026-05-28 18:17:06 +00:00
2026-05-22 13:55:03 +01:00
2026-06-13 21:59:39 +01:00
2026-04-29 15:23:16 +00:00
2026-06-12 11:44:28 +01:00
2026-06-13 00:56:57 +01:00
2026-05-28 16:29:22 +01:00
2026-06-03 22:42:26 +01:00
2026-04-29 14:59:14 +01:00
2026-05-29 10:05:43 +01:00
2026-06-04 16:01:43 +01:00
2026-06-13 12:06:36 +01:00
2026-06-08 19:47:57 +01:00
2026-06-12 22:55:06 +00:00
2026-05-18 14:39:17 +01:00
2026-06-07 21:58:41 +01:00
2026-06-08 19:47:57 +01:00
2026-06-05 14:57:20 +01:00
2026-06-14 22:28:25 +00:00
2026-03-28 09:01:03 +00:00
2026-05-20 14:15:28 +01:00
2026-06-04 12:09:27 +01:00
2026-06-07 00:43:53 +01:00
2026-03-15 10:50:13 +00:00
2026-05-20 13:52:11 +01:00
2026-05-26 12:12:54 +01:00
2026-05-20 10:45:51 +01:00
2026-06-11 00:59:18 +01:00
2026-05-18 10:34:18 +01:00
2026-05-22 10:46:22 +01:00
2026-05-28 17:44:59 +01:00
2026-06-14 22:28:25 +00:00
2026-06-13 00:13:22 +01:00
2026-06-09 15:19:20 +01:00
2026-04-09 09:14:13 +01:00
2026-05-18 16:59:56 +01:00
2026-05-21 10:50:28 +00:00
2026-06-03 22:46:04 +01:00
2026-06-14 00:44:54 +01:00
2026-05-28 20:06:23 +01:00
2026-06-13 00:10:42 +01:00
2026-06-05 12:49:11 +01:00
2026-05-15 09:53:02 +01:00
2026-03-16 21:24:23 -05:00
2026-06-05 12:49:11 +01:00
2026-06-01 11:06:28 +01:00
2026-05-15 13:41:10 +00:00
2026-05-26 15:00:44 +01:00
2026-05-12 14:09:58 +01:00
2026-05-20 10:29:13 +01:00
2026-05-18 11:33:14 +01:00
2026-05-08 20:36:42 +00:00
2026-06-15 00:22:00 +01:00
2026-05-15 12:01:33 +01:00
2026-05-13 10:02:02 +01:00
2026-04-26 20:46:12 +01:00
2026-06-13 00:22:22 +01:00
2026-05-27 19:56:38 +01:00
2026-06-14 23:59:28 +01:00
2026-06-12 11:44:28 +01:00
2026-05-28 14:15:40 +01:00
2026-05-02 17:47:49 +01:00
2026-05-11 07:23:14 +00:00
2026-05-11 07:23:14 +00:00
2026-05-22 13:03:08 +00:00
2026-05-22 13:13:54 +00:00
2026-06-06 00:59:36 +01:00
2026-06-12 03:14:24 +01:00
2026-06-01 12:20:19 +01:00
2026-03-29 22:09:39 +01:00
2026-06-14 23:34:22 +01:00
2026-05-15 12:39:05 +01:00
2026-06-15 00:22:00 +01:00
2026-06-15 00:22:00 +01:00
2026-05-26 10:28:22 +01:00
2026-05-11 13:21:02 +01:00
2026-06-06 23:32:22 +01:00
2026-05-26 10:28:22 +01:00
2026-06-05 13:22:30 +01:00
2026-05-06 12:54:04 -05:00
2026-05-28 18:17:06 +00:00
2026-05-27 11:13:53 +01:00
2026-04-05 09:31:57 +00:00
2026-06-05 21:50:01 +01:00
2026-05-31 20:09:20 -05:00
2026-06-10 15:35:40 +01:00
2026-05-18 14:41:38 +01:00
2026-05-14 13:49:33 +01:00
2026-06-05 14:57:20 +01:00
2026-04-20 10:49:50 +01:00
2026-06-13 00:39:58 +00:00
2026-06-13 00:15:49 +01:00
2026-06-08 19:20:42 +01:00
2026-06-14 23:59:28 +01:00
2026-04-30 19:38:32 +01:00
2026-05-19 14:11:47 +01:00
2026-05-19 14:11:47 +01:00
2026-06-05 23:27:43 +01:00
2026-06-11 00:54:56 +01:00
2026-06-01 08:47:03 +00:00
2026-06-14 23:32:10 +01:00
2026-06-14 23:32:10 +01:00
2026-06-14 23:32:10 +01:00
2026-06-14 23:32:10 +01:00
2026-06-14 23:32:10 +01:00
2026-05-20 10:29:13 +01:00
2026-05-18 12:07:44 +01:00
2026-05-18 12:25:49 +01:00
2026-06-14 23:59:28 +01:00
2026-05-12 14:08:37 +01:00
2026-03-29 22:09:39 +01:00
2026-03-15 10:50:13 +00:00
2026-03-15 10:50:13 +00:00
2026-06-07 00:42:51 +00:00
2026-06-11 23:00:00 +01:00
2026-06-09 15:07:49 +01:00
2026-06-13 01:30:08 +01:00
2026-06-09 15:35:48 +01:00
2026-06-07 21:58:41 +01:00
2026-04-29 10:37:33 +01:00
2026-06-12 22:55:06 +00:00
2026-05-27 22:24:02 +01:00
2026-06-13 22:05:31 +01:00
2026-05-29 09:55:57 +01:00
2026-06-14 19:45:38 +01:00
2026-06-13 00:57:45 +01:00
2026-05-28 20:09:27 +01:00
2026-06-01 11:14:00 +01:00
2026-06-13 00:10:42 +01:00
2026-06-11 00:39:16 +00:00
2026-05-22 15:46:38 +01:00
2026-05-26 09:33:01 +00:00
2026-06-14 20:17:05 +01:00
2026-05-30 15:33:17 -05:00
2026-05-21 15:02:18 +01:00
2026-06-14 20:17:05 +01:00
2026-06-11 00:39:16 +00:00
2026-05-28 14:05:30 +01:00
2026-06-11 00:30:13 +00:00
2026-06-15 00:22:00 +01:00
2026-06-15 00:22:00 +01:00
2026-03-17 10:49:40 +00:00
2026-06-03 23:12:43 +01:00
2026-06-15 00:22:00 +01:00
2026-05-28 15:44:13 +01:00
2026-06-13 00:13:22 +01:00
2026-06-14 00:44:54 +01:00
2026-05-21 20:36:04 +00:00
2026-06-13 22:12:34 +01:00
2026-06-14 00:44:54 +01:00
2026-06-14 00:44:54 +01:00
2026-06-15 00:22:00 +01:00
2026-06-11 22:59:32 +01:00
2026-05-06 09:28:53 +01:00
2026-05-22 10:08:08 +01:00
2026-05-26 10:19:14 +01:00
2026-05-27 19:16:34 +01:00
2026-03-16 11:00:47 -05:00
2026-06-14 19:18:25 +01:00
2026-06-08 19:21:57 +01:00
2026-05-20 10:53:25 +01:00
2026-05-02 19:57:31 +01:00
2026-06-08 19:01:29 +01:00
2026-05-15 09:51:49 +00:00
2026-06-12 11:51:43 +01:00
2026-05-27 09:41:37 +01:00
2026-06-08 21:38:10 +01:00
2026-05-26 09:06:35 +00:00
2026-06-08 19:01:29 +01:00
2026-06-03 22:42:26 +01:00
2026-05-06 10:12:28 +01:00
2026-05-20 10:29:13 +01:00
2026-06-09 15:43:20 +01:00
2026-05-22 16:12:08 +01:00
2026-05-28 21:18:17 +01:00
2026-06-11 00:29:51 +00:00
2026-06-11 00:29:51 +00:00
2026-06-14 00:44:54 +01:00
2026-05-28 20:09:27 +01:00
2026-04-03 12:03:42 +01:00
2026-05-18 11:33:14 +01:00
2026-03-15 10:50:13 +00:00
2026-04-28 19:35:10 +01:00
2026-06-15 10:43:20 +01:00
2026-05-29 11:31:20 +01:00
2026-05-16 01:02:56 +01:00
2026-06-08 19:36:19 +01:00
2026-05-18 11:09:36 +01:00
2026-05-18 12:42:18 +01:00
2026-05-21 20:36:04 +00:00
2026-04-13 10:49:28 +01:00
2026-05-27 10:55:26 +01:00
2026-05-21 20:36:04 +00:00
2026-05-26 12:07:07 +01:00
2026-06-07 22:55:26 +01:00
2026-06-03 22:55:16 +01:00
2026-05-28 21:07:58 +01:00
2026-06-06 22:55:04 +01:00
2026-05-14 19:36:21 +01:00
2026-03-29 19:51:50 +01:00
2026-06-13 01:24:34 +01:00
2026-05-20 10:45:51 +01:00
2026-05-15 11:51:50 +01:00
2026-04-08 22:33:19 -05:00
2026-06-01 11:01:28 +01:00
2026-04-03 12:47:24 +01:00
2026-06-11 12:06:39 +00:00
2026-06-12 10:37:54 +00:00