Skip to content

Client Side Media iteration for WordPress 7.1 #76756

@adamsilverstein

Description

@adamsilverstein

Overall Goal

Land client side media as a rich core feature in WordPress 7.1. This feature was originally planned for 7.0 but was punted to allow more time for more features to land.

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)

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

Goals for WordPress 7.1

Ship client-side media as a WordPress 7.1 core feature and deliver the following enhancements:

HEIC image support

iPhones capture photos in HEIC format by default. WordPress currently cannot process these on the server without additional libraries that most hosts don't install. Client-side media unlocks the ability to decode HEIC in the browser and transcode to a web-compatible format before upload.

Ultra HDR support

Ultra HDR (ISO 21496-1) embeds a gain map alongside an SDR base image, enabling HDR rendering on capable displays while remaining backward-compatible. Client-side processing must preserve gain map data through the resize and encode pipeline so sub-sizes retain HDR quality.

Resilient uploading

Large or numerous uploads can fail due to network issues, timeouts, or server limits. Adding comprehensive error handling, retry logic, and clear progress feedback will make the upload experience significantly more robust.

Performance

Client-side processing should be comperable in speed to server-side processing. Investigating concurrent uploads and optimizing the processing pipeline will reduce total upload time, especially for batch uploads.

Bug fixes & stability

Testing & documentation

Related open PRs

7.1 or later

Capabilities that may land in 7.1 or remain on the longer-term roadmap:

  • Animated GIF to video conversion (MP4/WebM)
  • Video transcoding and compression
  • Audio transcoding
  • PDF poster image generation
  • Image editing capabilities (crop, rotate, scale)
  • BlurHash / dominant color placeholders
  • Media Library integration and bulk optimization
  • Per-size format optimization
  • Saliency detection for thumbnail cropping

Metadata

Metadata

Assignees

No one assigned

    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

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions