{"id":74427,"date":"2026-07-01T21:00:45","date_gmt":"2026-07-01T13:00:45","guid":{"rendered":"https:\/\/www.hongkiat.com\/blog\/?p=74427"},"modified":"2026-06-30T18:03:17","modified_gmt":"2026-06-30T10:03:17","slug":"react-aria-components-animation-guide","status":"publish","type":"post","link":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/","title":{"rendered":"How to Add Animation on React Aria Components"},"content":{"rendered":"<p><strong><a href=\"https:\/\/react-aria.adobe.com\" target=\"_blank\" rel=\"noopener noreferrer\">React Aria Components<\/a><\/strong> gives you a library of accessible, headless UI components that work across mouse, touch, and keyboard. But being headless means they ship with zero styles and zero animations by default. Your popovers just appear. Your modals snap open. No transitions, no easing, no polish.<\/p>\n<p>That\u2019s fine if you\u2019re building an internal tool. But probably less fine if you\u2019re shipping a customer-facing product where smooth motion signals quality.<\/p>\n<figure>\n    <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/react-aria-components-animation-guide\/react-aria-transitions.jpg\" alt=\"React Aria components transition animation demo\" width=\"1000\" height=\"600\">\n  <\/figure>\n<p>The good news is that React Aria provides clear paths for adding animation, and they cover everything from a simple CSS fade to physics-based animations.<\/p>\n<p>Let\u2019s take a look.<\/p>\n<h2>CSS transitions with data states<\/h2>\n<p>The simplest path requires zero JavaScript animation libraries. React Aria overlay components like <code>Popover<\/code>, <code>Modal<\/code>, <code>ModalOverlay<\/code>, <code>Tray<\/code>, and <code>Menu<\/code> expose <code>[data-entering]<\/code> and <code>[data-exiting]<\/code> states.<\/p>\n<p>These data attributes are applied automatically when the component mounts or unmounts, and the component waits for your exit animations to finish before removing itself from the DOM.<\/p>\n<pre>\r\n.react-aria-Popover {\r\n  transition: opacity 200ms, translate 200ms;\r\n}\r\n\r\n.react-aria-Popover[data-entering],\r\n.react-aria-Popover[data-exiting] {\r\n  opacity: 0;\r\n  translate: 0 -8px;\r\n}\r\n<\/pre>\n<p>With that CSS, your Popover fades in and slides down 8 pixels on open, then reverses on close. The browser handles the timing. No JavaScript animation overhead, no extra dependencies.<\/p>\n<p>This works for any component that mounts conditionally. The <code>data-exiting<\/code> attribute is especially important: without it, the component would be removed from the DOM instantly and you\u2019d never see the exit animation. React Aria handles the timing for you, keeping the element alive until the transition completes.<\/p>\n<p>Try the code below.<\/p>\n<p>  <iframe loading=\"lazy\" title=\"Preview for React Aria Popover with CSS Transitions\" src=\"https:\/\/stackblitz.com\/edit\/vitejs-vite-mwehyhhr?ctl=1&embed=1&file=src%2FApp.tsx&hideExplorer=1&view=preview\" frameborder=\"0\" width=\"100%\" height=\"500\"><\/iframe><\/p>\n<h4>Using CSS keyframes instead<\/h4>\n<p>If you prefer <code>@keyframes<\/code> over transitions, that works too.<\/p>\n<pre>\r\n.react-aria-Popover[data-entering] {\r\n  animation: popover-enter 200ms ease-out;\r\n}\r\n\r\n.react-aria-Popover[data-exiting] {\r\n  animation: popover-exit 150ms ease-in;\r\n}\r\n\r\n@keyframes popover-enter {\r\n  from {\r\n    opacity: 0;\r\n    translate: 0 -8px;\r\n  }\r\n}\r\n\r\n@keyframes popover-exit {\r\n  to {\r\n    opacity: 0;\r\n    translate: 0 -4px;\r\n  }\r\n}\r\n<\/pre>\n<p>The key difference is that keyframes let you set different easings and durations for entering versus exiting. Enter at ease-out (slowing down at the end), exit at ease-in (quick start, gradual disappearance).<\/p>\n<h4>Which components support data-entering?<\/h4>\n<p>Not every React Aria component has these states. The ones that do are the overlay components that mount conditionally:<\/p>\n<ul>\n<li><a href=\"https:\/\/react-aria.adobe.com\/Popover\" target=\"_blank\" rel=\"noopener noreferrer\">Popover<\/a><\/li>\n<li><a href=\"https:\/\/react-aria.adobe.com\/Modal\" target=\"_blank\" rel=\"noopener noreferrer\">Modal<\/a> and ModalOverlay<\/li>\n<li><a href=\"https:\/\/react-aria.adobe.com\/Menu\" target=\"_blank\" rel=\"noopener noreferrer\">Menu<\/a><\/li>\n<li><a href=\"https:\/\/react-aria.adobe.com\/Select\" target=\"_blank\" rel=\"noopener noreferrer\">Select<\/a> (the listbox portion)<\/li>\n<li><a href=\"https:\/\/react-aria.adobe.com\/ComboBox\" target=\"_blank\" rel=\"noopener noreferrer\">ComboBox<\/a> (the popover portion)<\/li>\n<li><a href=\"https:\/\/react-aria.adobe.com\/Tooltip\" target=\"_blank\" rel=\"noopener noreferrer\">Tooltip<\/a><\/li>\n<\/ul>\n<p>For non-overlay components like <code>Button<\/code>, <code>Switch<\/code>, or <code>Slider<\/code>, you\u2019d use standard CSS transitions on <code>:hover<\/code>, <code>:focus<\/code>, or the React Aria data attributes like <code>[data-pressed]<\/code> and <code>[data-selected]<\/code>. Those components stay in the DOM, so entering and exiting don\u2019t apply.<\/p>\n<h2>Using Motion<\/h2>\n<p>When you need more control over the animation, such as spring physics, gesture-driven interactions, or layout animations, CSS transitions won\u2019t cut it. That\u2019s where <a href=\"https:\/\/motion.dev\" target=\"_blank\" rel=\"noopener noreferrer\">Motion<\/a> comes in. This library is a collection of animation tools. It works with React Aria via <code>motion.create()<\/code>, which wraps any React Aria component into a motion component.<\/p>\n<p>Start by installing Motion.<\/p>\n<pre>\r\nnpm install motion\r\n<\/pre>\n<p>Then wrap your React Aria component using <code>motion.create()<\/code>.<\/p>\n<pre>\r\nimport { motion } from \"motion\/react\";\r\nimport { Modal, ModalOverlay } from \"react-aria-components\";\r\n\r\nconst MotionModal = motion.create(Modal);\r\nconst MotionModalOverlay = motion.create(ModalOverlay);\r\n<\/pre>\n<p>Now you can animate the modal overlay and the modal itself using Motion\u2019s <code>initial<\/code>, <code>animate<\/code>, and <code>exit<\/code> props.<\/p>\n<pre>\r\nimport { AnimatePresence, motion } from \"motion\/react\";\r\nimport { DialogTrigger, Button } from \"react-aria-components\";\r\nimport { Modal, ModalOverlay } from \"react-aria-components\";\r\nimport { useState } from \"react\";\r\n\r\nconst MotionModal = motion.create(Modal);\r\nconst MotionModalOverlay = motion.create(ModalOverlay);\r\n\r\nfunction AnimatedModal() {\r\n  let [isOpen, setOpen] = useState(false);\r\n\r\n  return (\r\n    &lt;&gt;\r\n      &lt;Button onPress={() =&gt; setOpen(true)}&gt;\r\n        Open modal\r\n      &lt;\/Button&gt;\r\n\r\n      &lt;AnimatePresence&gt;\r\n        {isOpen && (\r\n          &lt;MotionModalOverlay\r\n            isOpen\r\n            onOpenChange={setOpen}\r\n            className=\"fixed inset-0 z-10 bg-black\/50\"\r\n            initial={{ opacity: 0 }}\r\n            animate={{ opacity: 1 }}\r\n            exit={{ opacity: 0 }}\r\n            transition={{ duration: 0.2 }}\r\n          &gt;\r\n            &lt;MotionModal\r\n              className=\"fixed bottom-0 left-0 right-0 top-24 z-20 m-auto\r\n                         h-fit w-full max-w-lg rounded-xl bg-white p-6 shadow-lg\"\r\n              initial={{ scale: 0.9, y: 20 }}\r\n              animate={{ scale: 1, y: 0 }}\r\n              exit={{ scale: 0.9, y: 20 }}\r\n              transition={{\r\n                type: \"spring\",\r\n                bounce: 0.3,\r\n                duration: 0.4\r\n              }}\r\n            &gt;\r\n              &lt;div slot=\"title\"&gt;Modal with spring animation&lt;\/div&gt;\r\n              &lt;p&gt;This modal enters with a spring bounce and exits smoothly.&lt;\/p&gt;\r\n            &lt;\/MotionModal&gt;\r\n          &lt;\/MotionModalOverlay&gt;\r\n        )}\r\n      &lt;\/AnimatePresence&gt;\r\n    &lt;\/&gt;\r\n  );\r\n}\r\n<\/pre>\n<p>A few things worth pointing out. The <code>isOpen<\/code> prop is hard-coded to <code>true<\/code> on the MotionModalOverlay because <code>AnimatePresence<\/code> controls the mount state. The <code>onOpenChange<\/code> callback still updates your state, so closing the modal via Escape or backdrop click works normally. And the <code>exit<\/code> prop tells Motion what values to animate toward when the component unmounts, while <code>AnimatePresence<\/code> keeps it alive until that animation finishes.<\/p>\n<p>Try the code below:<\/p>\n<p>  <iframe loading=\"lazy\" title=\"Preview for React Aria with Motion\" src=\"https:\/\/stackblitz.com\/edit\/vitejs-vite-7whvqbpb?ctl=1&embed=1&file=src%2FApp.tsx&hideExplorer=1&view=preview\" frameborder=\"0\" width=\"100%\" height=\"500\"><\/iframe><\/p>\n<h2>Choosing the right approach<\/h2>\n<table>\n<thead>\n<tr>\n<th>Approach<\/th>\n<th>When to use<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>CSS transitions<\/td>\n<td>Simple fades, slides, and scale effects. No JS library needed.<\/td>\n<\/tr>\n<tr>\n<td>Motion <code>motion.create()<\/code><\/td>\n<td>Spring physics, drag gestures, layout shifts.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Start with CSS transitions and upgrade to Motion only when you need gesture support or spring physics. Most overlays just need a 200ms fade and a small translate, and that\u2019s CSS-only territory.<\/p>","protected":false},"excerpt":{"rendered":"<p>React Aria ships with no animations by default. Here&#8217;s how to add smooth transitions to Popover, Modal, and Menu using CSS or the Motion library.<\/p>\n","protected":false},"author":113,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_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":[3392],"tags":[],"topic":[],"class_list":["entry-content","is-maxi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v27.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Add Animation on React Aria Components - Hongkiat<\/title>\n<meta name=\"description\" content=\"React Aria ships with no animations by default. Here&#039;s how to add smooth transitions to Popover, Modal, and Menu using CSS or the Motion library.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Add Animation on React Aria Components\" \/>\n<meta property=\"og:description\" content=\"React Aria ships with no animations by default. Here&#039;s how to add smooth transitions to Popover, Modal, and Menu using CSS or the Motion library.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Hongkiat\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hongkiatcom\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-01T13:00:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/assets.hongkiat.com\/uploads\/react-aria-components-animation-guide\/react-aria-transitions.jpg\" \/>\n<meta name=\"author\" content=\"Thoriq Firdaus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tfirdaus\" \/>\n<meta name=\"twitter:site\" content=\"@hongkiat\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thoriq Firdaus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/\"},\"author\":{\"name\":\"Thoriq Firdaus\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\"},\"headline\":\"How to Add Animation on React Aria Components\",\"datePublished\":\"2026-07-01T13:00:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/\"},\"wordCount\":559,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/react-aria-components-animation-guide\\\/react-aria-transitions.jpg\",\"articleSection\":[\"Coding\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/\",\"name\":\"How to Add Animation on React Aria Components - Hongkiat\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/react-aria-components-animation-guide\\\/react-aria-transitions.jpg\",\"datePublished\":\"2026-07-01T13:00:45+00:00\",\"description\":\"React Aria ships with no animations by default. Here's how to add smooth transitions to Popover, Modal, and Menu using CSS or the Motion library.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/#primaryimage\",\"url\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/react-aria-components-animation-guide\\\/react-aria-transitions.jpg\",\"contentUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/react-aria-components-animation-guide\\\/react-aria-transitions.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/react-aria-components-animation-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Add Animation on React Aria Components\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"name\":\"Hongkiat\",\"description\":\"Tech and Design Tips\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\",\"name\":\"Hongkiat.com\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"contentUrl\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"width\":1200,\"height\":799,\"caption\":\"Hongkiat.com\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hongkiatcom\",\"https:\\\/\\\/x.com\\\/hongkiat\",\"https:\\\/\\\/www.pinterest.com\\\/hongkiat\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\",\"name\":\"Thoriq Firdaus\",\"description\":\"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.\",\"sameAs\":[\"https:\\\/\\\/thoriq.com\",\"https:\\\/\\\/x.com\\\/tfirdaus\"],\"jobTitle\":\"Web Developer\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/author\\\/thoriq\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Add Animation on React Aria Components - Hongkiat","description":"React Aria ships with no animations by default. Here's how to add smooth transitions to Popover, Modal, and Menu using CSS or the Motion library.","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:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/","og_locale":"en_US","og_type":"article","og_title":"How to Add Animation on React Aria Components","og_description":"React Aria ships with no animations by default. Here's how to add smooth transitions to Popover, Modal, and Menu using CSS or the Motion library.","og_url":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/","og_site_name":"Hongkiat","article_publisher":"https:\/\/www.facebook.com\/hongkiatcom","article_published_time":"2026-07-01T13:00:45+00:00","og_image":[{"url":"https:\/\/assets.hongkiat.com\/uploads\/react-aria-components-animation-guide\/react-aria-transitions.jpg","type":"","width":"","height":""}],"author":"Thoriq Firdaus","twitter_card":"summary_large_image","twitter_creator":"@tfirdaus","twitter_site":"@hongkiat","twitter_misc":{"Written by":"Thoriq Firdaus","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/#article","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/"},"author":{"name":"Thoriq Firdaus","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807"},"headline":"How to Add Animation on React Aria Components","datePublished":"2026-07-01T13:00:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/"},"wordCount":559,"publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/react-aria-components-animation-guide\/react-aria-transitions.jpg","articleSection":["Coding"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/","url":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/","name":"How to Add Animation on React Aria Components - Hongkiat","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/react-aria-components-animation-guide\/react-aria-transitions.jpg","datePublished":"2026-07-01T13:00:45+00:00","description":"React Aria ships with no animations by default. Here's how to add smooth transitions to Popover, Modal, and Menu using CSS or the Motion library.","breadcrumb":{"@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/#primaryimage","url":"https:\/\/assets.hongkiat.com\/uploads\/react-aria-components-animation-guide\/react-aria-transitions.jpg","contentUrl":"https:\/\/assets.hongkiat.com\/uploads\/react-aria-components-animation-guide\/react-aria-transitions.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hongkiat.com\/blog\/react-aria-components-animation-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hongkiat.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Add Animation on React Aria Components"}]},{"@type":"WebSite","@id":"https:\/\/www.hongkiat.com\/blog\/#website","url":"https:\/\/www.hongkiat.com\/blog\/","name":"Hongkiat","description":"Tech and Design Tips","publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hongkiat.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hongkiat.com\/blog\/#organization","name":"Hongkiat.com","url":"https:\/\/www.hongkiat.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","contentUrl":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","width":1200,"height":799,"caption":"Hongkiat.com"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hongkiatcom","https:\/\/x.com\/hongkiat","https:\/\/www.pinterest.com\/hongkiat\/"]},{"@type":"Person","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807","name":"Thoriq Firdaus","description":"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.","sameAs":["https:\/\/thoriq.com","https:\/\/x.com\/tfirdaus"],"jobTitle":"Web Developer","url":"https:\/\/www.hongkiat.com\/blog\/author\/thoriq\/"}]}},"jetpack_featured_media_url":"https:\/\/","jetpack_shortlink":"https:\/\/wp.me\/p4uxU-jmr","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/74427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/comments?post=74427"}],"version-history":[{"count":2,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/74427\/revisions"}],"predecessor-version":[{"id":74429,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/74427\/revisions\/74429"}],"wp:attachment":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/media?parent=74427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/categories?post=74427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/tags?post=74427"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/topic?post=74427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}