{"id":122727,"date":"2026-05-27T10:37:28","date_gmt":"2026-05-27T10:37:28","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=122727"},"modified":"2026-05-29T07:08:14","modified_gmt":"2026-05-29T07:08:14","slug":"react-19-upgrade-in-wordpress","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/05\/27\/react-19-upgrade-in-wordpress\/","title":{"rendered":"React 19 Upgrade in WordPress"},"content":{"rendered":"<p class=\"wp-block-paragraph\">WordPress is upgrading from <span tabindex='0' class='glossary-item-container'>React<span class='glossary-item-hidden-content'><span class='glossary-item-header'>React<\/span> <span class='glossary-item-description'>React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces.\r<a href=\"https:\/\/reactjs.org\/\">https:\/\/reactjs.org<\/a><\/span><\/span><\/span> 18 to React 19. This change will first ship in 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> (version 23.3) and is expected to land in WordPress 7.1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In June 2024, WordPress 6.6 shipped React 18.3, which added deprecation warnings to help developers prepare for this upgrade (see <a href=\"https:\/\/make.wordpress.org\/core\/2024\/06\/07\/preparation-for-react-19-upgrade\/\">Preparation for React 19 Upgrade<\/a>). Now that the <span tabindex='0' class='glossary-item-container'>migration<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Migration<\/span> <span class='glossary-item-description'>Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies.<\/span><\/span><\/span> work is complete, this post covers everything plugin and theme developers need to know.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Timeline<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Gutenberg plugin<\/strong>: React 19 will be merged into the Gutenberg <code>trunk<\/code> <span tabindex='0' class='glossary-item-container'>branch<span class='glossary-item-hidden-content'><span class='glossary-item-header'>branch<\/span> <span class='glossary-item-description'>A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a \"branch\", such as \"the 4.0 branch\".<\/span><\/span><\/span> after the 7.0 release. It will ship in a Gutenberg release shortly after, with npm packages following.<\/li>\n\n\n\n<li><strong>WordPress <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><\/strong>: The upgrade is targeted for WordPress 7.1, providing a full release cycle for testing.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">We encourage developers to begin testing as early as possible once the Gutenberg plugin release with React 19 is available.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Removed APIs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following functions have been removed from React 19 after a long deprecation period. In WordPress, these were deprecated since WordPress 6.2 (March 2023):<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>render<\/code> and <code>hydrate<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ReactDOM.render()<\/code> and <code>ReactDOM.hydrate()<\/code> have been removed. Use <code>createRoot()<\/code> and <code>hydrateRoot()<\/code> instead:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n\/\/ Before (deprecated).\nimport { render } from '@wordpress\/element';\nrender( &lt;App \/&gt;, document.getElementById( 'root' ) );\n\n\/\/ After.\nimport { createRoot } from '@wordpress\/element';\nconst root = createRoot( document.getElementById( 'root' ) );\nroot.render( &lt;App \/&gt; );\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\"><code>unmountComponentAtNode<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ReactDOM.unmountComponentAtNode()<\/code> has been removed. Use <code>root.unmount()<\/code> instead:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n\/\/ Before (deprecated).\nimport { unmountComponentAtNode } from '@wordpress\/element';\nunmountComponentAtNode( document.getElementById( 'root' ) );\n\n\/\/ After.\nroot.unmount();\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\"><code>findDOMNode<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ReactDOM.findDOMNode()<\/code> has been removed from React 19. However, <code>@wordpress\/element<\/code> continues to export a polyfill for <code>findDOMNode<\/code> to ease the transition. Note that the <code>react-dom<\/code> script itself will no longer include this function \u2014 only the <code>wp-element<\/code> script will provide it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We recommend migrating away from <code>findDOMNode<\/code> by using refs instead, as it was already discouraged in earlier versions of React.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>defaultProps<\/code> for function components<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">As noted in the <a href=\"https:\/\/make.wordpress.org\/core\/2024\/06\/07\/preparation-for-react-19-upgrade\/\">React 18.3 dev note<\/a>, <code>defaultProps<\/code> for function components is no longer supported. Use ES6 default parameters instead:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n\/\/ Before (no longer supported).\nfunction MyComponent( { size } ) {\n\treturn &lt;div style={ { width: size } } \/&gt;;\n}\nMyComponent.defaultProps = { size: 100 };\n\n\/\/ After.\nfunction MyComponent( { size = 100 } ) {\n\treturn &lt;div style={ { width: size } } \/&gt;;\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Changed behavior<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">The <code>inert<\/code> attribute is now a boolean<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <span tabindex='0' class='glossary-item-container'>HTML<span class='glossary-item-hidden-content'><span class='glossary-item-header'>HTML<\/span> <span class='glossary-item-description'>HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.<\/span><\/span><\/span> <code>inert<\/code> attribute has changed from a <code>string<\/code> type to a <code>boolean<\/code> in React 19. If your code sets <code>inert<\/code> as a string (<code>inert=\"true\"<\/code> or <code>inert=\"\"<\/code>), update it to use a boolean value:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n\/\/ Before.\n&lt;div inert=\"\" \/&gt;\n&lt;div inert=\"true\" \/&gt;\n\n\/\/ After.\n&lt;div inert \/&gt;\n&lt;div inert={ true } \/&gt;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Ref callbacks can return cleanup functions<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ref callbacks can now optionally return a cleanup function, similar to <code>useEffect<\/code>. React will call the cleanup function when the element is removed from the DOM. This is a powerful new pattern that reduces the need for separate <code>useEffect<\/code> <span tabindex='0' class='glossary-item-container'>hooks<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Hooks<\/span> <span class='glossary-item-description'>In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.<\/span><\/span><\/span> to manage DOM element lifecycle.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n\/\/ New pattern: ref callback with cleanup.\n&lt;div ref={ ( node ) =&gt; {\n\tif ( node ) {\n\t\tconst handler = () =&gt; { \/* ... *\/ };\n\t\tnode.addEventListener( 'scroll', handler );\n\t\treturn () =&gt; node.removeEventListener( 'scroll', handler );\n\t}\n} } \/&gt;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Important<\/strong>: If your existing ref callbacks return a value (e.g., returning something other than <code>undefined<\/code>), React 19 may interpret that as a cleanup function. Make sure your ref callbacks either return <code>undefined<\/code> or a valid cleanup function.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>forwardRef<\/code> is no longer needed<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In React 19, function components can accept <code>ref<\/code> as a regular prop. <code>forwardRef<\/code> still works but is considered deprecated and will be removed in a future version.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n\/\/ Before.\nconst MyInput = forwardRef( ( props, ref ) =&gt; {\n\treturn &lt;input ref={ ref } { ...props } \/&gt;;\n} );\n\n\/\/ After.\nfunction MyInput( { ref, ...props } ) {\n\treturn &lt;input ref={ ref } { ...props } \/&gt;;\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">New APIs available<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">React 19 introduces several new APIs, now available through <code>@wordpress\/element<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/react.dev\/reference\/react\/use\"><code>use<\/code><\/a> \u2014 Read a resource (Promise or Context) during render.<\/li>\n\n\n\n<li><a href=\"https:\/\/react.dev\/reference\/react\/useActionState\"><code>useActionState<\/code><\/a> \u2014 Manage state based on form action results.<\/li>\n\n\n\n<li><a href=\"https:\/\/react.dev\/reference\/react\/useOptimistic\"><code>useOptimistic<\/code><\/a> \u2014 Show optimistic <span tabindex='0' class='glossary-item-container'>UI<span class='glossary-item-hidden-content'><span class='glossary-item-header'>UI<\/span> <span class='glossary-item-description'>User interface<\/span><\/span><\/span> state while an async action is in progress.<\/li>\n\n\n\n<li><a href=\"https:\/\/react.dev\/reference\/react-dom\/hooks\/useFormStatus\"><code>useFormStatus<\/code><\/a> \u2014 Access the status of a parent form.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">From React 19.2:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/react.dev\/reference\/react\/Activity\"><code>Activity<\/code><\/a> \u2014 Hide and show parts of the UI while preserving their state and DOM.<\/li>\n\n\n\n<li><a href=\"https:\/\/react.dev\/reference\/react\/useEffectEvent\"><code>useEffectEvent<\/code><\/a> \u2014 Extract non-reactive logic from effects.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">TypeScript type changes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">React 19 includes a major update to its TypeScript types. Developers using TypeScript should be aware of the following:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ref types<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>MutableRefObject<\/code> type is deprecated. The type inference rules for <code>useRef<\/code> and <code>RefObject<\/code> have changed, especially regarding declaring values as \u201c<code>T<\/code> or <code>null<\/code>\u201c. Update your code to use the new <code>RefObject<\/code> type.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>ReactElement<\/code> props type changed from <code>any<\/code> to <code>unknown<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>ReactElement<\/code> type now types its props as <code>unknown<\/code> instead of <code>any<\/code>. This reveals previously unsound access to props that was silently allowed before. This manifests especially in <code>cloneElement<\/code> calls, where reading or setting props on a cloned element now requires the element type to explicitly support those props.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">HTML element prop conflicts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Many WordPress components extend native HTML elements, accepting all props that (for example) a <code>&lt;div&gt;<\/code> accepts plus custom props. If the HTML standard adds a new prop to <code>&lt;div&gt;<\/code> with a name that conflicts with a custom prop, TypeScript may report errors. Developers may need to resolve naming conflicts (as was the case with <code>onToggle<\/code> in this migration).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a comprehensive list of TypeScript changes, see the <a href=\"https:\/\/react.dev\/blog\/2024\/04\/25\/react-19-upgrade-guide#typescript-changes\">React 19 typechecking guide<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to test your plugin<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Install the latest Gutenberg plugin<\/strong> that includes React 19 (version TBD).<\/li>\n\n\n\n<li><strong>Enable development mode<\/strong> (<code>SCRIPT_DEBUG<\/code> set to <code>true<\/code> in <code>wp-config.php<\/code>) to get detailed warnings and errors.<\/li>\n\n\n\n<li><strong>Test all major features<\/strong> of your plugin \u2014 especially any code that uses the removed APIs (<code>render<\/code>, <code>hydrate<\/code>, <code>unmountComponentAtNode<\/code>, <code>findDOMNode<\/code>, <code>defaultProps<\/code> for function components).<\/li>\n\n\n\n<li><strong>Check the browser console<\/strong> for React warnings and errors. React 19 has improved error reporting and may surface issues that were previously silent.<\/li>\n\n\n\n<li><strong>Test <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> interactions<\/strong> if your plugin renders content inside iframes or communicates between frames, as there have been subtle behavior changes in this area.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Further reading<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/react.dev\/blog\/2024\/04\/25\/react-19-upgrade-guide\">Official React 19 upgrade guide<\/a> \u2014 Full list of breaking changes, deprecations, and new features.<\/li>\n\n\n\n<li><a href=\"https:\/\/react.dev\/blog\/2024\/12\/05\/react-19\">React 19 blog post<\/a> \u2014 Overview of what\u2019s new in React 19.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/71336\">Gutenberg tracking issue #71336<\/a> \u2014 Tracking the migration effort.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/61521\">Gutenberg PR #61521<\/a> \u2014 The main implementation PR.<\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2024\/06\/07\/preparation-for-react-19-upgrade\/\">Preparation for React 19 Upgrade (WP 6.6 dev note)<\/a> \u2014 The earlier <span tabindex='0' class='glossary-item-container'>dev note<span class='glossary-item-hidden-content'><span class='glossary-item-header'>dev note<\/span> <span class='glossary-item-description'>Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make\/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin\/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase.<\/span><\/span><\/span> from the React 18.3 upgrade.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Call for testing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We encourage all plugin and theme developers to test their code with the Gutenberg plugin as soon as the React 19 release is available. Early testing helps us identify and fix issues before the upgrade reaches WordPress Core. If you encounter bugs, please report them on the <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/new\/choose\">Gutenberg GitHub repository<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/tyxla\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>tyxla<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/mamaduka\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>Mamaduka<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/jsnajdr\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>jsnajdr<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/ellatrix\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>ellatrix<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/aduth\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>aduth<\/a>, <a href=\"https:\/\/profiles.wordpress.org\/youknowriad\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>youknowriad<\/a>, and <a href=\"https:\/\/profiles.wordpress.org\/mciampini\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>mciampini<\/a> for their contributions to this migration.<\/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%2F05%2F27%2Freact-19-upgrade-in-wordpress%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>WordPress is upgrading from ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https:\/\/reactjs.org 18 to React 19. This change will first ship in the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience [&hellip;]<\/p>\n","protected":false},"author":15859971,"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_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1175],"tags":[5885,1443,5894],"class_list":["post-122727","post","type-post","status-publish","format-standard","hentry","category-general","tag-7-1","tag-dev-notes","tag-dev-notes-7-1","mentions-aduth","mentions-ellatrix","mentions-jsnajdr","mentions-mamaduka","mentions-mciampini","mentions-tyxla","mentions-youknowriad","author-jsnajdr"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vVt","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/122727","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\/15859971"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=122727"}],"version-history":[{"count":16,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/122727\/revisions"}],"predecessor-version":[{"id":123625,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/122727\/revisions\/123625"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=122727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=122727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=122727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}