$ filed under: wordpress

open source · editorial infra

July 2026 Developer Roundup: Server-Side Media Catches Up, React 19 Enters Testing, and the Abilities API’s March Into Core

July 10, 2026 — The July developer roundup is the last full digest before WordPress 7.1 hardens: Beta 1 lands July 15, and the final release ships August 19 at WordCamp US. That timing reframes the…

Editorial illustration for: July 2026 Developer Roundup: Server-Side Media Catches Up, React 19 Enters Testing, and the Abilities API’s March Into Core

July 10, 2026 — The July developer roundup is the last full digest before WordPress 7.1 hardens: Beta 1 lands July 15, and the final release ships August 19 at WordCamp US. That timing reframes the month’s entries — most of them are a testing checklist with a deadline attached, not a preview of things to come. Three carry real weight for publishers: the media pipeline’s server-side half caught up to June’s browser-side work, the React 19 upgrade moved from “watch” to “test” with a concrete on/off switch, and the Abilities API graduated from shipped infrastructure to a merge proposal that puts read access to settings, content, and users in Core. The through-line is the same as June’s — decide now what to test on a five-day runway versus audit on a five-week one.

Key Themes

  1. Server-side media processing caught up to the browser work, with GIF-to-video companions, HEIC/HEIF acceptance, and output-format and quality fields on the REST attachment endpoint all landing in trunk.
  2. The React 19 upgrade is now testable behind an experimental flag that swaps the React runtime at load, turning a compatibility warning into an actionable audit before 7.1.
  3. A hard-deprecation wave removes the __next40pxDefaultSize prop across roughly twenty components and forces every bundled icon onto currentColor, breaking any CSS that styled icons through the fill property.
  4. The Abilities API moved from shipped infrastructure to a merge proposal adding core read abilities for settings, content, and users, with the AI Client gaining streaming and embeddings in the same cycle.
  5. Unicode email addresses merged to trunk with a call for testing, putting is_email() and sanitize_email() behavior in play for any subscription or membership stack.

Jump to: 🖼️ Server-Side Media · ⚛️ React 19 Testing · 🧩 Abilities API · ✉️ Unicode Email · 🧰 Local Tooling · 🔧 Housekeeping · 💡 Takeaways


🖼️ The Media Pipeline’s Server-Side Half

