Release Date: July 2026 Previous Version: 1.11.8
Version 1.12 is our Snow Leopard release — named in the spirit of Apple's famous OS X 10.6: fewer flashy new surfaces, and a lot more attention to making the platform faster, lighter, and more reliable under load.
If 1.10 and 1.11 were about new editorial tools (charts, newsletters, Workspaces, Forms, Roper), 1.12 is about the machinery underneath those tools. Publish should feel snappier. Public pages should hit the database less. Search and listings should lean on Elasticsearch instead of expensive MySQL scans. Editors keep doing the same work; the platform does that work more efficiently.
Why "Snow Leopard"?
Snow Leopard was the release that shipped refinement instead of spectacle — performance, stability, and plumbing that made everything else feel better. That is the shape of 1.12:
- Publish finishes faster — heavy side effects leave the save request
- Front-end queries move to Elasticsearch — search, feeds, and publication facets stop grinding MySQL
- Guest page renders cache smarter — common block lookups stop repeating work on every request
- Hot paths get cheaper — SEO metadata, responsive containers, and synced charts stop doing unnecessary work while pages render
You may not see a brand-new admin screen for every item below. You should notice that publishing and browsing feel more responsive, especially on busy days and content-heavy pages.
What's inside
A faster publish pipeline, ElasticPress-backed search and listings, guest render caching, SEO and block-render optimizations, Spoken Article ElevenLabs quality controls, Social Builder editorial passes, and a round of reliability fixes.
Faster publishing (async post-publish pipeline)
When you click Publish, the platform used to do a lot of follow-up work in the same request: Slack notifications, IndexNow, Search Console pings, publish-workflow watcher emails, synced-chart auto-publish, and related side effects.
In 1.12, that work moves to an async tier powered by Action Scheduler:
- The save/publish request focuses on getting the post live.
- Deferrable side effects run shortly afterward in background jobs.
- Report packages still publish chapters and auto-publish synced charts — they just enqueue that work instead of stacking it all into one long request.
- Watcher notifications still attribute the correct editor (captured when the job is enqueued).
What you should notice: publishing a post — especially a report package — should return control sooner. Slack and other notifications may arrive a moment later rather than blocking the publish click.
Front-facing queries on ElasticPress
Public discovery paths continue moving off MySQL LIKE scans and onto Elasticsearch via ElasticPress:
- REST search (
/wp/v2/posts?search=…) and search RSS feeds route through Elasticsearch, with safer caps so crawler-style searches cannot drag the database. - Publication listings and archives soft-cut over to ElasticPress facets (
ep_filter_*URLs) for years, formats, topics, and time-since filters — the same visitor experience, backed by a search index instead of FacetWP/MySQL-heavy filtering. - Post visibility (
_post_visibility) is enforced in Elasticsearch so hidden-on-index / hidden-on-search content stays out of listings and search. - Legacy FacetWP-style query params redirect to the new ElasticPress filter URLs where needed.
- If Elasticsearch is unavailable, listing pages still load; facet shells degrade safely rather than applying incomplete MySQL filters.
What you should notice: publications browse, search, and filtered archives should feel more consistent under traffic. URL shapes for some filters may change (ep_filter_*); old links should redirect.
Smarter guest-page caching
Anonymous (guest) views of common blocks now reuse object-cache lookups instead of re-running the same expensive queries on every hit:
- Story items and breadcrumb trails
- Spoken Article / audio lookups for the player trigger
- Collections, lookbook filters, report-package chapter payloads, and related assembled front-end data
Caches invalidate when the underlying content changes. Logged-in editors and previews still see draft/live state as before.
What you should notice: content-heavy posts and archive-style pages should render with less repeated database work for visitors.
Leaner render and SEO paths
Several high-traffic internals got quieter and cheaper:
- Schema / SEO metadata uses batched cache reads and more complete invalidation, so singular pages spend less time warming Memcached and stale SEO output is less likely after primary-term edits.
- Responsive containers on legacy interactives drop redundant sanitizing and expensive ID hashing — a meaningful win on pages with dozens of viewport wrappers.
- Synced charts no longer record usage during public page render; usage tracking moves onto the publish pipeline, and duplicate embeds resolve the source chart once per request.
Spoken Article — ElevenLabs draft vs production
Spoken Article gains clearer ElevenLabs controls:
- Settings for API key and draft/production models
- Explicit draft vs production audio generation, with a soft pre-publish warning when production-quality audio is still missing
- Voice metadata shown on interstitial ad cards
- TTS/voice API calls proxied through the platform so the ElevenLabs key is not exposed to the browser
Social Builder — platform editorial passes
AI-generated social copy now runs through a shared, fail-closed editorial pipeline:
- Humanizer
- Neutrality / tone editor (source-grounded)
- Number check
Message options, threads, and story text share the same abilities, so Social Builder stays aligned with platform AI standards instead of a one-off prompt constraint.
Also shipping
- Power Tables: column resize/reorder and cell color persistence; bulk append of rows is more reliable.
- Embeds: iframe embeds render through template-canvas / theme parts with consent scripts skipped on embed routes.
- Newsletter Glue Pro integrations are removed now that Email Builder is the path forward.
- Alexa flash briefings are retired from External Channels.
- Chart reliability: mobile crop/annotation fixes, floated synced charts capped to the content column on small screens, chart ID tooling carried forward from late 1.11 work.
- Report packages: chapter parent assignment and no-op sync/pipeline fan-out fixes so package publish stays predictable with the new async tier.
- Editor canvas: iframe editor readiness fixes for tables, bits, and related surfaces.
- Security / compliance hygiene: tighter form email forwarding, removal of an unauthenticated translate endpoint, FedRAMP-minded cleanup of plugin activation emails, and related hardening.
What content producers should know
Publish may finish before every side effect
Slack, IndexNow, Search Console, watcher emails, and synced-chart auto-publish can land a few seconds after the publish request returns. If a notification is briefly delayed, wait for the background job — you usually do not need to republish.
Filter URLs on publications may look different
Publication facet filters use ElasticPress query params (ep_filter_*). Bookmarks or shared links that still use old FacetWP-style parameters should redirect; if something looks off after deploy, try the publications archive again from the nav.
Spoken Article has draft and production audio
Use draft models while iterating; generate production audio before you consider the spoken article finished. The editor warns when production-quality audio is still missing.
Social AI copy is stricter by design
If generation fails closed, it is usually because an editorial pass could not complete safely (provider unavailable, authorization, or validation). Retry, or check that the source material for number/neutrality checks is available.
Newsletter Glue is gone
Email Builder is the supported newsletter stack. Legacy Newsletter Glue Pro integrations are no longer part of the platform.
Post-release WP-CLI migrations
Run these on production after 1.12 deploys. Tracked as PRC-597. Commands default to dry-run — preview first, then pass --dry-run=false to write.
1. Delete leftover Yoast wp_options (Schema SEO)
After the Yoast → prc-schema-seo migration, leftover Yoast configuration/cache rows can remain in wp_options (often autoloaded). This cleanup removes those rows. It does not touch _yoast_wpseo_* postmeta or termmeta. Options whose names contain redirect are skipped — Safe Redirect Manager owns redirects.
# Pre-flight: confirm Yoast → PRC SEO migration is complete
wp prc seo migration-status
# Preview what would be deleted (dry-run by default)
wp prc seo clean-yoast-options
# Delete the known Yoast options (wpseo, wpseo_titles, wpseo_taxonomy_meta)
wp prc seo clean-yoast-options --dry-run=false --known-only
# Optionally delete any remaining wpseo% options (still skips redirect options)
wp prc seo clean-yoast-options --dry-run=false
If migration-status still shows pending items, finish migration first (or pass --force only if you intentionally want to proceed).
Learn More
- Full changelog:
docs/release-notes/1.12/changelog.md - Compare:
origin/release/1.11...origin/release/1.12(plus trunk ElasticPress facets landing intended for this line) - Previous release notes:
docs/release-notes/1.11/1-11-announce.md