{"id":2122,"date":"2025-06-04T21:09:09","date_gmt":"2025-06-05T04:09:09","guid":{"rendered":"https:\/\/felix-arntz.me\/?p=2122"},"modified":"2025-06-04T21:09:09","modified_gmt":"2025-06-05T04:09:09","slug":"introducing-view-transitions-wordpress-plugin","status":"publish","type":"post","link":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/","title":{"rendered":"Introducing the View Transitions Plugin for WordPress"},"content":{"rendered":"\n<p>I&#8217;m thrilled to announce a new plugin from the WordPress Core Performance Team: <a href=\"http:\/\/wordpress.org\/plugins\/view-transitions\/\" target=\"_blank\" rel=\"noreferrer noopener\">View Transitions<\/a>! This experimental plugin brings the power of the <a href=\"https:\/\/developer.chrome.com\/docs\/web-platform\/view-transitions\/cross-document\" target=\"_blank\" rel=\"noreferrer noopener\">cross-document View Transitions browser API<\/a> to your WordPress site, allowing for smoother, animated transitions between page navigations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">View Transitions?<\/h2>\n\n\n\n<p>Traditionally, moving from one page (or, technically, URL) to another on the web has always involved an abrupt, &#8220;hard&#8221; reload. While this might seem completely natural to many of us on the web, user expectations have shifted drastically in the past (almost) two decades.<\/p>\n\n\n\n<p>Native mobile applications, with their seamless in-app navigations and smooth transitions, have set a new bar for user experience. This has led web developers to try to catch up with that experience, often turning to Single Page Applications (SPAs). While SPAs aim to mimic native app navigations by dynamically updating content without full page reloads, this often comes with increased development complexity and a shift in how you structure your entire website, often at the cost of accessibility or performance.<\/p>\n\n\n\n<p>Now, with <a href=\"https:\/\/developer.chrome.com\/docs\/web-platform\/view-transitions\/cross-document\">cross-document view transitions<\/a>, you can achieve that desired user experience through smooth transitions on the web without any extensive overhaul of your website. And the new <a href=\"http:\/\/wordpress.org\/plugins\/view-transitions\/\">View Transitions<\/a> plugin makes it super simple in WordPress.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">How Do View Transitions Work in WordPress?<\/h2>\n\n\n\n<p>As soon as you have activated the plugin on your WordPress site and navigate between a few pages of your site, you&#8217;ll notice that the plugin implements a gentle fade effect for the transition, creating a more graceful and visually engaging user experience. This is the default behavior not only for the plugin, but also for the View Transitions API in the browser.<\/p>\n\n\n\n<p>If you want to see a live demo &#8211; you&#8217;re on it! The plugin is active on my site, so for example you could click on the &#8220;Blog&#8221; link in the header navigation. You should see a smooth transition if your browser supports it (see further below). Just make sure to navigate back here afterwards to continue reading. \ud83d\ude01<\/p>\n\n\n\n<p>(If you want to test it more, you could navigate to the home page by clicking on the site title, scroll down to &#8220;Latest posts&#8221;, then click on the &#8220;View post&#8221; button for this post. When using a large enough viewport, that transition should expand\/morph the small featured image from the post in the grid to the much larger featured image shown above. If the animation is too fast, try clicking the Back\/Forward button in your browser a few times to get a better sense of what I&#8217;m referring to.)<\/p>\n\n\n\n<p>Because the nature and style of transitions can be heavily dependent on a theme&#8217;s specific layout and design, the long-term vision is for themes to opt in and customize this behavior. This is facilitated through the WordPress theme support API, for instance by calling <code>add_theme_support( 'view-transitions' )<\/code>.<\/p>\n\n\n\n<p>For now, since this plugin&#8217;s explicit purpose is to enable and showcase view transitions, it automatically enables them across your site, regardless of the theme currently in use.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"customizing-view-transitions\">Customizing View Transitions<\/h2>\n\n\n\n<p>For this initial experimental phase, the plugin offers a user-friendly way to explore different configurations directly within the WordPress admin. You&#8217;ll find settings under <strong>Settings &gt; Reading<\/strong> that allow you to tweak the view transitions behavior. This UI is primarily for easy exploration and testing at this early stage. Should view transitions make their way into Core, customization would solely be managed through code via the theme support API. That said, even with this early plugin version, themes can already start using the theme support API.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Customizing with <code>add_theme_support()<\/code><\/h3>\n\n\n\n<p>To quickly enable view transitions with standard settings, add the following to your theme&#8217;s <code>functions.php<\/code> file (typically within the <code>after_setup_theme<\/code> action hook):<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">mytheme_setup<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n\tadd_theme_support( <span class=\"hljs-string\">'view-transitions'<\/span> );\n}\nadd_action( <span class=\"hljs-string\">'after_setup_theme'<\/span>, <span class=\"hljs-string\">'mytheme_setup'<\/span> );<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>For more control, you can pass an array of arguments to <code>add_theme_support( 'view-transitions', $args )<\/code>. Here are the available arguments:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>default-animation<\/code><\/strong>: Specifies the default animation style for transitions.<\/li>\n\n\n\n<li><strong><code>post-selector<\/code><\/strong>: CSS selector(s) to identify individual post containers, crucial for applying post-specific transitions from archive\/listing pages.<\/li>\n\n\n\n<li><strong><code>global-transition-names<\/code><\/strong>: A map (associative array) defining CSS selectors for global elements (like headers or sidebars) and their view transition names that should have persistent <code>view-transition-name<\/code> values across the entire site.<\/li>\n\n\n\n<li><strong><code>post-transition-names<\/code><\/strong>: A map (associative array) defining CSS selectors for elements <em>within<\/em> post containers (like titles or featured images) and their view transition names that should animate during transitions to\/from single views.<\/li>\n<\/ul>\n\n\n\n<p>To provide additional context on what the view transition names are for: Whenever an element has the same view transition name assigned between two URLs that the user navigates between, it will gently morph as part of the transition, maintaining a clear association. For example, a post title in a grid of posts in an archive might scale up in size and move to the top of the page when navigating to its single post URL.<\/p>\n\n\n\n<p>For the <code>default-animation<\/code>, a few animations are available by default. Additionally, the plugin provides an API to register additional animations, each of which encompasses a unique identifier, some configuration values, a CSS stylesheet, and optional aliases. I&#8217;m not going to cover this here for now since it&#8217;s a more advanced integration, but ideally in the long term there could be plugins or themes that register their own view transition animations that themes could use. For now, a few basic animations are available out of the box, mostly as an example of what can be done. The initial supported identifiers (and their aliases) are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>fade<\/code><\/li>\n\n\n\n<li><code>slide<\/code>\n<ul class=\"wp-block-list\">\n<li><code>slide-from-right<\/code><\/li>\n\n\n\n<li><code>slide-from-bottom<\/code><\/li>\n\n\n\n<li><code>slide-from-left<\/code><\/li>\n\n\n\n<li><code>slide-from-top<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>swipe<\/code>\n<ul class=\"wp-block-list\">\n<li><code>swipe-from-right<\/code><\/li>\n\n\n\n<li><code>swipe-from-bottom<\/code><\/li>\n\n\n\n<li><code>swipe-from-left<\/code><\/li>\n\n\n\n<li><code>swipe-from-top<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>wipe<\/code>\n<ul class=\"wp-block-list\">\n<li><code>wipe-from-right<\/code><\/li>\n\n\n\n<li><code>wipe-from-bottom<\/code><\/li>\n\n\n\n<li><code>wipe-from-left<\/code><\/li>\n\n\n\n<li><code>wipe-from-top<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>You can customize any or all of the supported arguments by passing an array to <code>add_theme_support()<\/code>. Here\u2019s an example modifying all available options:<\/p>\n\n\n<pre class=\"wp-block-code alignwide\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">mytheme_custom_view_transitions_setup<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n\tadd_theme_support( <span class=\"hljs-string\">'view-transitions'<\/span>, <span class=\"hljs-keyword\">array<\/span>(\n\t\t<span class=\"hljs-string\">'default-animation'<\/span>       =&gt; <span class=\"hljs-string\">'wipe-from-right'<\/span>,\n\t\t<span class=\"hljs-string\">'post-selector'<\/span>           =&gt; <span class=\"hljs-string\">'.wp-block-post.post, article.post, article.entry'<\/span>,\n\t\t<span class=\"hljs-string\">'global-transition-names'<\/span> =&gt; <span class=\"hljs-keyword\">array<\/span>(\n\t\t\t<span class=\"hljs-string\">'.site-branding'<\/span> =&gt; <span class=\"hljs-string\">'logo'<\/span>,\n\t\t\t<span class=\"hljs-string\">'.site-header'<\/span>   =&gt; <span class=\"hljs-string\">'header'<\/span>,\n        \t),\n        \t<span class=\"hljs-string\">'post-transition-names'<\/span>   =&gt; <span class=\"hljs-keyword\">array<\/span>(\n\t\t\t<span class=\"hljs-comment\">\/\/ These are mostly just the defaults, but there's one extra entry.<\/span>\n\t\t\t<span class=\"hljs-string\">'.wp-block-post-title, .entry-title'<\/span>     =&gt; <span class=\"hljs-string\">'post-title'<\/span>,\n\t\t\t<span class=\"hljs-string\">'.wp-post-image'<\/span>                         =&gt; <span class=\"hljs-string\">'post-thumbnail'<\/span>,\n\t\t\t<span class=\"hljs-string\">'.wp-block-post-content, .entry-content'<\/span> =&gt; <span class=\"hljs-string\">'post-content'<\/span>,\n\t\t\t<span class=\"hljs-string\">'.post-meta'<\/span>                             =&gt; <span class=\"hljs-string\">'post-meta'<\/span>, <span class=\"hljs-comment\">\/\/ Additional entry.<\/span>\n\t\t),\n\t) );\n}\nadd_action( <span class=\"hljs-string\">'after_setup_theme'<\/span>, <span class=\"hljs-string\">'mytheme_custom_view_transitions_setup'<\/span> );<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>As you can see in this example, which also indicates some of the default values, they aim to capture common patterns that work across block themes and classic themes alike. That said, block themes are likely a perfect fit for view transitions, given their more predictable nature in markup due to using exclusively blocks.<\/p>\n\n\n\n<p>The default values for all the supported arguments are based partly on WordPress-generated classes that should almost always be included in WordPress sites, and partly on very common conventions. The goal is that the defaults should work well for the majority of WordPress sites. That said, it is impossible to make it look perfect for every possible WordPress theme. That&#8217;s precisely why the theme support approach was chosen for making View Transitions available in WordPress.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Customizing via <em>Settings &gt; Reading<\/em><\/h3>\n\n\n\n<p>A limited subset of what can be customized via <code>add_theme_support<\/code> is made available via the &#8220;View Transitions&#8221; settings section under <em>Settings &gt; Reading<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings-1024x576.webp\" alt=\"Settings section of the View Transitions plugin for WordPress\" class=\"wp-image-2131\" srcset=\"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings-1024x576.webp 1024w, https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings-300x169.webp 300w, https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings-768x432.webp 768w, https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings-1536x864.webp 1536w, https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings-2048x1152.webp 2048w, https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings-150x84.webp 150w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>You can customize the default animation, and the selectors for the default view transition names for both global and post-specific elements. While this means the customization options are limited via the UI, it still allows you to play around with different configurations via UI, and likely for the majority of sites these are the most relevant parameters to customize anyways. Keep in mind that this UI is only supplemental, and it only exists for easy exploration in the plugin. The recommended way to customize is via <code>add_theme_support<\/code> in your site&#8217;s WordPress theme.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A Note on Configuration Precedence<\/h3>\n\n\n\n<p>It&#8217;s important to be mindful that, for now, any configurations you make via the Settings UI will take precedence over what is defined in your theme&#8217;s code using <code>add_theme_support()<\/code>. This is something to keep in mind as you test and explore the plugin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Browser Support<\/h2>\n\n\n\n<p>Cross-document view transitions are currently supported in a range of modern browsers, including Chrome, Edge, and Safari. For users on browsers that do not yet support this API, there should be no adverse effects; they will simply experience the traditional hard transitions between pages. You can always check the latest browser compatibility at <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/caniuse.com\/mdn-css_at-rules_view-transition\">caniuse.com<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Your Feedback is Needed!<\/h2>\n\n\n\n<p>If you&#8217;re a WordPress theme developer or maintainer, I strongly encourage you to install the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"http:\/\/wordpress.org\/plugins\/view-transitions\/\">View Transitions plugin<\/a> and give it a spin. Better yet, consider experimenting with adding support directly into your theme using <code>add_theme_support( 'view-transitions' )<\/code>.<\/p>\n\n\n\n<p>And if you&#8217;re simply curious about the feature and want to enable it on your WordPress site, I similarly encourage you to try out the plugin. The Core Performance Team would love to get your feedback.<\/p>\n\n\n\n<p>While this is a fresh first release and still experimental, like other plugins incubated within the <a href=\"https:\/\/wordpress.org\/plugins\/performance-lab\/\" target=\"_blank\" rel=\"noreferrer noopener\">Performance Lab program<\/a>, it holds the potential to one day become a part of WordPress Core.<\/p>\n\n\n\n<p>Your early feedback and real-world use cases will be absolutely instrumental in refining this feature, addressing potential issues, and shaping its future.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Join Us at WordCamp Europe 2025 Contributor Day!<\/h3>\n\n\n\n<p>I&#8217;m publishing this post in a very timely manner &#8211; today is <a href=\"https:\/\/europe.wordcamp.org\/2025\/contributor-day\/\">WordCamp Europe 2025 Contributor Day<\/a>! I&#8217;ll be at the Core Performance Team table, and a key part of our agenda will be testing, discussing, and gathering feedback on this new <a href=\"https:\/\/wordpress.org\/plugins\/view-transitions\/\">View Transitions<\/a> plugin.<\/p>\n\n\n\n<p>If you&#8217;re attending and are curious to learn more, want to get involved, or have initial thoughts to share, I would love for you to join us. Your insights will be invaluable!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Feedback and Contributions<\/h3>\n\n\n\n<p>As this plugin is in its early stages, your feedback is highly encouraged and deeply appreciated.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If you have suggestions, ideas for new features, or encounter any bugs, please <a href=\"https:\/\/github.com\/WordPress\/performance\/issues\/new\/choose\" target=\"_blank\" rel=\"noreferrer noopener\">submit them as an issue in the WordPress Core Performance Team&#8217;s GitHub repository<\/a>.<\/li>\n\n\n\n<li>If you need help with troubleshooting or have questions about the plugin, please <a href=\"https:\/\/wordpress.org\/support\/plugin\/view-transitions\/#new-topic-0\" target=\"_blank\" rel=\"noreferrer noopener\">create a new topic on our support forum<\/a>.<\/li>\n<\/ul>\n\n\n\n<p>And of course, contributions are always welcome! You can learn more about how to get involved by checking out the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/make.wordpress.org\/performance\/handbook\/get-involved\/\">Core Performance Team Handbook<\/a>.<\/p>\n\n\n\n<p>I&#8217;m really excited to see how the community uses and shapes this new feature!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m thrilled to announce a new plugin from the WordPress Core Performance Team: View Transitions! This experimental plugin brings the power of the cross-document View Transitions browser API to your WordPress site, allowing for smoother, animated transitions between page navigations. View Transitions? Traditionally, moving from one page (or, technically, URL) to another on the web [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2131,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":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":""},"categories":[72,93,97],"tags":[],"class_list":["post-2122","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-open-source","category-web-performance","category-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Introducing the View Transitions Plugin for WordPress - felix-arntz.me<\/title>\n<meta name=\"description\" content=\"Meet the new View Transitions plugin for WordPress by the Core Performance Team, which adds smooth page transition animations to your site.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing the View Transitions Plugin for WordPress - felix-arntz.me\" \/>\n<meta property=\"og:description\" content=\"Meet the new View Transitions plugin for WordPress by the Core Performance Team, which adds smooth page transition animations to your site.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/\" \/>\n<meta property=\"og:site_name\" content=\"felix-arntz.me\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-05T04:09:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1350\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Felix\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@felixarntz\" \/>\n<meta name=\"twitter:site\" content=\"@felixarntz\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Felix\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/\"},\"author\":{\"name\":\"Felix\",\"@id\":\"https:\/\/felix-arntz.me\/#\/schema\/person\/c7c3c658d2e59bbddf3e8684a6846e55\"},\"headline\":\"Introducing the View Transitions Plugin for WordPress\",\"datePublished\":\"2025-06-05T04:09:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/\"},\"wordCount\":1601,\"commentCount\":11,\"publisher\":{\"@id\":\"https:\/\/felix-arntz.me\/#\/schema\/person\/c7c3c658d2e59bbddf3e8684a6846e55\"},\"image\":{\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp\",\"articleSection\":[\"Open-Source\",\"Web Performance\",\"WordPress\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/\",\"url\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/\",\"name\":\"Introducing the View Transitions Plugin for WordPress - felix-arntz.me\",\"isPartOf\":{\"@id\":\"https:\/\/felix-arntz.me\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp\",\"datePublished\":\"2025-06-05T04:09:09+00:00\",\"description\":\"Meet the new View Transitions plugin for WordPress by the Core Performance Team, which adds smooth page transition animations to your site.\",\"breadcrumb\":{\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#primaryimage\",\"url\":\"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp\",\"contentUrl\":\"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp\",\"width\":2400,\"height\":1350,\"caption\":\"Settings section of the View Transitions plugin for WordPress\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/felix-arntz.me\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Open-Source\",\"item\":\"https:\/\/felix-arntz.me\/blog\/category\/open-source\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Introducing the View Transitions Plugin for WordPress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/felix-arntz.me\/#website\",\"url\":\"https:\/\/felix-arntz.me\/\",\"name\":\"felix-arntz.me\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/felix-arntz.me\/#\/schema\/person\/c7c3c658d2e59bbddf3e8684a6846e55\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/felix-arntz.me\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/felix-arntz.me\/#\/schema\/person\/c7c3c658d2e59bbddf3e8684a6846e55\",\"name\":\"Felix\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/felix-arntz.me\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/felix-arntz.me\/wp-content\/uploads\/2018\/09\/felix-arntz-site-icon.png\",\"contentUrl\":\"https:\/\/felix-arntz.me\/wp-content\/uploads\/2018\/09\/felix-arntz-site-icon.png\",\"width\":512,\"height\":512,\"caption\":\"Felix\"},\"logo\":{\"@id\":\"https:\/\/felix-arntz.me\/#\/schema\/person\/image\/\"},\"description\":\"Developer Programs Engineer at Google. WordPress Core Committer. Previously Yoast. Runner, musician, movie geek. Aprendiendo espa\u00f1ol. Fueled by Mountain Dew.\",\"sameAs\":[\"https:\/\/x.com\/felixarntz\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introducing the View Transitions Plugin for WordPress - felix-arntz.me","description":"Meet the new View Transitions plugin for WordPress by the Core Performance Team, which adds smooth page transition animations to your site.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/","og_locale":"en_US","og_type":"article","og_title":"Introducing the View Transitions Plugin for WordPress - felix-arntz.me","og_description":"Meet the new View Transitions plugin for WordPress by the Core Performance Team, which adds smooth page transition animations to your site.","og_url":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/","og_site_name":"felix-arntz.me","article_published_time":"2025-06-05T04:09:09+00:00","og_image":[{"width":2400,"height":1350,"url":"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp","type":"image\/jpeg"}],"author":"Felix","twitter_card":"summary_large_image","twitter_creator":"@felixarntz","twitter_site":"@felixarntz","twitter_misc":{"Written by":"Felix","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#article","isPartOf":{"@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/"},"author":{"name":"Felix","@id":"https:\/\/felix-arntz.me\/#\/schema\/person\/c7c3c658d2e59bbddf3e8684a6846e55"},"headline":"Introducing the View Transitions Plugin for WordPress","datePublished":"2025-06-05T04:09:09+00:00","mainEntityOfPage":{"@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/"},"wordCount":1601,"commentCount":11,"publisher":{"@id":"https:\/\/felix-arntz.me\/#\/schema\/person\/c7c3c658d2e59bbddf3e8684a6846e55"},"image":{"@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#primaryimage"},"thumbnailUrl":"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp","articleSection":["Open-Source","Web Performance","WordPress"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/","url":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/","name":"Introducing the View Transitions Plugin for WordPress - felix-arntz.me","isPartOf":{"@id":"https:\/\/felix-arntz.me\/#website"},"primaryImageOfPage":{"@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#primaryimage"},"image":{"@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#primaryimage"},"thumbnailUrl":"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp","datePublished":"2025-06-05T04:09:09+00:00","description":"Meet the new View Transitions plugin for WordPress by the Core Performance Team, which adds smooth page transition animations to your site.","breadcrumb":{"@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#primaryimage","url":"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp","contentUrl":"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp","width":2400,"height":1350,"caption":"Settings section of the View Transitions plugin for WordPress"},{"@type":"BreadcrumbList","@id":"https:\/\/felix-arntz.me\/blog\/introducing-view-transitions-wordpress-plugin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/felix-arntz.me\/"},{"@type":"ListItem","position":2,"name":"Open-Source","item":"https:\/\/felix-arntz.me\/blog\/category\/open-source\/"},{"@type":"ListItem","position":3,"name":"Introducing the View Transitions Plugin for WordPress"}]},{"@type":"WebSite","@id":"https:\/\/felix-arntz.me\/#website","url":"https:\/\/felix-arntz.me\/","name":"felix-arntz.me","description":"","publisher":{"@id":"https:\/\/felix-arntz.me\/#\/schema\/person\/c7c3c658d2e59bbddf3e8684a6846e55"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/felix-arntz.me\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/felix-arntz.me\/#\/schema\/person\/c7c3c658d2e59bbddf3e8684a6846e55","name":"Felix","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/felix-arntz.me\/#\/schema\/person\/image\/","url":"https:\/\/felix-arntz.me\/wp-content\/uploads\/2018\/09\/felix-arntz-site-icon.png","contentUrl":"https:\/\/felix-arntz.me\/wp-content\/uploads\/2018\/09\/felix-arntz-site-icon.png","width":512,"height":512,"caption":"Felix"},"logo":{"@id":"https:\/\/felix-arntz.me\/#\/schema\/person\/image\/"},"description":"Developer Programs Engineer at Google. WordPress Core Committer. Previously Yoast. Runner, musician, movie geek. Aprendiendo espa\u00f1ol. Fueled by Mountain Dew.","sameAs":["https:\/\/x.com\/felixarntz"]}]}},"jetpack_featured_media_url":"https:\/\/felix-arntz.me\/wp-content\/uploads\/2025\/05\/view-transitions-wordpress-settings.webp","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/posts\/2122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/comments?post=2122"}],"version-history":[{"count":3,"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/posts\/2122\/revisions"}],"predecessor-version":[{"id":2139,"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/posts\/2122\/revisions\/2139"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/media\/2131"}],"wp:attachment":[{"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/media?parent=2122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/categories?post=2122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/felix-arntz.me\/api\/wp\/v2\/tags?post=2122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}