June’s roundup led with client-side media processing moving into the browser. July fills in the server side, and it landed in trunk this cycle. GIF uploads can now generate a video companion file (changeset #62623); HEIC and HEIF uploads are accepted even where the server has no image-editor support for them (#62616); and the REST attachment endpoint gained output-format, progressive-rendering, and quality fields (#62617). On the client, Gutenberg 23.4 already added offline-resilient upload queues and Ultra HDR gain-map preservation when transcoding — covered in the 23.4 recap. And the media library gets infinite scrolling back (Trac #65564), reversing a removal that dated to WordPress 5.8, with a user opt-out.

Why this matters: Media organizations run the heaviest upload workloads WordPress hosts, and these are the changes that touch them where it hurts. GIF-to-video conversion cuts payload weight on exactly the autoplay-loop content that bloats article pages; HEIC acceptance means photo desks shooting on iPhones stop hitting upload errors; and the REST quality and format fields hand programmatic control of derivative generation to any custom ingestion pipeline — the automated wire-photo and syndication flows most large publishers run outside wp-admin. The server-side and browser-side halves now compose into one pipeline. Test them together against real upload volume before 7.1, because the fallbacks between them are where the surprises hide.


⚛️ React 19 Moves From Watch to Test

The June roundup’s React 19 pause now has a concrete testing mechanism. Gutenberg 23.4 shipped an experimental gutenberg-react-19 flag (#79077) that swaps the React 18 bundles for React 19 at runtime, so a plugin’s editor code can be exercised against the new runtime without a rebuild; compatibility polyfills log console warnings (#79624) that point straight at the offending call sites. Toggle it on the Gutenberg Experiments screen and test anything shipping compiled JSX, using @wordpress/element, or reaching into editor internals. Running alongside it is a deprecation wave with a firm 7.1 date: __next40pxDefaultSize is hard-deprecated across roughly twenty components — TextControl, BoxControl, RangeControl, UnitControl, and more — where the 40px control size becomes the permanent default and the prop turns into a no-op; @wordpress/icons v15 forces all 330 icons onto fill="currentColor" (#79320), so any styling done through the CSS fill property must move to color; and the @wordpress/reusable-blocks package is on a path to no-op (#79805).

Why this matters: June bought publishers a grace period; July says the clock is running and hands over the tool to use it. The original revert happened because plugin code carried legacy React patterns into the wild — precisely the risk profile of an enterprise stack with years of custom editor extensions. The runtime-swap flag turns that abstract risk into a testable checklist: flip it on staging, read the console, fix what warns. The prop and icon changes are quieter but ship in the same release — a control that silently resizes or an icon that silently loses its color is the kind of regression a design-system team finds in production if it doesn’t find it in July.

Update (August 12, 2026): React 19 was ultimately punted beyond 7.1 — the release ships on React 18.3 — so the runtime-swap audit is now forward preparation rather than a pre-release deadline. See the August roundup.


🧩 The Abilities API’s March Into Core

The Abilities API shipped as infrastructure in WordPress 6.9; this month it became a merge proposal to put actual capabilities in Core. Three read abilities are on the table — core/read-settings (#64605), core/read-content (#64606), and core/read-users (#64657) — backed by plumbing that exposes meta over REST (#62548) and consolidates JSON Schema helpers (#62549). In the same cycle, the AI Client is gaining streaming responses and embeddings support for semantic and vector search, with the stated focus on primitives for plugin developers rather than user-facing features. A parallel “guidelines built on knowledge” proposal adds a wp_knowledge custom post type — types guideline, memory, and note — with REST routes at /wp/v2/knowledge, a structured place to store the instructions an agent reads. Both must land by Beta 1 on July 15 to make 7.1. And Playground now ships a playground_ability meta-tool over MCP (#3804), letting an agent list, inspect, and execute a site’s registered abilities through one interface.

Why this matters: This is the plumbing under the agentic and answer-engine strategies publishers are already being forced to reckon with — the same pressure behind USA Today’s CEO calling Google search “dead.” Read abilities plus embeddings are the two primitives a site needs to answer questions about its own content, whether that answer is served to an internal editorial assistant or an external AI crawler. The governance layer covered in the WordPress AI 1.0.0 recap gains teeth here: abilities are the unit that layer approves, logs, and scopes. Publishers building toward semantic search over their archives, or toward being cited rather than scraped, should read the merge proposal now — the shape of these primitives is being decided in a two-week window.


✉️ Unicode Email Reaches Trunk

An eleven-year-old ticket (#31992, opened 2015) finally merged: Unicode email addresses are in trunk with a call for testing. The change accepts UTF-8 local parts on utf8mb4 databases, handles internationalized domains via Punycode, adds a WP_Email_Address class, and ships a filter to disable it if needed. The testing focus is anything that validates, stores, or compares email through is_email() or sanitize_email().

Why this matters: Subscription and membership stacks live and die on email as the identity key — dedup, login, billing, list hygiene. A validator that silently rejected a subscriber’s non-ASCII address was losing signups; a comparison that normalized inconsistently was quietly minting duplicate accounts. Publishers with international audiences have the most to gain and the most to test — run your registration and paywall flows against the trunk behavior before it reaches a release you can’t opt out of.


🧰 Local Tooling Grows Up

Two tooling threads matured. WordPress Studio shipped 1.10 with Linux support and 1.11 with Studio Code, an agentic development tool (WordPress.com account required, free during beta). Playground’s Blueprint format got practical upgrades: installPlugin gained an activationOptions parameter (#3852) and an onError: "skip-plugin" escape hatch (#3853) so an optional install no longer fails a whole Blueprint; WXR import gained controls to preserve source URLs (#3877), skip attachments (#3878) or comments (#3880), and set a default author (#3887); and a Personal Playground can now be opened from another device over WebRTC (#3758).

Why this matters: For publisher dev teams, the WXR import controls are the quiet win — spinning up a realistic staging copy from a production export without dragging along every attachment and comment is exactly the friction that makes disposable test environments worth building. Studio Code and the agentic tooling point the same direction as the Abilities work above: the local environment is becoming a place where an agent can safely do real work.


🔧 Platform Housekeeping

The classic block stays. A June plan to hide the classic block from the inserter in 7.1 was reversed on July 7 — it will remain “for the foreseeable future,” with effort redirected toward better default experiences. Newsrooms still leaning on classic-editor content lose nothing this cycle.

The admin bar returns to the editors. Graduating from the omnibar experiment, the admin bar now shows by default in the post and site editors (#79197), the W-logo corner becomes a back button, and the Experiments screen moved under Settings — more context in the admin design-system recap.

Layout controls firm up. Flex children set to “fixed” width are now truly fixed via flex-shrink: 0 (#79073), Grid gains a “fill available space” auto-fit toggle (#79356), and Flex gains vertical-alignment controls (#79426).

Block bindings reach further. List Item blocks can now be bound (Trac #65406) and bound rich text preserves nested inner blocks instead of flattening them (#79346) — relevant to anyone driving block content from custom fields.

7.0.1 shipped. The first maintenance release landed July 9 with 13 Core and 13 Gutenberg bug fixes — a routine update to schedule.

Speculative loading gets more aggressive. The default moves from conservative to moderate where caching is detected (Trac #64066) — worth a note for anyone tuning prefetch against analytics or ad-viewability measurement.


💡 Takeaways

  1. Flip the React 19 flag on staging. The gutenberg-react-19 experiment swaps the runtime without a rebuild — turn it on, read the console warnings, and clear them before the August 19 release.
  2. Audit the deprecation wave. __next40pxDefaultSize goes no-op and every icon moves to currentColor in 7.1 — grep custom admin CSS for fill-based icon styling and fixed-40px assumptions now.
  3. Test the server-side media changes against real volume. HEIC acceptance, GIF-to-video, and the new REST quality fields change how derivatives are generated — verify your ingestion and syndication pipelines before 7.1.
  4. Read the Abilities merge proposal. Core read abilities plus AI Client embeddings are the primitives for semantic search and citation — the two-week window before Beta 1 is when their shape gets decided.
  5. Run your paywall flow against Unicode email. is_email() and sanitize_email() behavior is changing in trunk — subscription and identity stacks should test registration and login before it ships.

The full roundup is available on the WordPress Developer Blog.