{"id":124614,"date":"2026-08-03T05:55:01","date_gmt":"2026-08-03T05:55:01","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=124614"},"modified":"2026-08-03T05:55:01","modified_gmt":"2026-08-03T05:55:01","slug":"iframed-editor-changes-in-wordpress-7-1","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/08\/03\/iframed-editor-changes-in-wordpress-7-1\/","title":{"rendered":"Iframed Editor Changes in WordPress 7.1"},"content":{"rendered":"<nav aria-label=\"Table of Contents\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"#overview\">Overview<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"#current-situation\">Current Situation<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"#what-s-changing-in-wordpress-7-1\">What's changing in WordPress 7.1<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"#what-should-block-developers-do\">What should block developers do?<\/a><\/li><\/ol><\/nav>\n\n\n<p class=\"wp-block-paragraph\">Previous posts on this topic:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/02\/24\/iframed-editor-changes-in-wordpress-7-0\/\">Iframed Editor Changes in WordPress 7.0 (February 2026)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2025\/11\/12\/preparing-the-post-editor-for-full-iframe-integration\/\">Preparing the Post Editor for Full iframe Integration (November 2025)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2021\/06\/29\/blocks-in-an-iframed-template-editor\/\">Blocks in an iframed (template) editor (June 2021)<\/a><\/li>\n<\/ul>\n\n\n\n<h2 id=\"overview\" class=\"wp-block-heading\">Overview<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For several releases, WordPress has been moving its editors into an <span tabindex='0' class='glossary-item-container'>iframe<span class='glossary-item-hidden-content'><span class='glossary-item-header'>iframe<\/span> <span class='glossary-item-description'>iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and\/or CSS which is loaded at the time when iframe tag is parsed by the user\u2019s browser.<\/span><\/span><\/span>, starting with the template editor back in 5.8. In WordPress 7.1, the post editor takes the final step: it is now always iframed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want the full reasoning behind the move, see <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-api-versions\/block-migration-for-iframe-editor-compatibility\/#benefits-of-the-iframe-editor\">Benefits of the iframe editor<\/a>.<\/p>\n\n\n\n<h2 id=\"current-situation\" class=\"wp-block-heading\">Current Situation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every editor except the post editor \u2014 the site editor, the template editor, and all <span tabindex='0' class='glossary-item-container'>block<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Block<\/span> <span class='glossary-item-description'>Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.<\/span><\/span><\/span> template, and device previews \u2014 has been iframed unconditionally for some time. The post editor was the exception, and until now, whether it was iframed depended on the environment: whether the <span tabindex='0' class='glossary-item-container'>Gutenberg<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Gutenberg<\/span> <span class='glossary-item-description'>The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses \u2018blocks\u2019 to add richness rather than shortcodes, custom HTML etc.\r<a href=\"https:\/\/wordpress.org\/gutenberg\/\">https:\/\/wordpress.org\/gutenberg\/<\/a><\/span><\/span><\/span> <span tabindex='0' class='glossary-item-container'>plugin<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Plugin<\/span> <span class='glossary-item-description'>A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory <a href=\"https:\/\/wordpress.org\/plugins\/\">https:\/\/wordpress.org\/plugins\/<\/a> or can be cost-based plugin from a third-party.<\/span><\/span><\/span> was active and the blocks in use.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In WordPress 7.0, the decision was based on the block <span tabindex='0' class='glossary-item-container'>API<span class='glossary-item-hidden-content'><span class='glossary-item-header'>API<\/span> <span class='glossary-item-description'>An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.<\/span><\/span><\/span> versions of the blocks actually inserted in the post. If every inserted block was API version 3 or higher, the post editor was iframed; if any lower-version block was present, the iframe was dropped to preserve compatibility.<\/li>\n\n\n\n<li>The Gutenberg plugin has been ahead of <span tabindex='0' class='glossary-item-container'>core<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Core<\/span> <span class='glossary-item-description'>Core is the set of software required to run WordPress. The Core Development Team builds WordPress.<\/span><\/span><\/span> here: since Gutenberg 22.6, when the plugin is active the post editor is forced to be iframed regardless of the theme type or the block API versions in use, so that compatibility issues surface early and can be reported before the change reaches core.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This conditional behavior kept older blocks working, but it also meant the post editor could switch between iframed and non-iframed modes depending on a post\u2019s content.<\/p>\n\n\n\n<h2 id=\"what-s-changing-in-wordpress-7-1\" class=\"wp-block-heading\">What\u2019s changing in WordPress 7.1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Starting in WordPress 7.1, the post editor is always iframed, regardless of the theme type, the block API versions of the registered blocks, or the block API versions of the blocks in the content.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Starting in WordPress 7.1, the post editor is always iframed, regardless of the theme type, the block API versions of the registered blocks, or the block API versions of the blocks in the content. The site editor, template editor, and device previews have been iframed for a long time, so much of this ground is already well tested. Even so, please test that your custom blocks \u2014 and any plugins that extend blocks \u2014 work correctly in the fully iframed post editor. See <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74042\">WordPress\/gutenberg#74042<\/a> for more details.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The site editor, template editor, and device previews have been iframed for a long time, so much of this ground is already well tested. Even so, please test that your custom blocks \u2014 and any plugins that extend blocks \u2014 work correctly in the fully iframed post editor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">See <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/74042\">WordPress\/gutenberg#74042<\/a> for more details.<\/p>\n\n\n\n<h2 id=\"what-should-block-developers-do\" class=\"wp-block-heading\">What should block developers do?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most blocks already work in the iframed editor without any changes. The issues that do come up almost always trace back to the same root cause: the iframe has its own <code>document<\/code> and <code>window<\/code>, separate from the <span tabindex='0' class='glossary-item-container'>admin<span class='glossary-item-hidden-content'><span class='glossary-item-header'>admin<\/span> <span class='glossary-item-description'>(and super admin)<\/span><\/span><\/span> page where editor scripts run. Code that reaches for the global <code>document<\/code> or <code>window<\/code> to touch the editor canvas will be looking at the wrong document.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The usual fixes are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Get the canvas document from an element inside it, via <code>ownerDocument<\/code> and its <code>defaultView<\/code>, rather than the global <code>document<\/code>\/<code>window<\/code>.<\/li>\n\n\n\n<li>Use <code>useRefEffect<\/code> to attach and clean up event listeners on canvas elements.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For the full list of things to watch for and how to resolve them, see <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-api-versions\/block-migration-for-iframe-editor-compatibility\/#technical-considerations-for-the-iframe-editor\">Technical considerations for the iframe editor<\/a>.<\/p>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><em>Props to <\/em><a href=\"https:\/\/profiles.wordpress.org\/tyxla\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>tyxla<\/a> <em>for review.<\/em><\/p>\n<p class=\"o2-appended-tags\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/7-1\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>7-1<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes-7-1\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes-7-1<\/a><\/p><nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F08%2F03%2Fiframed-editor-changes-in-wordpress-7-1%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>Previous posts on this topic: Iframed Editor Changes in WordPress 7.0 (February 2026) Preparing the Post Editor for Full iframe Integration (November 2025) Blocks in an iframed (template) editor (June 2021) Overview For several releases, WordPress has been moving its editors into an iframeiframe iFrame is an acronym for an inline frame. An iFrame is [&hellip;]<\/p>\n","protected":false},"author":15585732,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1175],"tags":[5885,1443,5894],"class_list":["post-124614","post","type-post","status-publish","format-standard","hentry","category-general","tag-7-1","tag-dev-notes","tag-dev-notes-7-1","mentions-tyxla","author-wildworks"],"revision_note":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-wpU","jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/124614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/15585732"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=124614"}],"version-history":[{"count":13,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/124614\/revisions"}],"predecessor-version":[{"id":125246,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/124614\/revisions\/125246"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=124614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=124614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=124614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}