WordPress Is Moving Image Processing Into the Browser

Uploading a huge phone photo to WordPress has traditionally meant sending the original file to the server and asking PHP and the hosting image library to do the hard work. WordPress 7.1 changes that architecture for supported uploads: the editor can process media in the browser before the server receives the final assets. That can reduce transfer size and work around missing server codecs, but it also moves part of a familiar pipeline into a new runtime. If your plugin touches uploads, metadata, image sizes, animated GIFs, HEIC, AVIF, or remote storage, this is one of the most important 7.1 changes to test.
Why client-side processing is attractive
Modern devices create large, high-quality images that are expensive to upload and transform. Processing closer to the user can shrink the payload before it crosses the network and use capabilities available in the browser even when the host lacks a matching image codec. That is especially useful on shared hosting, where memory limits and image-library support vary widely.
The architectural win is not “the browser is always faster.” The win is distributing work more intelligently. A powerful laptop on a stable connection and an older phone under memory pressure are very different environments, so WordPress retains a fallback path that developers must keep working.
Map every hook in your upload pipeline
Draw the current lifecycle from file selection to final attachment. Note where you validate file types, rename files, scan uploads, generate custom sizes, copy originals to object storage, optimize formats, or attach external metadata. Mark whether each step expects the original byte stream, a server-generated intermediate file, or only the finished attachment.
A plugin that assumes every image arrives untouched may behave differently when browser processing has already transformed it. A storage integration may upload the wrong derivative. A metadata tool may read dimensions or color information that changed during conversion. The feature is safe only when the entire chain agrees on what “original” means.
Test the formats that break ordinary assumptions
Do not validate with one JPEG from a desktop. Use files your customers actually upload: an iPhone HEIC image, an AVIF file, a large transparent PNG, an animated GIF, a gain-mapped HDR JPEG, and images containing orientation metadata. WordPress specifically asks developers to test custom image sizes and formats that share dimensions with built-in sizes.
Animated GIF handling deserves its own test because the editor may create a looping muted video and a poster, then support conversion back to GIF. Any plugin that post-processes attachments must recognize the companion assets instead of treating them as unexplained files.
Watch memory, time, and user feedback
Moving work to the browser changes where failures appear. A server timeout may become a tab crash, a long unresponsive task, or a phone that heats up while processing. Test on a modest Android device, an older laptop, and throttled network conditions. Watch browser memory as well as upload duration.
The interface should communicate that work is happening and provide a useful retry path. If the client path fails, the server fallback must remain functional. Silent failure followed by a missing attachment is worse than the slower upload the feature is trying to replace.
Cross-origin isolation can surprise integrations
Client-side media processing can depend on browser features that interact with cross-origin isolation. External scripts, embeds, admin tools, and assets loaded from another domain may need compatible headers. A plugin can appear unrelated to media and still be affected if it injects a resource into the editor that the browser refuses under the new security context.
During testing, inspect the console for blocked-resource warnings and verify authentication flows, media pickers, analytics, support widgets, and custom editor sidebars. Do not solve a header problem by broadly weakening security; identify the incompatible resource and choose a deliberate fix.
Keep the server path healthy
WordPress provides a filter to disable client-side media processing. Test with that filter returning false so you know the server route still works. This matters for unsupported browsers, constrained devices, API uploads, automated imports, and emergency rollback. A feature flag is useful only if the alternative path receives the same attention.
Record output dimensions, MIME types, file sizes, attachment metadata, and generated sub-sizes for both paths. Differences may be acceptable, but they should be understood before customers discover them in a product gallery or downloadable asset.
Turn the feature into a controlled performance win
Measure a representative set of uploads on staging, compare browser and server paths, and document which devices and formats benefit. Then enable the feature with monitoring rather than assuming every upload becomes cheaper. The best outcome is a faster workflow with fewer host-dependent failures and no surprise for downstream plugins.
WordPress provides a detailed 7.1 developer note and testing guide for client-side media processing. Use its format checklist as a baseline, add your site-specific integrations, and rerun the suite whenever an image or storage plugin changes.
Photo by Helena Jankovičová Kováčová on Pexels.
Written by
Adrian Saycon
A developer with a passion for emerging technologies, Adrian Saycon focuses on transforming the latest tech trends into great, functional products.



