Overall Goal
Land client side media as a rich core feature in WordPress 7.1.
Status: done. With WordPress 7.1 at Beta 1, client-side media is feature complete for the release. All originally scoped enhancements have shipped; unfinished enhancements were punted to the 7.2+ tracking issue (#80159). This issue now tracks the remaining 7.1 work through the release: stabilization bug fixes, documentation, and Core backports.
Client-side media provides a progressive enhancement to the current server-based approach to media processing and delivers more robust and consistent media processing across WordPress installs, regardless of their underlying hosting stack. If the user's browser is not capable of processing media, the editor silently falls back to existing server-side processing.
Previous tracking issue: #74333 (WordPress 7.0 iteration)
Next iteration: #80159 (WordPress 7.2 and beyond)
What shipped during the 7.0 development cycle
In 7.0, the client media feature graduated from a Gutenberg experiment to a core Gutenberg feature.
Significant groundwork was completed during the 7.0 cycle, including:
- Core client-side image compression infrastructure using WebAssembly (WASM) and wasm-vips
@wordpress/upload-media package with upload queue system
@wordpress/vips package with fully inlined wasm-vips build
@wordpress/web-worker package to offload processing in a worker thread
- SharedArrayBuffer / Cross-Origin Isolation support
- AVIF, WebP, and efficient JPEG output encoding
- Sub-size generation, EXIF metadata handling, auto-rotation, and large-image-size logic
- Graceful fallback to server-side processing for unsupported browsers or formats
- WebAssembly support detection and capability-based feature gating to avoid running on low powered devices
What shipped during the 7.1 development cycle
All of the enhancements originally scoped for 7.1 landed:
The cycle also included many performance and correctness fixes, including single-decode sub-size generation (#76753), faster thumbnail generation (#77248), high-bit-depth AVIF support (#78889, #79557), scaled-image filename and srcset fixes (#78037, #78358), a smaller inlined WASM worker bundle (#79187), a full audit of server vs. client upload hooks (#80210), and honoring image_strip_meta and image_max_bit_depth on the client upload path (#80218). Late in the cycle a round of stabilization fixes hardened the animated GIF and HEIC paths: first-frame-only sub-size generation to match core (#80268), a fix for uploads hanging on long GIFs (#80260), timeout and size guardrails on GIF to video conversion (#80379), a fix for the upload snackbar sticking on server-side uploads (#80345), and a fix for Safari double-counting a single HEIC upload (#80371). See the closed sub-issues on this issue for the complete list.
Remaining work for the 7.1 release
With Beta 1 shipped, the in-scope stabilization enhancements originally listed here have all resolved:
What remains through the release is ongoing hardening and syncing to Core:
Punted to 7.2 and beyond
At Beta 1, all unfinished enhancements were moved off the 7.1 milestone to the next iteration issue, #80159, including:
Longer-term roadmap items (audio transcoding, image editing, BlurHash placeholders, per-size format optimization, saliency-based cropping, and more) are also tracked in #80159.
Overall Goal
Land client side media as a rich core feature in WordPress 7.1.
Status: done. With WordPress 7.1 at Beta 1, client-side media is feature complete for the release. All originally scoped enhancements have shipped; unfinished enhancements were punted to the 7.2+ tracking issue (#80159). This issue now tracks the remaining 7.1 work through the release: stabilization bug fixes, documentation, and Core backports.
Client-side media provides a progressive enhancement to the current server-based approach to media processing and delivers more robust and consistent media processing across WordPress installs, regardless of their underlying hosting stack. If the user's browser is not capable of processing media, the editor silently falls back to existing server-side processing.
Previous tracking issue: #74333 (WordPress 7.0 iteration)
Next iteration: #80159 (WordPress 7.2 and beyond)
What shipped during the 7.0 development cycle
In 7.0, the client media feature graduated from a Gutenberg experiment to a core Gutenberg feature.
Significant groundwork was completed during the 7.0 cycle, including:
@wordpress/upload-mediapackage with upload queue system@wordpress/vipspackage with fully inlined wasm-vips build@wordpress/web-workerpackage to offload processing in a worker threadWhat shipped during the 7.1 development cycle
All of the enhancements originally scoped for 7.1 landed:
image_editor_output_formatfiltering moved to the upload response (Moveimage_editor_output_formatdata to the full sized image upload response #75784)The cycle also included many performance and correctness fixes, including single-decode sub-size generation (#76753), faster thumbnail generation (#77248), high-bit-depth AVIF support (#78889, #79557), scaled-image filename and srcset fixes (#78037, #78358), a smaller inlined WASM worker bundle (#79187), a full audit of server vs. client upload hooks (#80210), and honoring
image_strip_metaandimage_max_bit_depthon the client upload path (#80218). Late in the cycle a round of stabilization fixes hardened the animated GIF and HEIC paths: first-frame-only sub-size generation to match core (#80268), a fix for uploads hanging on long GIFs (#80260), timeout and size guardrails on GIF to video conversion (#80379), a fix for the upload snackbar sticking on server-side uploads (#80345), and a fix for Safari double-counting a single HEIC upload (#80371). See the closed sub-issues on this issue for the complete list.Remaining work for the 7.1 release
With Beta 1 shipped, the in-scope stabilization enhancements originally listed here have all resolved:
Upload queue: a vips worker failure leaves uploads hanging forever (worker RPC promises never settle) #79953 - a vips worker failure leaves uploads hanging forever- fixed in Worker threads: reject pending RPC calls on worker failure or termination #79955 (merged; backported towp/7.1)Some server-side image-processing hooks never fire on the client upload path #80216 - some server-side image-processing hooks never fire on the client upload path- fixed in Client Side Media: Honor image_strip_meta and image_max_bit_depth on the client upload path #80218 (merged; Core backport in REST API: Expose image_strip_meta and image_max_bit_depth in the index wordpress-develop#12508)Media: Where should EXIF rotation belong — server, client, or hybrid? #77582 - decide where EXIF rotation should be handled (server, client, or hybrid)- resolvedAdd thorough documentation for Client Side Media #75111 - thorough documentation for client side media- shipped in Docs: Add client-side media processing documentation #75895 (merged)What remains through the release is ongoing hardening and syncing to Core:
Punted to 7.2 and beyond
At Beta 1, all unfinished enhancements were moved off the 7.1 milestone to the next iteration issue, #80159, including:
Longer-term roadmap items (audio transcoding, image editing, BlurHash placeholders, per-size format optimization, saliency-based cropping, and more) are also tracked in #80159.