Repository navigation
Client Side Media iteration for WordPress 7.2 and beyond #80159
Copy link
Copy link
Open
Task
8 / 258 of 25 issues completed
Copy link
Labels
[Feature] Client Side MediaMedia processing in the browser with WASMMedia processing in the browser with WASM[Type] EnhancementA suggestion for improvement.A suggestion for improvement.[Type] IterationScoped iteration of an effort from a tracking issue or overview issue ideally for a major release.Scoped iteration of an effort from a tracking issue or overview issue ideally for a major release.
Description
Top Tickets for WordPress 7.2
- Enable client-side media in the Media Library:
- Enable client-side media in the Media Library modal (in Gutenberg):
Nice to have in 7.2
- Client-side media: process image edits (crop, rotate, flip) with wasm-vips instead of the server /edit endpoint #82358
- Local poster generation during video upload #79366 - Generate the poster image locally during video upload.
- Add support for live photo / burst mode (aka HEIC/HEIF image sequence) #79642 - Convert HEIC/HEIF image sequences (Live Photos, bursts) to short video images.
- Client-side media processing: add an opt-in filter to generate animated GIF sub-sizes #80383 - Add a filter to opt-in to generating animated GIF sub-sizes.
Bug fixes/refinements for 7.2
- Media: EXIF and IPTC metadata is lost when HEIC images are converted by client-side media #82033
- External image sideload skips parts of the REST attachment creation path #82034
Goals for WordPress 7.3 or later
New Capabilities
- Optimize previously uploaded media #79364 - Optimize previously uploaded media.
- Add a before/after comparison with a quality slider when optimizing media #82036
- Video transcoding to web-safe formats #79363
Infrastructure
- Resume uploads after a crash or reload (durable upload queue) #79365 - Make the upload queue durable so it resumes where it left off after a reload.
- Improve architecture of client-side media upload finalize #82613
Image format support
- Add JPEG XL (JXL) support #76981 - Add JPEG XL support when browsers fully support it.
- Video transcoding to web-safe formats #79363 - Transcode video to web-safe formats in the browser.
What shipped during the 7.1 development cycle
The 7.1 cycle closed out most of the goals from #76756, including:
- HEIC image support with canvas fallback, so iPhone photos are transcoded in the browser before upload (Media: Add HEIC canvas fallback for client-side processing #76732)
- Ultra HDR (ISO 21496-1) gain map preservation through the resize and encode pipeline (Add UltraHDR isupport #74874)
- Upload error handling and retry logic (Add comprehensive error handling #74366)
- Upload progress tracking and progress UI snackbars (Track progress during media uploads #74362, Images: Implement upload progress UI #74363)
- Concurrent uploading of images and sub-size sideloads (Investigate concurrent uploading of images #75257)
- Performance metrics for client-side media processing (Add performance metrics for client-side media processing #76789)
- Playground compatibility fixes (Client Side Media does not work in Playground #75941)
image_editor_output_formatfiltering moved to the upload response (Moveimage_editor_output_formatdata to the full sized image upload response #75784)- Sideload REST API endpoint requirements completed (Ensure REST API endpoint for side-loaded media covers all requirements #74360)
- Crash and console error fixes during image upload processing (Investigate and fix crashes and console errors during client-side image upload processing #76706)
- e2e test coverage for client side media (Ensure complete e2e testing for client side media #74367)
- Animated GIF to video conversion (Add animated GIF to web video conversion #76942)
Future plans
Down the road, the roadmap also includes audio transcoding, image editing, BlurHash placeholders, per-size format optimization, and saliency-based cropping.
If there is something you would like to see on the client side media roadmap, please leave a comment.
History
Previous tracking issues:
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
[Feature] Client Side MediaMedia processing in the browser with WASMMedia processing in the browser with WASM[Type] EnhancementA suggestion for improvement.A suggestion for improvement.[Type] IterationScoped iteration of an effort from a tracking issue or overview issue ideally for a major release.Scoped iteration of an effort from a tracking issue or overview issue ideally for a major release.
Type
Projects
- StatusShow more project fields📋 Iteration/Tracking Issues
Activity
10 remaining items
adamsilverstein commentedon Aug 25, 2026
Thanks for the links @swissspidy - I created some additional bug and enhancement issues based on those and linked back to your repo as reference material.
gregbenz commentedon Sep 7, 2026
The planned upload and editing work looks like a strong foundation for broader HDR JPEG support. Could we define end-to-end acceptance criteria for JPEG gain-map preservation, identifying which workflows are covered in 7.2 and which need follow-up?
The main questions I have are: Does HDR processing work across Gutenberg, Media Library, media modals, and third-party editors such as Elementor? What (if any) integration will third-party editors need to implement?
Some of this already has implementation and tests underway. The goal would be to connect that work and make remaining coverage and limitations explicit, rather than assume everything must ship in 7.2. Would a dedicated HDR workflow/acceptance issue linked here be useful?
adamsilverstein commentedon Sep 30, 2026
Client Side Media Update: September 30, 2026
Claude helped me pull this together from the sub-issues and their PRs; the priorities are mine:
Summary
Client-side media processing shipped in WordPress 7.1 for the block editor, and the 7.2 cycle has been about two things: bringing the same pipeline to the rest of the admin (the Media Library grid, Media > Add New, and the editor's media modal), and hardening the package based on what real uploads turned up once 7.1 was in the wild. WordPress 7.2 Beta 1 lands October 20-22, so there are about three weeks left to get the remaining 7.2 items reviewed and merged.
The headline outside of the code is the progress on the Document-Isolation-Policy (DIP) standard. DIP is what lets WordPress enable
SharedArrayBufferfor wasm-vips without breaking third-party embeds, and it has been Chromium-only so far. Since WordPress adopted it, Mozilla's position moved to positive, and on September 26 WebKit confirmed their portability concerns are resolved, leaving venue (upstreaming into HTML and Fetch) as the only remaining objection. To help move that along, WICG/document-isolation-policy#8 asks for the upstreaming work to start, WebKit bug 325516 formally requests an implementation, and DIP has been proposed for Interop 2027. Chrome shipped DIP on desktop in 137 and on Android in 146. This is WordPress helping move the web platform forward, and it is the path to client-side media in Firefox and Safari without a separate plugin.Top priorities before Beta 1
These two are the "Top Tickets for 7.2" from the description, and both could use reviewer attention now:
media-new.php), and the September 25 comment has screencasts of every format uploading against a trunk baseline. All review threads are resolved; it needs a final look and a commit.wp.Uploaderand the dependency on the upload-media store being present. Those need answers and probably a narrower hook before it merges.Highlights since the 7.1 wrap-up
isolate-and-credentiallessthecrossorigin="anonymous"output buffer was unnecessary and actively broke media served from CDNs without CORS headers, and the buffer was also the source of a class of white-screen reports (Trac #65930, #65673). Media: Stop injecting crossorigin attributes under Document-Isolation-Policy #82614 merged September 11; the Core companion Media: Stop injecting crossorigin attributes under Document-Isolation-Policy wordpress-develop#13446 is open.ImageDecodercall with a timeout, closing HEIC upload hangs indefinitely instead of falling back to server-side processing #81043 (uploads hanging indefinitely) and Uploading an heic file with the wrong file extention doesn't fail or work properly #81707 (HEIC saved with a.jpgextension). Thanks to @singhakanshu00 for the earlier attempt in fix: Fixes HEIC uploads hanging indefinitely when ImageDecoder stalls #81211 that this superseded.media_details.sizes. Editor: Store the finalize response as the attachment record #81947 stores the finalize response as the attachment record, and the Core side (wpd #13412, r63564) prepares that response from the current post row. Both went out in 7.1.1 via Cherry-pick PRs for WP 7.1.1 #82383. Follow-up architecture notes from @andrewserong's review are captured in Improve architecture of client-side media upload finalize #82613.processItem) was split out of that review and is already merged. Thanks @swissspidy!/editendpoint, so HDR gain maps survive edits (Client-side media: process image edits (crop, rotate, flip) with wasm-vips instead of the server /edit endpoint #82358, Cropping / mirroring image strips gain maps from HDR JPG #82295). @gregbenz confirmed in Playground that crop, flip and rotate stay HDR at every size. Core companion for theparent_imagelineage: REST API: Record the source attachment of an uploaded image edit. wordpress-develop#13372 (Trac #66027).Merged Gutenberg PRs since the last update
Bug fixes and hardening
image_sizevalues.__heicUploadSupportflag.Cross-origin isolation
Animated GIF and video
media_details.animated_video(@imraan011, Video block Gif variation has no way to pause the video #81943).7.1.x backports
Core (wordpress-develop) since the last update
Committed:
image_strip_metaandimage_max_bit_depthin the index, r62806 ↔ Client Side Media: Honor image_strip_meta and image_max_bit_depth on the client upload path #80218Open, pairing with Gutenberg work:
.heifextension for genuine HEIF uploadsIn flight and needing review
Ready or close to ready for 7.2, in rough priority order:
createImageBitmap()rejects re-ran thumbnail generation forever and saturated the server with duplicate sideloads. This one affects 7.1 sites today, so it is a candidate for a 7.1.x backport once it lands. Needs a trunk merge for the changelog check and a review.VideoDecoderpath still needs an answer.wp_edited_image_metadatafiring for lineage); needs a final review.Nice to have for 7.2 if reviews line up:
Tracking for 7.3 or later:
Open issues without a PR yet: #82034 (external image sideload skips part of the REST attachment path; @sanketio reports the first four items are implemented with tests and ready to open), #82613 (finalize architecture, discussion ongoing with @andrewserong and @swissspidy), #82264 (per-session batch record for upload progress), and #79559 (HDR NCLX/CICP color metadata in AVIF output, blocked upstream in libvips).
Open questions
As always, testing and review help is appreciated, especially on wpd #12585 and #82473 before Beta 1. ?
josephfusco commentedon Oct 14, 2026
A request for the 7.3 list: measure audio waveform peaks in the browser at upload and store them in attachment metadata, so the Playlist block, the Audio block and plugins stop downloading and decoding the whole file to draw a waveform. Written up in #84712, with #83086 as the fallback for tracks without an attachment and #82035 as the likely seam.