Skip to content

Client Side Media iteration for WordPress 7.1: stabilization, docs, and Core backports #76756

Description

@adamsilverstein

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.

Metadata

Metadata

Labels

[Feature] Client Side MediaMedia processing in the browser with WASM[Type] EnhancementA suggestion for improvement.[Type] IterationScoped iteration of an effort from a tracking issue or overview issue ideally for a major release.

Type

Fields

No fields configured for Task.

Projects

Status
🏗️ In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions