From 3c805e7da3ae1c856d9cecc31f2a0385ae130303 Mon Sep 17 00:00:00 2001 From: Kafuu-Chinocya <38375027+Kafuu-Chinocya@users.noreply.github.com> Date: Tue, 15 Apr 2025 15:59:36 +0800 Subject: [PATCH 01/25] fix(reference): missing parameter in hydrateRoot (#7724) --- src/content/reference/react-dom/client/hydrateRoot.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/content/reference/react-dom/client/hydrateRoot.md b/src/content/reference/react-dom/client/hydrateRoot.md index 99190b03a..b74e2c38e 100644 --- a/src/content/reference/react-dom/client/hydrateRoot.md +++ b/src/content/reference/react-dom/client/hydrateRoot.md @@ -378,12 +378,13 @@ It is uncommon to call [`root.render`](#root-render) on a hydrated root. Usually By default, React will log all errors to the console. To implement your own error reporting, you can provide the optional error handler root options `onUncaughtError`, `onCaughtError` and `onRecoverableError`: -```js [[1, 6, "onCaughtError"], [2, 6, "error", 1], [3, 6, "errorInfo"], [4, 10, "componentStack", 15]] +```js [[1, 7, "onCaughtError"], [2, 7, "error", 1], [3, 7, "errorInfo"], [4, 11, "componentStack", 15]] import { hydrateRoot } from "react-dom/client"; +import App from "./App.js"; import { reportCaughtError } from "./reportError"; const container = document.getElementById("root"); -const root = hydrateRoot(container, { +const root = hydrateRoot(container, , { onCaughtError: (error, errorInfo) => { if (error.message !== "Known error") { reportCaughtError({ From 84261aa85c3467c4594715b41a8498c7f7772a54 Mon Sep 17 00:00:00 2001 From: Valentin <3774962+val1984@users.noreply.github.com> Date: Tue, 15 Apr 2025 17:13:42 +0200 Subject: [PATCH 02/25] Update versions to mention the latest version: 19.1 (#7739) GitHub Copilot web search replies that React latest version is 19.0 because 19.1 is not present in this page --- src/content/versions.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/content/versions.md b/src/content/versions.md index 8530f6324..54bc309f1 100644 --- a/src/content/versions.md +++ b/src/content/versions.md @@ -11,7 +11,7 @@ The React docs at [react.dev](https://react.dev) provide documentation for the l We aim to keep the docs updated within major versions, and do not publish versions for each minor or patch version. When a new major is released, we archive the docs for the previous version as `x.react.dev`. See our [versioning policy](/community/versioning-policy) for more info. You can find an archive of previous major versions below. -## Latest version: 19.0 {/*latest-version*/} +## Latest version: 19.1 {/*latest-version*/} - [react.dev](https://react.dev) {/*docs-19*/} @@ -51,6 +51,7 @@ For versions older than React 15, see [15.react.dev](https://15.react.dev). - [React 19 Deep Dive: Coordinating HTML](https://www.youtube.com/watch?v=IBBN-s77YSI) **Releases** +- [v19.1.0 (March, 2025)](https://github.com/facebook/react/blob/main/CHANGELOG.md#1910-march-28-2025) - [v19.0.0 (December, 2024)](https://github.com/facebook/react/blob/main/CHANGELOG.md#1900-december-5-2024) ### React 18 {/*react-18*/} From 947681ea20f278c64200ea1107062765948f5a10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Kaya?= Date: Tue, 15 Apr 2025 15:25:35 +0000 Subject: [PATCH 03/25] docs: fix a typo in the docs (#7736) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: “Clatron” <“bariskaya1516@gmail.com”> --- src/content/learn/creating-a-react-app.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/learn/creating-a-react-app.md b/src/content/learn/creating-a-react-app.md index fc6c956d4..e51ec8b63 100644 --- a/src/content/learn/creating-a-react-app.md +++ b/src/content/learn/creating-a-react-app.md @@ -106,7 +106,7 @@ If your app has constraints not well-served by existing frameworks, you prefer t Starting from scratch gives you more flexibility, but does require that you make choices on which tools to use for routing, data fetching, and other common usage patterns. It's a lot like building your own framework, instead of using a framework that already exists. The [frameworks we recommend](#full-stack-frameworks) have built-in solutions for these problems. -If you want to build your own solutions, see our guide to [build a React app from Scratch](/learn/build-a-react-app-from-scratch) for instructions on how to set up a new React project starting with a built tool like [Vite](https://vite.dev/), [Parcel](https://parceljs.org/), or [RSbuild](https://rsbuild.dev/). +If you want to build your own solutions, see our guide to [build a React app from Scratch](/learn/build-a-react-app-from-scratch) for instructions on how to set up a new React project starting with a build tool like [Vite](https://vite.dev/), [Parcel](https://parceljs.org/), or [RSbuild](https://rsbuild.dev/). ----- From 4bea66b021679e307f3ccb05fdd8fbdf80dd04d7 Mon Sep 17 00:00:00 2001 From: John Kapantzakis Date: Wed, 16 Apr 2025 23:09:11 +0300 Subject: [PATCH 04/25] Change the word 'Function' to 'Component' (#7741) * Change the word 'Function' to 'Component' * Trigger actions --- src/content/reference/rsc/server-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/reference/rsc/server-functions.md b/src/content/reference/rsc/server-functions.md index d29693894..9cfcdb33b 100644 --- a/src/content/reference/rsc/server-functions.md +++ b/src/content/reference/rsc/server-functions.md @@ -54,7 +54,7 @@ function EmptyNote () { } ``` -When React renders the `EmptyNote` Server Function, it will create a reference to the `createNoteAction` function, and pass that reference to the `Button` Client Component. When the button is clicked, React will send a request to the server to execute the `createNoteAction` function with the reference provided: +When React renders the `EmptyNote` Server Component, it will create a reference to the `createNoteAction` function, and pass that reference to the `Button` Client Component. When the button is clicked, React will send a request to the server to execute the `createNoteAction` function with the reference provided: ```js {5} "use client"; From 4c54ac95800fe1c8b9c2fe9c9926ae8de91e1f18 Mon Sep 17 00:00:00 2001 From: lauren Date: Mon, 21 Apr 2025 15:35:55 -0400 Subject: [PATCH 05/25] Fix missing Sunsetting CRA entry in sidebar (#7755) This was missed in the last blog post. Also fixed the incorrect date. --- src/content/blog/index.md | 4 ++-- src/sidebarBlog.json | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/content/blog/index.md b/src/content/blog/index.md index f7bbe76f3..f74a57ba6 100644 --- a/src/content/blog/index.md +++ b/src/content/blog/index.md @@ -4,7 +4,7 @@ title: React Blog -This blog is the official source for the updates from the React team. Anything important, including release notes or deprecation notices, will be posted here first. +This blog is the official source for the updates from the React team. Anything important, including release notes or deprecation notices, will be posted here first. You can also follow the [@react.dev](https://bsky.app/profile/react.dev) account on Bluesky, or [@reactjs](https://twitter.com/reactjs) account on Twitter, but you won’t miss anything essential if you only read this blog. @@ -12,7 +12,7 @@ You can also follow the [@react.dev](https://bsky.app/profile/react.dev) account
- + Today, we’re deprecating Create React App for new apps, and encouraging existing apps to migrate to a framework, or to migrate to a build tool like Vite, Parcel, or RSBuild. We’re also providing docs for when a framework isn’t a good fit for your project, you want to build your own framework, or you just want to learn how React works by building a React app from scratch ... diff --git a/src/sidebarBlog.json b/src/sidebarBlog.json index 5562a5a6c..567988023 100644 --- a/src/sidebarBlog.json +++ b/src/sidebarBlog.json @@ -11,6 +11,13 @@ "path": "/blog", "skipBreadcrumb": true, "routes": [ + { + "title": "Sunsetting Create React App", + "titleForHomepage": "Sunsetting Create React App", + "icon": "blog", + "date": "February 14, 2025", + "path": "/blog/2025/02/14/sunsetting-create-react-app" + }, { "title": "React 19", "titleForHomepage": "React 19", From 3a88efd82ac6e3e5a2bc31430fbe20c07cfb6ef2 Mon Sep 17 00:00:00 2001 From: lauren Date: Mon, 21 Apr 2025 16:15:49 -0400 Subject: [PATCH 06/25] Compiler blog post (#7756) Blog post for Compiler RC --- next-env.d.ts | 3 +- .../blog/2025/04/21/react-compiler-rc.md | 124 ++++++++++++++++++ src/content/blog/index.md | 7 + src/content/learn/react-compiler.md | 8 +- src/sidebarBlog.json | 7 + 5 files changed, 141 insertions(+), 8 deletions(-) create mode 100644 src/content/blog/2025/04/21/react-compiler-rc.md diff --git a/next-env.d.ts b/next-env.d.ts index 3cd7048ed..52e831b43 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,5 @@ /// /// -/// // NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. +// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information. diff --git a/src/content/blog/2025/04/21/react-compiler-rc.md b/src/content/blog/2025/04/21/react-compiler-rc.md new file mode 100644 index 000000000..ab4790129 --- /dev/null +++ b/src/content/blog/2025/04/21/react-compiler-rc.md @@ -0,0 +1,124 @@ +--- +title: "React Compiler RC" +author: Lauren Tan and Mofei Zhang +date: 2025/04/21 +description: We are releasing the compiler's first Release Candidate (RC) today. + +--- + +April 21, 2025 by [Lauren Tan](https://x.com/potetotes) and [Mofei Zhang](https://x.com/zmofei). + +--- + + + +The React team is excited to share new updates: + + + +1. We're publishing React Compiler RC today, in preparation of the compiler's stable release. +2. We're simplifying your eslint setup by merging `eslint-plugin-react-compiler` into `eslint-plugin-react-hooks`. +3. We're working with the swc and oxc teams to add plugins to allow for Babel-free build pipelines. + +--- + +[React Compiler](https://react.dev/learn/react-compiler) is a build-time tool that optimizes your React app through automatic memoization. Last year, we published React Compiler’s [first beta](https://react.dev/blog/2024/10/21/react-compiler-beta-release) and received lots of great feedback and contributions. We’re excited about the wins we’ve seen from folks adopting the compiler (see case studies from [Sanity Studio](https://github.com/reactwg/react-compiler/discussions/33) and [Wakelet](https://github.com/reactwg/react-compiler/discussions/52)) and are working towards a stable release. + +We are releasing the compiler's first Release Candidate (RC) today. The RC is intended to be a stable and near-final version of the compiler, and safe to use in production for all React users. + +## Use React Compiler RC today {/*use-react-compiler-rc-today*/} +To install the RC: + +npm + +{`npm install --save-dev --save-exact babel-plugin-react-compiler@rc`} + + +pnpm + +{`pnpm add --save-dev --save-exact babel-plugin-react-compiler@rc`} + + +yarn + +{`yarn add --dev --exact babel-plugin-react-compiler@rc`} + + +As part of the RC, we've been making React Compiler easier to add to your projects and added optimizations to how the compiler generates memoization. React Complier now supports optional chains and array indices as dependencies. We're exploring how to infer even more dependencies like equality checks and string interpolation. These improvements ultimately result in fewer re-renders and more responsive UIs. + +We have also heard from the community that the ref-in-render validation sometimes has false positives. Since as a general philosophy we want you to be able to fully trust in the compiler's error messages and hints, we are turning it off by default for now. We will keep working to improve this validation, and we will re-enable it in a follow up release. + +You can find more details on using the Compiler in [our docs](https://react.dev/learn/react-compiler). + +### Backwards Compatibility {/*backwards-compatibility*/} +As noted in the Beta announcement, React Compiler is compatible with React 17 and up. If you are not yet on React 19, you can use React Compiler by specifying a minimum target in your compiler config, and adding `react-compiler-runtime` as a dependency. You can find docs on this [here](https://react.dev/learn/react-compiler#using-react-compiler-with-react-17-or-18). + +## Migrating from eslint-plugin-react-compiler to eslint-plugin-react-hooks {/*migrating-from-eslint-plugin-react-compiler-to-eslint-plugin-react-hooks*/} +To install eslint-plugin-react-hooks: + +npm + +{`npm install --save-dev eslint-plugin-react-hooks@^6.0.0`} + + +pnpm + +{`pnpm add --save-dev eslint-plugin-react-hooks@^6.0.0`} + + +yarn + +{`yarn add --dev eslint-plugin-react-hooks@^6.0.0`} + + +`eslint-plugin-react-hooks` 5.2.0 has been ported to TypeScript, which allowed us to improve the type-safety of the plugin. In the 6.0.0 release of the ESLint plugin, the compiler lint rule has now been merged in. If you were previously using `eslint-plugin-react-compiler`, this means you can now use a single ESLint plugin in your codebase. Many thanks to [@michaelfaith](https://bsky.app/profile/michael.faith) for contributing to this improvement! + +```js +// eslint.config.js +import * as reactHooks from 'eslint-plugin-react-hooks'; + +export default [ + // Flat Config (eslint 9+) + reactHooks.configs.recommended, + + // Legacy Config + reactHooks.configs['recommended-latest'] +]; +``` + +The linter does not require the compiler to be installed, so there's no risk in upgrading eslint-plugin-react-hooks. We recommend everyone upgrade today. + +## swc and oxc support (experimental) {/*swc-and-oxc-support-experimental*/} +We have also been collaborating with Kang Dongyoong ([@kdy1dev](https://x.com/kdy1dev)) from the [swc](https://swc.rs/) team on adding support for React Compiler as an swc plugin. As part of the RC release, you can integrate the compiler into your [Next.js app with swc](https://nextjs.org/docs/app/api-reference/config/next-config-js/reactCompiler) instead of babel. We are also working with the [oxc](https://oxc.rs/) team to [add support for the compiler](https://github.com/oxc-project/oxc/issues/10048), which should allow more people to use the compiler if they have already migrated off of Babel. + +Next.js users can upgrade to [15.3.1](https://github.com/vercel/next.js/releases/tag/v15.3.1) or greater to try this out. If you have already enabled the compiler in your Next.js's config, swc support will be enabled automatically. + +Vite users can continue to use [vite-plugin-react](https://github.com/vitejs/vite-plugin-react) to enable the compiler, by adding it as a [Babel plugin](https://react.dev/learn/react-compiler#usage-with-vite). Once [rolldown](https://github.com/rolldown/rolldown) is officially released and supported in Vite and oxc support is added for React Compiler, we'll update the docs with information on how to migrate. + +## Upgrading React Compiler {/*upgrading-react-compiler*/} +React Compiler works best when the auto-memoization applied is strictly for performance. Future versions of the compiler may change how memoization is applied, for example it could become more granular and precise. + +However, because product code may sometimes break the [rules of React](https://react.dev/reference/rules) in ways that aren't always statically detectable in JavaScript, changing memoization can occasionally have unexpected results. For example, a previously memoized value might be used as a dependency for a useEffect somewhere in the component tree. Changing how or whether this value is memoized can cause over or under-firing of that useEffect. While we encourage [useEffect only for synchronization](https://react.dev/learn/synchronizing-with-effects), your codebase may have useEffects that cover other use-cases. For example you may have an effect that runs in response to some value changing (breaks the rules of React). + +In other words, changing memoization may under rare circumstances cause unexpected behavior. For this reason, we recommend following the Rules of React and employing continuous end-to-end testing of your app so you can upgrade the compiler with confidence and identify any rules of React violations that might cause issues. + +If you don't have good test coverage, we recommend pinning the compiler to an exact version (eg `19.0.0`) rather than a SemVer range (eg `^19.0.0`). You can do this by passing the `--save-exact` (npm/pnpm) or `--exact` flags (yarn) when upgrading the compiler. You should then do any upgrades of the compiler manually, taking care to check that your app still works as expected. + +## Roadmap to Stable {/*roadmap-to-stable*/} +*This is not a final roadmap, and is subject to change.* + +After a period of final feedback from the community on the RC, we plan on a Stable Release for the compiler. + +* ✅ Experimental: Released at React Conf 2024, primarily for feedback from application developers. +* ✅ Public Beta: Available today, for feedback from library authors. +* ✅ Release Candidate (RC): React Compiler works for the majority of rule-following apps and libraries without issue. +* General Availability: After final feedback period from the community. + +Post-Stable, we plan to add more compiler optimizations and improvements. This includes both continual improvements to automatic memoization, and new optimizations altogether, with minimal to no change of product code. Each upgrade will continue to improve performance and add better handling of diverse JavaScript and React patterns. + +## Feedback {/*feedback*/} +During the RC period, we encourage all React users to try the compiler and provide feedback in the React repo. Please [open an issue](https://github.com/facebook/react/issues) if you encounter any bugs or unexpected behavior. If you have a general question or suggestion, please post them in the [React Compiler Working Group](https://github.com/reactwg/react-compiler/discussions). + +--- + +Thanks to [Joe Savona](https://x.com/en_JS), [Jason Bonta](https://twitter.com/someextent), [Jimmy Lai](https://x.com/feedthejim), and [Kang Dongyoon](https://x.com/kdy1dev) (@kdy1dev) for reviewing and editing this post. diff --git a/src/content/blog/index.md b/src/content/blog/index.md index f74a57ba6..4707e5f48 100644 --- a/src/content/blog/index.md +++ b/src/content/blog/index.md @@ -12,6 +12,13 @@ You can also follow the [@react.dev](https://bsky.app/profile/react.dev) account
+ + +We are releasing the compiler's first Release Candidate (RC) today. ... + + + + Today, we’re deprecating Create React App for new apps, and encouraging existing apps to migrate to a framework, or to migrate to a build tool like Vite, Parcel, or RSBuild. We’re also providing docs for when a framework isn’t a good fit for your project, you want to build your own framework, or you just want to learn how React works by building a React app from scratch ... diff --git a/src/content/learn/react-compiler.md b/src/content/learn/react-compiler.md index 7c46673e7..143c859a1 100644 --- a/src/content/learn/react-compiler.md +++ b/src/content/learn/react-compiler.md @@ -6,10 +6,6 @@ title: React Compiler This page will give you an introduction to React Compiler and how to try it out successfully. - -These docs are still a work in progress. More documentation is available in the [React Compiler Working Group repo](https://github.com/reactwg/react-compiler/discussions), and will be upstreamed into these docs when they are more stable. - - * Getting started with the compiler @@ -19,9 +15,9 @@ These docs are still a work in progress. More documentation is available in the -React Compiler is a new compiler currently in Beta, that we've open sourced to get early feedback from the community. While it has been used in production at companies like Meta, rolling out the compiler to production for your app will depend on the health of your codebase and how well you’ve followed the [Rules of React](/reference/rules). +React Compiler is a new compiler currently in RC, that we've open sourced to get feedback from the community. We now recommend everyone to use the compiler. -The latest Beta release can be found with the `@beta` tag, and daily experimental releases with `@experimental`. +The latest RC release can be found with the `@rc` tag, and daily experimental releases with `@experimental`. React Compiler is a new compiler that we've open sourced to get early feedback from the community. It is a build-time only tool that automatically optimizes your React app. It works with plain JavaScript, and understands the [Rules of React](/reference/rules), so you don't need to rewrite any code to use it. diff --git a/src/sidebarBlog.json b/src/sidebarBlog.json index 567988023..33a474766 100644 --- a/src/sidebarBlog.json +++ b/src/sidebarBlog.json @@ -11,6 +11,13 @@ "path": "/blog", "skipBreadcrumb": true, "routes": [ + { + "title": "React Compiler RC", + "titleForHomepage": "React Compiler RC", + "icon": "blog", + "date": "April 21, 2025", + "path": "/blog/2025/04/21/react-compiler-rc" + }, { "title": "Sunsetting Create React App", "titleForHomepage": "Sunsetting Create React App", From c1e568153e661d7236c5d6070681a0573fad1ec4 Mon Sep 17 00:00:00 2001 From: lauren Date: Mon, 21 Apr 2025 17:03:33 -0400 Subject: [PATCH 07/25] Compiler blog post edits (#7758) Tweaks to the post. --- .../2024/10/21/react-compiler-beta-release.md | 8 +++++++ .../blog/2025/04/21/react-compiler-rc.md | 24 ++++++++++--------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/content/blog/2024/10/21/react-compiler-beta-release.md b/src/content/blog/2024/10/21/react-compiler-beta-release.md index f5a870b22..58e6b24aa 100644 --- a/src/content/blog/2024/10/21/react-compiler-beta-release.md +++ b/src/content/blog/2024/10/21/react-compiler-beta-release.md @@ -10,6 +10,14 @@ October 21, 2024 by [Lauren Tan](https://twitter.com/potetotes). --- + + +### React Compiler is now in RC! {/*react-compiler-is-now-in-rc*/} + +Please see the [RC blog post](/blog/2025/04/21/react-compiler-rc) for details. + + + The React team is excited to share new updates: diff --git a/src/content/blog/2025/04/21/react-compiler-rc.md b/src/content/blog/2025/04/21/react-compiler-rc.md index ab4790129..fe9e3c6c1 100644 --- a/src/content/blog/2025/04/21/react-compiler-rc.md +++ b/src/content/blog/2025/04/21/react-compiler-rc.md @@ -17,8 +17,8 @@ The React team is excited to share new updates: 1. We're publishing React Compiler RC today, in preparation of the compiler's stable release. -2. We're simplifying your eslint setup by merging `eslint-plugin-react-compiler` into `eslint-plugin-react-hooks`. -3. We're working with the swc and oxc teams to add plugins to allow for Babel-free build pipelines. +2. We're merging `eslint-plugin-react-compiler` into `eslint-plugin-react-hooks`. +3. We've added support for swc and are working with oxc to support Babel-free builds. --- @@ -54,25 +54,25 @@ You can find more details on using the Compiler in [our docs](https://react.dev/ As noted in the Beta announcement, React Compiler is compatible with React 17 and up. If you are not yet on React 19, you can use React Compiler by specifying a minimum target in your compiler config, and adding `react-compiler-runtime` as a dependency. You can find docs on this [here](https://react.dev/learn/react-compiler#using-react-compiler-with-react-17-or-18). ## Migrating from eslint-plugin-react-compiler to eslint-plugin-react-hooks {/*migrating-from-eslint-plugin-react-compiler-to-eslint-plugin-react-hooks*/} -To install eslint-plugin-react-hooks: +If you have already installed eslint-plugin-react-compiler, you can now remove it and use `eslint-plugin-react-hooks@^6.0.0-rc.1`. Many thanks to [@michaelfaith](https://bsky.app/profile/michael.faith) for contributing to this improvement! + +To install: npm -{`npm install --save-dev eslint-plugin-react-hooks@^6.0.0`} +{`npm install --save-dev eslint-plugin-react-hooks@^6.0.0-rc.1`} pnpm -{`pnpm add --save-dev eslint-plugin-react-hooks@^6.0.0`} +{`pnpm add --save-dev eslint-plugin-react-hooks@^6.0.0-rc.1`} yarn -{`yarn add --dev eslint-plugin-react-hooks@^6.0.0`} +{`yarn add --dev eslint-plugin-react-hooks@^6.0.0-rc.1`} -`eslint-plugin-react-hooks` 5.2.0 has been ported to TypeScript, which allowed us to improve the type-safety of the plugin. In the 6.0.0 release of the ESLint plugin, the compiler lint rule has now been merged in. If you were previously using `eslint-plugin-react-compiler`, this means you can now use a single ESLint plugin in your codebase. Many thanks to [@michaelfaith](https://bsky.app/profile/michael.faith) for contributing to this improvement! - ```js // eslint.config.js import * as reactHooks from 'eslint-plugin-react-hooks'; @@ -88,12 +88,14 @@ export default [ The linter does not require the compiler to be installed, so there's no risk in upgrading eslint-plugin-react-hooks. We recommend everyone upgrade today. -## swc and oxc support (experimental) {/*swc-and-oxc-support-experimental*/} -We have also been collaborating with Kang Dongyoong ([@kdy1dev](https://x.com/kdy1dev)) from the [swc](https://swc.rs/) team on adding support for React Compiler as an swc plugin. As part of the RC release, you can integrate the compiler into your [Next.js app with swc](https://nextjs.org/docs/app/api-reference/config/next-config-js/reactCompiler) instead of babel. We are also working with the [oxc](https://oxc.rs/) team to [add support for the compiler](https://github.com/oxc-project/oxc/issues/10048), which should allow more people to use the compiler if they have already migrated off of Babel. +## swc support (experimental) {/*swc-support-experimental*/} +React Compiler can be installed across [several build tools](/learn/react-compiler#installation) such as Babel, Vite, and Rsbuild. + +In addition to those tools, we have been collaborating with Kang Dongyoong ([@kdy1dev](https://x.com/kdy1dev)) from the [swc](https://swc.rs/) team on adding additional support for React Compiler as an swc plugin. As part of the RC release, you can now integrate the compiler into your [Next.js app with swc](https://nextjs.org/docs/app/api-reference/config/next-config-js/reactCompiler) instead of Babel. Next.js users can upgrade to [15.3.1](https://github.com/vercel/next.js/releases/tag/v15.3.1) or greater to try this out. If you have already enabled the compiler in your Next.js's config, swc support will be enabled automatically. -Vite users can continue to use [vite-plugin-react](https://github.com/vitejs/vite-plugin-react) to enable the compiler, by adding it as a [Babel plugin](https://react.dev/learn/react-compiler#usage-with-vite). Once [rolldown](https://github.com/rolldown/rolldown) is officially released and supported in Vite and oxc support is added for React Compiler, we'll update the docs with information on how to migrate. +Vite users can continue to use [vite-plugin-react](https://github.com/vitejs/vite-plugin-react) to enable the compiler, by adding it as a [Babel plugin](https://react.dev/learn/react-compiler#usage-with-vite). We are also working with the [oxc](https://oxc.rs/) team to [add support for the compiler](https://github.com/oxc-project/oxc/issues/10048). Once [rolldown](https://github.com/rolldown/rolldown) is officially released and supported in Vite and oxc support is added for React Compiler, we'll update the docs with information on how to migrate. ## Upgrading React Compiler {/*upgrading-react-compiler*/} React Compiler works best when the auto-memoization applied is strictly for performance. Future versions of the compiler may change how memoization is applied, for example it could become more granular and precise. From 663df77853a11e52708341003fc67e750846bfd1 Mon Sep 17 00:00:00 2001 From: lauren Date: Mon, 21 Apr 2025 17:03:41 -0400 Subject: [PATCH 08/25] React compiler doc updates (#7759) * Compiler blog post edits Tweaks to the post. * React compiler doc updates --- src/content/learn/react-compiler.md | 56 ++++++++--------------------- 1 file changed, 14 insertions(+), 42 deletions(-) diff --git a/src/content/learn/react-compiler.md b/src/content/learn/react-compiler.md index 143c859a1..9d4e19d21 100644 --- a/src/content/learn/react-compiler.md +++ b/src/content/learn/react-compiler.md @@ -15,25 +15,25 @@ This page will give you an introduction to React Compiler and how to try it out -React Compiler is a new compiler currently in RC, that we've open sourced to get feedback from the community. We now recommend everyone to use the compiler. +React Compiler is a new compiler currently in RC, that we've open sourced to get feedback from the community. We now recommend everyone to try the compiler and provide feedback. The latest RC release can be found with the `@rc` tag, and daily experimental releases with `@experimental`. -React Compiler is a new compiler that we've open sourced to get early feedback from the community. It is a build-time only tool that automatically optimizes your React app. It works with plain JavaScript, and understands the [Rules of React](/reference/rules), so you don't need to rewrite any code to use it. +React Compiler is a new compiler that we've open sourced to get feedback from the community. It is a build-time only tool that automatically optimizes your React app. It works with plain JavaScript, and understands the [Rules of React](/reference/rules), so you don't need to rewrite any code to use it. -The compiler also includes an [ESLint plugin](#installing-eslint-plugin-react-compiler) that surfaces the analysis from the compiler right in your editor. **We strongly recommend everyone use the linter today.** The linter does not require that you have the compiler installed, so you can use it even if you are not ready to try out the compiler. +eslint-plugin-react-hooks also includes an [ESLint rule](#installing-eslint-plugin-react-compiler) that surfaces the analysis from the compiler right in your editor. **We strongly recommend everyone use the linter today.** The linter does not require that you have the compiler installed, so you can use it even if you are not ready to try out the compiler. -The compiler is currently released as `beta`, and is available to try out on React 17+ apps and libraries. To install the Beta: +The compiler is currently released as `rc`, and is available to try out on React 17+ apps and libraries. To install the RC: -npm install -D babel-plugin-react-compiler@beta eslint-plugin-react-compiler@beta +{`npm install -D babel-plugin-react-compiler@rc eslint-plugin-react-hooks@^6.0.0-rc.1`} Or, if you're using Yarn: -yarn add -D babel-plugin-react-compiler@beta eslint-plugin-react-compiler@beta +{`yarn add -D babel-plugin-react-compiler@rc eslint-plugin-react-hooks@^6.0.0-rc.1`} If you are not using React 19 yet, please see [the section below](#using-react-compiler-with-react-17-or-18) for further instructions. @@ -112,7 +112,7 @@ So if `expensivelyProcessAReallyLargeArrayOfObjects` was used in many different ### Should I try out the compiler? {/*should-i-try-out-the-compiler*/} -Please note that the compiler is still in Beta and has many rough edges. While it has been used in production at companies like Meta, rolling out the compiler to production for your app will depend on the health of your codebase and how well you've followed the [Rules of React](/reference/rules). +The compiler is now in RC and has been tested extensively in production. While it has been used in production at companies like Meta, rolling out the compiler to production for your app will depend on the health of your codebase and how well you've followed the [Rules of React](/reference/rules). **You don't have to rush into using the compiler now. It's okay to wait until it reaches a stable release before adopting it.** However, we do appreciate trying it out in small experiments in your apps so that you can [provide feedback](#reporting-issues) to us to help make the compiler better. @@ -120,43 +120,15 @@ Please note that the compiler is still in Beta and has many rough edges. While i In addition to these docs, we recommend checking the [React Compiler Working Group](https://github.com/reactwg/react-compiler) for additional information and discussion about the compiler. -### Installing eslint-plugin-react-compiler {/*installing-eslint-plugin-react-compiler*/} +### Installing eslint-plugin-react-hooks {/*installing-eslint-plugin-react-compiler*/} -React Compiler also powers an ESLint plugin. The ESLint plugin can be used **independently** of the compiler, meaning you can use the ESLint plugin even if you don't use the compiler. +React Compiler also powers an ESLint plugin. You can try it out by installing eslint-plugin-react-hooks@^6.0.0-rc.1. -npm install -D eslint-plugin-react-compiler@beta +{`npm install -D eslint-plugin-react-hooks@^6.0.0-rc.1`} -Then, add it to your ESLint config: - -```js -import reactCompiler from 'eslint-plugin-react-compiler' - -export default [ - { - plugins: { - 'react-compiler': reactCompiler, - }, - rules: { - 'react-compiler/react-compiler': 'error', - }, - }, -] -``` - -Or, in the deprecated eslintrc config format: - -```js -module.exports = { - plugins: [ - 'eslint-plugin-react-compiler', - ], - rules: { - 'react-compiler/react-compiler': 'error', - }, -} -``` +See our [editor setup](/learn/editor-setup#linting) guide for more details. The ESLint plugin will display any violations of the rules of React in your editor. When it does this, it means that the compiler has skipped over optimizing that component or hook. This is perfectly okay, and the compiler can recover and continue optimizing other components in your codebase. @@ -190,7 +162,7 @@ If you're starting a new project, you can enable the compiler on your entire cod React Compiler works best with React 19 RC. If you are unable to upgrade, you can install the extra `react-compiler-runtime` package which will allow the compiled code to run on versions prior to 19. However, note that the minimum supported version is 17. -npm install react-compiler-runtime@beta +{`npm install react-compiler-runtime@rc`} You should also add the correct `target` to your compiler config, where `target` is the major version of React you are targeting: @@ -225,7 +197,7 @@ Similarly to apps, it is not necessary to fully compile 100% of your components ### Babel {/*usage-with-babel*/} -npm install babel-plugin-react-compiler@beta +{`npm install babel-plugin-react-compiler@rc`} The compiler includes a Babel plugin which you can use in your build pipeline to run the compiler. @@ -280,7 +252,7 @@ Please refer to the [Next.js docs](https://nextjs.org/docs/app/api-reference/nex Install `vite-plugin-babel`, and add the compiler's Babel plugin to it: -npm install vite-plugin-babel +{`npm install vite-plugin-babel`} ```js {2,14} From 740016e4dea7e518bd045309bc3e828cc2a787a4 Mon Sep 17 00:00:00 2001 From: lauren Date: Mon, 21 Apr 2025 18:00:39 -0400 Subject: [PATCH 09/25] More compiler blog post tweaks (#7760) More small tweaks. --- src/content/blog/2025/04/21/react-compiler-rc.md | 16 ++++++++-------- src/content/blog/index.md | 3 +-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/content/blog/2025/04/21/react-compiler-rc.md b/src/content/blog/2025/04/21/react-compiler-rc.md index fe9e3c6c1..55c238a93 100644 --- a/src/content/blog/2025/04/21/react-compiler-rc.md +++ b/src/content/blog/2025/04/21/react-compiler-rc.md @@ -24,7 +24,7 @@ The React team is excited to share new updates: [React Compiler](https://react.dev/learn/react-compiler) is a build-time tool that optimizes your React app through automatic memoization. Last year, we published React Compiler’s [first beta](https://react.dev/blog/2024/10/21/react-compiler-beta-release) and received lots of great feedback and contributions. We’re excited about the wins we’ve seen from folks adopting the compiler (see case studies from [Sanity Studio](https://github.com/reactwg/react-compiler/discussions/33) and [Wakelet](https://github.com/reactwg/react-compiler/discussions/52)) and are working towards a stable release. -We are releasing the compiler's first Release Candidate (RC) today. The RC is intended to be a stable and near-final version of the compiler, and safe to use in production for all React users. +We are releasing the compiler's first Release Candidate (RC) today. The RC is intended to be a stable and near-final version of the compiler, and safe to try out in production. ## Use React Compiler RC today {/*use-react-compiler-rc-today*/} To install the RC: @@ -50,7 +50,10 @@ We have also heard from the community that the ref-in-render validation sometime You can find more details on using the Compiler in [our docs](https://react.dev/learn/react-compiler). -### Backwards Compatibility {/*backwards-compatibility*/} +## Feedback {/*feedback*/} +During the RC period, we encourage all React users to try the compiler and provide feedback in the React repo. Please [open an issue](https://github.com/facebook/react/issues) if you encounter any bugs or unexpected behavior. If you have a general question or suggestion, please post them in the [React Compiler Working Group](https://github.com/reactwg/react-compiler/discussions). + +## Backwards Compatibility {/*backwards-compatibility*/} As noted in the Beta announcement, React Compiler is compatible with React 17 and up. If you are not yet on React 19, you can use React Compiler by specifying a minimum target in your compiler config, and adding `react-compiler-runtime` as a dependency. You can find docs on this [here](https://react.dev/learn/react-compiler#using-react-compiler-with-react-17-or-18). ## Migrating from eslint-plugin-react-compiler to eslint-plugin-react-hooks {/*migrating-from-eslint-plugin-react-compiler-to-eslint-plugin-react-hooks*/} @@ -100,11 +103,11 @@ Vite users can continue to use [vite-plugin-react](https://github.com/vitejs/vit ## Upgrading React Compiler {/*upgrading-react-compiler*/} React Compiler works best when the auto-memoization applied is strictly for performance. Future versions of the compiler may change how memoization is applied, for example it could become more granular and precise. -However, because product code may sometimes break the [rules of React](https://react.dev/reference/rules) in ways that aren't always statically detectable in JavaScript, changing memoization can occasionally have unexpected results. For example, a previously memoized value might be used as a dependency for a useEffect somewhere in the component tree. Changing how or whether this value is memoized can cause over or under-firing of that useEffect. While we encourage [useEffect only for synchronization](https://react.dev/learn/synchronizing-with-effects), your codebase may have useEffects that cover other use-cases. For example you may have an effect that runs in response to some value changing (breaks the rules of React). +However, because product code may sometimes break the [rules of React](https://react.dev/reference/rules) in ways that aren't always statically detectable in JavaScript, changing memoization can occasionally have unexpected results. For example, a previously memoized value might be used as a dependency for a useEffect somewhere in the component tree. Changing how or whether this value is memoized can cause over or under-firing of that useEffect. While we encourage [useEffect only for synchronization](https://react.dev/learn/synchronizing-with-effects), your codebase may have useEffects that cover other use-cases such as effects that needs to only run in response to specific values changing. In other words, changing memoization may under rare circumstances cause unexpected behavior. For this reason, we recommend following the Rules of React and employing continuous end-to-end testing of your app so you can upgrade the compiler with confidence and identify any rules of React violations that might cause issues. -If you don't have good test coverage, we recommend pinning the compiler to an exact version (eg `19.0.0`) rather than a SemVer range (eg `^19.0.0`). You can do this by passing the `--save-exact` (npm/pnpm) or `--exact` flags (yarn) when upgrading the compiler. You should then do any upgrades of the compiler manually, taking care to check that your app still works as expected. +If you don't have good test coverage, we recommend pinning the compiler to an exact version (eg `19.1.0`) rather than a SemVer range (eg `^19.1.0`). You can do this by passing the `--save-exact` (npm/pnpm) or `--exact` flags (yarn) when upgrading the compiler. You should then do any upgrades of the compiler manually, taking care to check that your app still works as expected. ## Roadmap to Stable {/*roadmap-to-stable*/} *This is not a final roadmap, and is subject to change.* @@ -118,9 +121,6 @@ After a period of final feedback from the community on the RC, we plan on a Stab Post-Stable, we plan to add more compiler optimizations and improvements. This includes both continual improvements to automatic memoization, and new optimizations altogether, with minimal to no change of product code. Each upgrade will continue to improve performance and add better handling of diverse JavaScript and React patterns. -## Feedback {/*feedback*/} -During the RC period, we encourage all React users to try the compiler and provide feedback in the React repo. Please [open an issue](https://github.com/facebook/react/issues) if you encounter any bugs or unexpected behavior. If you have a general question or suggestion, please post them in the [React Compiler Working Group](https://github.com/reactwg/react-compiler/discussions). - --- -Thanks to [Joe Savona](https://x.com/en_JS), [Jason Bonta](https://twitter.com/someextent), [Jimmy Lai](https://x.com/feedthejim), and [Kang Dongyoon](https://x.com/kdy1dev) (@kdy1dev) for reviewing and editing this post. +Thanks to [Joe Savona](https://x.com/en_JS), [Jason Bonta](https://x.com/someextent), [Jimmy Lai](https://x.com/feedthejim), and [Kang Dongyoon](https://x.com/kdy1dev) (@kdy1dev) for reviewing and editing this post. diff --git a/src/content/blog/index.md b/src/content/blog/index.md index 4707e5f48..fadb95243 100644 --- a/src/content/blog/index.md +++ b/src/content/blog/index.md @@ -14,11 +14,10 @@ You can also follow the [@react.dev](https://bsky.app/profile/react.dev) account -We are releasing the compiler's first Release Candidate (RC) today. ... +We are releasing the compiler's first Release Candidate (RC) today. - Today, we’re deprecating Create React App for new apps, and encouraging existing apps to migrate to a framework, or to migrate to a build tool like Vite, Parcel, or RSBuild. We’re also providing docs for when a framework isn’t a good fit for your project, you want to build your own framework, or you just want to learn how React works by building a React app from scratch ... From 39b9c56f8847237ecb9e8d2ece9f626cb4241f73 Mon Sep 17 00:00:00 2001 From: Christoph Nakazawa Date: Wed, 23 Apr 2025 09:04:09 +0900 Subject: [PATCH 10/25] Fix ESLint plugin version. (#7768) * Fix ESLint plugin version. * Update react-compiler-rc.md --- src/content/blog/2025/04/21/react-compiler-rc.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/content/blog/2025/04/21/react-compiler-rc.md b/src/content/blog/2025/04/21/react-compiler-rc.md index 55c238a93..6f6bcf3d9 100644 --- a/src/content/blog/2025/04/21/react-compiler-rc.md +++ b/src/content/blog/2025/04/21/react-compiler-rc.md @@ -57,7 +57,7 @@ During the RC period, we encourage all React users to try the compiler and provi As noted in the Beta announcement, React Compiler is compatible with React 17 and up. If you are not yet on React 19, you can use React Compiler by specifying a minimum target in your compiler config, and adding `react-compiler-runtime` as a dependency. You can find docs on this [here](https://react.dev/learn/react-compiler#using-react-compiler-with-react-17-or-18). ## Migrating from eslint-plugin-react-compiler to eslint-plugin-react-hooks {/*migrating-from-eslint-plugin-react-compiler-to-eslint-plugin-react-hooks*/} -If you have already installed eslint-plugin-react-compiler, you can now remove it and use `eslint-plugin-react-hooks@^6.0.0-rc.1`. Many thanks to [@michaelfaith](https://bsky.app/profile/michael.faith) for contributing to this improvement! +If you have already installed eslint-plugin-react-compiler, you can now remove it and use `eslint-plugin-react-hooks@6.0.0-rc.1`. Many thanks to [@michaelfaith](https://bsky.app/profile/michael.faith) for contributing to this improvement! To install: @@ -89,6 +89,8 @@ export default [ ]; ``` +To enable the React Compiler rule, add `'react-hooks/react-compiler': 'error'` to your ESLint configuration. + The linter does not require the compiler to be installed, so there's no risk in upgrading eslint-plugin-react-hooks. We recommend everyone upgrade today. ## swc support (experimental) {/*swc-support-experimental*/} From 5890bd6ecccce76b966d8b3a69bf030285f3c810 Mon Sep 17 00:00:00 2001 From: lauren Date: Tue, 22 Apr 2025 20:46:55 -0400 Subject: [PATCH 11/25] Update react-compiler-rc.md (#7769) --- src/content/blog/2025/04/21/react-compiler-rc.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/content/blog/2025/04/21/react-compiler-rc.md b/src/content/blog/2025/04/21/react-compiler-rc.md index 6f6bcf3d9..141a63698 100644 --- a/src/content/blog/2025/04/21/react-compiler-rc.md +++ b/src/content/blog/2025/04/21/react-compiler-rc.md @@ -63,17 +63,17 @@ To install: npm -{`npm install --save-dev eslint-plugin-react-hooks@^6.0.0-rc.1`} +{`npm install --save-dev eslint-plugin-react-hooks@6.0.0-rc.1`} pnpm -{`pnpm add --save-dev eslint-plugin-react-hooks@^6.0.0-rc.1`} +{`pnpm add --save-dev eslint-plugin-react-hooks@6.0.0-rc.1`} yarn -{`yarn add --dev eslint-plugin-react-hooks@^6.0.0-rc.1`} +{`yarn add --dev eslint-plugin-react-hooks@6.0.0-rc.1`} ```js From dd129e4493a3ef83b30415853a320655d67cd530 Mon Sep 17 00:00:00 2001 From: Kim Sung Hyun Date: Wed, 23 Apr 2025 09:52:14 +0900 Subject: [PATCH 12/25] fix a typo in name in the blog post (#7762) --- src/content/blog/2025/04/21/react-compiler-rc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/blog/2025/04/21/react-compiler-rc.md b/src/content/blog/2025/04/21/react-compiler-rc.md index 141a63698..9548e57e7 100644 --- a/src/content/blog/2025/04/21/react-compiler-rc.md +++ b/src/content/blog/2025/04/21/react-compiler-rc.md @@ -96,7 +96,7 @@ The linter does not require the compiler to be installed, so there's no risk in ## swc support (experimental) {/*swc-support-experimental*/} React Compiler can be installed across [several build tools](/learn/react-compiler#installation) such as Babel, Vite, and Rsbuild. -In addition to those tools, we have been collaborating with Kang Dongyoong ([@kdy1dev](https://x.com/kdy1dev)) from the [swc](https://swc.rs/) team on adding additional support for React Compiler as an swc plugin. As part of the RC release, you can now integrate the compiler into your [Next.js app with swc](https://nextjs.org/docs/app/api-reference/config/next-config-js/reactCompiler) instead of Babel. +In addition to those tools, we have been collaborating with Kang Dongyoon ([@kdy1dev](https://x.com/kdy1dev)) from the [swc](https://swc.rs/) team on adding additional support for React Compiler as an swc plugin. As part of the RC release, you can now integrate the compiler into your [Next.js app with swc](https://nextjs.org/docs/app/api-reference/config/next-config-js/reactCompiler) instead of Babel. Next.js users can upgrade to [15.3.1](https://github.com/vercel/next.js/releases/tag/v15.3.1) or greater to try this out. If you have already enabled the compiler in your Next.js's config, swc support will be enabled automatically. From 55ddaa4f13d778100b41187b720f43245bda0d1d Mon Sep 17 00:00:00 2001 From: Gleb Makhankov <78379892+Hlebread@users.noreply.github.com> Date: Wed, 23 Apr 2025 03:53:34 +0300 Subject: [PATCH 13/25] Add React Summit US 2025 and React Advanced London 2025 to conferences.md (#7761) Add `React Summit US 2025` and `React Advanced London 2025` to the list of upcoming conferences (`conferences.md`). --- src/content/community/conferences.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/content/community/conferences.md b/src/content/community/conferences.md index 17dd96159..84695811a 100644 --- a/src/content/community/conferences.md +++ b/src/content/community/conferences.md @@ -50,6 +50,16 @@ October 31 - November 01, 2025. In-person in Goa, India (hybrid event) + Oct 15 [Website](https://www.reactindia.io) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia) - [Youtube](https://www.youtube.com/channel/UCaFbHCBkPvVv1bWs_jwYt3w) +### React Summit US 2025 {/*react-summit-us-2025*/} +November 18 - 21, 2025. In-person in New York, USA + remote (hybrid event) + +[Website](https://reactsummit.us/) - [Twitter](https://x.com/reactsummit) + +### React Advanced London 2025 {/*react-advanced-london-2025*/} +November 28 & December 1, 2025. In-person in London, UK + online (hybrid event) + +[Website](https://reactadvanced.com/) - [Twitter](https://x.com/reactadvanced) + ## Past Conferences {/*past-conferences*/} From 358d2be565098d8638ee2b74199560858eff712e Mon Sep 17 00:00:00 2001 From: Ricky Date: Wed, 23 Apr 2025 11:27:48 -0400 Subject: [PATCH 14/25] [blog + docs] React Labs: View Transitions, Activity, and more (#7772) * init * Add new error * Bunch of updates * Add addTransitionType * Add Activity * Expand on Activity * Expand more on Activity * Start on vt examples * wip * wip * wip 2 * bump deploy * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * init * Add new error * Bunch of updates * Add addTransitionType * Add Activity * Expand on Activity * Expand more on Activity * Start on vt examples * wip * wip * wip 2 * bump deploy * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update existing VT examples to use video items * Suspense animation example * Add customization example * typos * Remove TODOs -- we might still want these but cutting scope * Address wp feedback * Fix reorder example * wip * wip * wip * wip * fix activity iframe resize --------- Co-authored-by: Jack Pope --- .../blog/react-labs-april-2025/flip.gif | Bin 0 -> 171661 bytes .../react-labs-april-2025/perf_tracks.png | Bin 0 -> 416681 bytes .../react-labs-april-2025/perf_tracks.webp | Bin 0 -> 112310 bytes .../perf_tracks_dark.png | Bin 0 -> 381971 bytes .../perf_tracks_dark.webp | Bin 0 -> 93484 bytes src/components/Icon/IconExperimental.tsx | 38 + src/components/Layout/Page.tsx | 6 +- src/components/Layout/Sidebar/SidebarLink.tsx | 11 +- src/components/MDX/ExpandableCallout.tsx | 10 + src/components/MDX/MDXComponents.tsx | 20 + src/components/PageHeading.tsx | 17 +- ...what-we-have-been-working-on-april-2025.md | 12993 ++++++++++++++ ...labs-view-transitions-activity-and-more.md | 14358 ++++++++++++++++ src/content/blog/index.md | 6 + src/content/reference/react/Activity.md | 1161 ++ src/content/reference/react/ViewTransition.md | 2213 +++ .../reference/react/addTransitionType.md | 182 + .../experimental_taintObjectReference.md | 5 +- .../react/experimental_taintUniqueValue.md | 5 +- .../react/experimental_useEffectEvent.md | 5 +- src/sidebarBlog.json | 7 + src/sidebarReference.json | 19 +- 22 files changed, 31039 insertions(+), 17 deletions(-) create mode 100644 public/images/blog/react-labs-april-2025/flip.gif create mode 100644 public/images/blog/react-labs-april-2025/perf_tracks.png create mode 100644 public/images/blog/react-labs-april-2025/perf_tracks.webp create mode 100644 public/images/blog/react-labs-april-2025/perf_tracks_dark.png create mode 100644 public/images/blog/react-labs-april-2025/perf_tracks_dark.webp create mode 100644 src/components/Icon/IconExperimental.tsx create mode 100644 src/content/blog/2025/04/01/react-labs-what-we-have-been-working-on-april-2025.md create mode 100644 src/content/blog/2025/04/23/react-labs-view-transitions-activity-and-more.md create mode 100644 src/content/reference/react/Activity.md create mode 100644 src/content/reference/react/ViewTransition.md create mode 100644 src/content/reference/react/addTransitionType.md diff --git a/public/images/blog/react-labs-april-2025/flip.gif b/public/images/blog/react-labs-april-2025/flip.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7363ebf625be978d141117fcad5f2fa4bafe6d0 GIT binary patch literal 171661 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

G$5=ixumX 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 V;lKF&|Iu6Q|J2*+zxw_<{|^9w`{Doq literal 0 HcmV?d00001 diff --git a/public/images/blog/react-labs-april-2025/perf_tracks.png b/public/images/blog/react-labs-april-2025/perf_tracks.png new file mode 100644 index 0000000000000000000000000000000000000000..835a247cf6456030e093c96b60e423a3db10bb69 GIT binary patch literal 416681 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

dG@Rtyj3GB?3$L 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%0DRTKW13%Q9*7)W{f=lDG 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

-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
s53^JxWWHqmI+Lu@7@Q(~MW5~lOEUJBq7ah;{ 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 literal 0 HcmV?d00001 diff --git a/public/images/blog/react-labs-april-2025/perf_tracks.webp b/public/images/blog/react-labs-april-2025/perf_tracks.webp new file mode 100644 index 0000000000000000000000000000000000000000..88a7eb792b01ab20365fd069f3a5b98f76f01a0b GIT binary patch literal 112310 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�Lu7ALB-t)q#_>W(;bieXU2Mq?W|x=gnt!lPTn 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 N9ZLX^n5c37q*)p1}Vr>cSpV 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�+$e2$n;WDrZ7` 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 literal 0 HcmV?d00001 diff --git a/src/components/Icon/IconExperimental.tsx b/src/components/Icon/IconExperimental.tsx new file mode 100644 index 000000000..0bba612eb --- /dev/null +++ b/src/components/Icon/IconExperimental.tsx @@ -0,0 +1,38 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + */ + +import {memo} from 'react'; + +export const IconExperimental = memo< + JSX.IntrinsicElements['svg'] & {title?: string; size?: 's' | 'md'} +>(function IconCanary( + {className, title, size} = { + className: undefined, + title: undefined, + size: 'md', + } +) { + return ( + + {title && {title}} + + + + + + + ); +}); diff --git a/src/components/Layout/Page.tsx b/src/components/Layout/Page.tsx index 1040e1aa7..ec3a6eba0 100644 --- a/src/components/Layout/Page.tsx +++ b/src/components/Layout/Page.tsx @@ -31,7 +31,7 @@ interface PageProps { meta: { title?: string; titleForTitleTag?: string; - canary?: boolean; + version?: 'experimental' | 'canary'; description?: string; }; section: 'learn' | 'reference' | 'community' | 'blog' | 'home' | 'unknown'; @@ -53,7 +53,7 @@ export function Page({ routeTree ); const title = meta.title || route?.title || ''; - const canary = meta.canary || false; + const version = meta.version; const description = meta.description || route?.description || ''; const isHomePage = cleanedPath === '/'; const isBlogIndex = cleanedPath === '/blog'; @@ -70,7 +70,7 @@ export function Page({ )}> + )} + {version === 'experimental' && ( + )} diff --git a/src/components/MDX/ExpandableCallout.tsx b/src/components/MDX/ExpandableCallout.tsx index 5f594063d..41d3d65d9 100644 --- a/src/components/MDX/ExpandableCallout.tsx +++ b/src/components/MDX/ExpandableCallout.tsx @@ -16,6 +16,7 @@ type CalloutVariants = | 'note' | 'wip' | 'canary' + | 'experimental' | 'major' | 'rsc'; @@ -51,6 +52,15 @@ const variantMap = { overlayGradient: 'linear-gradient(rgba(245, 249, 248, 0), rgba(245, 249, 248, 1)', }, + experimental: { + title: 'Experimental Feature', + Icon: IconCanary, + containerClasses: + 'bg-green-5 dark:bg-green-60 dark:bg-opacity-20 text-primary dark:text-primary-dark text-lg', + textColor: 'text-green-60 dark:text-green-40', + overlayGradient: + 'linear-gradient(rgba(245, 249, 248, 0), rgba(245, 249, 248, 1)', + }, pitfall: { title: 'Pitfall', Icon: IconPitfall, diff --git a/src/components/MDX/MDXComponents.tsx b/src/components/MDX/MDXComponents.tsx index f24fac598..1da353f60 100644 --- a/src/components/MDX/MDXComponents.tsx +++ b/src/components/MDX/MDXComponents.tsx @@ -98,6 +98,10 @@ const Canary = ({children}: {children: React.ReactNode}) => ( {children} ); +const Experimental = ({children}: {children: React.ReactNode}) => ( + {children} +); + const NextMajor = ({children}: {children: React.ReactNode}) => ( {children} ); @@ -120,6 +124,20 @@ const CanaryBadge = ({title}: {title: string}) => ( ); +const ExperimentalBadge = ({title}: {title: string}) => ( + + + Experimental only + +); + const NextMajorBadge = ({title}: {title: string}) => (
{breadcrumbs ? : null}

{title} - {canary && ( + {version === 'canary' && ( + )} + {version === 'experimental' && ( + )} diff --git a/src/content/blog/2025/04/01/react-labs-what-we-have-been-working-on-april-2025.md b/src/content/blog/2025/04/01/react-labs-what-we-have-been-working-on-april-2025.md new file mode 100644 index 000000000..5426f4584 --- /dev/null +++ b/src/content/blog/2025/04/01/react-labs-what-we-have-been-working-on-april-2025.md @@ -0,0 +1,12993 @@ +--- +title: "React Labs: What We've Been Working On – April 2025" +author: Ricky Hanlon, Lauren Tan, Mofei Zhang, Jordan Eldredge, Jack Pope, Matt Carroll +date: 2025/04/01 +description: TODO +--- + +April 1, 2025 by [Ricky Hanlon](https://twitter.com/rickhanlonii), and [Matt Carroll](https://twitter.com/mattcarrollcode). + +--- + + + +In React Labs posts, we write about projects in active research and development. In this post, we're sharing two new experimental features that are ready to try today, and updates on other areas we're working on now. + + + + + + +React Conf 2025 is scheduled for October 7–8 in Henderson, Nevada! + +We're looking for speakers to help us create talks about the features covered in this post. If you're interested in speaking at ReactConf, [please apply here](https://forms.reform.app/react-conf/call-for-speakers/piaae1?ga4_visitor_id=c3e8f3ce-2004-47a5-b801-f6b308280acd) (no talk proposal required). + +For more info on tickets, free streaming, sponsoring, and more, see [the React Conf website](https://conf.react.dev). + + + +Today, we're excited to release documentation for two new experimental features that are ready for testing: + +- [View Transitions](#view-transitions) +- [Activity](#activity) + +We're also sharing updates on new features currently in development: +- [React Performance Tracks](#react-performance-tracks) +- [Compiler IDE Extension](#compiler-ide-extension) +- [Automatic Effect Dependencies](#automatic-effect-dependencies) +- [Fragment Refs](#fragment-refs) +- [Concurrent stores](#concurrent-stores) + +--- + +# New Experimental Features {/*new-experimental-features*/} + +View Transitions and Activity are now ready for testing in `react@experimental`.These features have been tested in production and are stable, but the final API may still change as we incorporate feedback. + + + +You can try them by upgrading React packages to the most recent experimental version: + +- `react@experimental` +- `react-dom@experimental` + +Read on to learn how to use these features in your app, or check out the newly published docs: + +- [``](/reference/react/ViewTransition): A component lets you activate an animation for a Transition. +- [`addTransitionType`](/reference/react/addTransitionType): A function that allows you to specify the cause of a Transition. +- [``](/reference/react/Activity): A component that lets you hide and show part of the UI. + +## View Transitions {/*view-transitions*/} + +React View Transitions are a new experimental feature that makes it easier to add animations to UI transitions in your app. Under-the-hood, these animations APIs use the new [`startViewTransition`](https://developer.mozilla.org/en-US/docs/Web/API/Document/startViewTransition) API available in most modern browsers. + +To opt-in to animating an element, wrap it in the new `` component: + + +```js +// "what" to animate. + +
animate me
+
+``` + +This new component lets you declaratively define "what" to animate when an animation is activated. + +You can define "when" to animate by using one of these three triggers for a View Transition: + +```js +// "when" to animate. + +// Transitions +startTransition(() => setState(...)); + +// Deferred Values +const deferred = useDeferredValue(value); + +// Suspense +}> +
Loading...
+
+``` + +By default, these animations use the [default CSS animations for View Transitions](https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API/Using#customizing_your_animations) applied (typically a smooth cross-fade). You can use [view transition pseudo-selectors](https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API/Using#the_view_transition_pseudo-element_tree) to define "how" the animation runs. For example, you can use `*` to change the default animation for all transitions: + +``` +// "how" to animate. +::view-transition-old(*) { + animation: 300ms ease-out fade-out; +} +::view-transition-new(*) { + animation: 300ms ease-in fade-in; +} +``` + +When the DOM updates due to an animation trigger—like `startTransition`, `useDeferredValue`, or a `Suspense` fallback switching to content—React will use [declarative heuristics](/reference/react/ViewTransition#viewtransition) to automatically determine which `` components to activate for the animation. The browser will then run the animation that's defined in CSS. + +If you're familiar with the browser's View Transition API and want to know how React supports it, check out [How does `` Work](/reference/react/ViewTransition#how-does-viewtransition-work) in the docs. + +In this post, let's take a look at a few examples of how to use View Transitions. + +We'll start with this app, which doesn't animate any of the following interactions: +- Click a video to view the details. +- Click "back" to go back to the feed. +- Type in the list to filter the videos. + + + +```js src/App.js active +import TalkDetails from './Details'; import Home from './Home'; import {useRouter} from './router'; + +export default function App() { + const {url} = useRouter(); + + // 🚩This version doesn't include any animations yet + return url === '/' ? : ; +} +``` + +```js src/Details.js +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back +

+ } + > +
+ + + + }> + + +
+ + ); +} + +``` + +```js src/Home.js +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos
}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+ + ); +} + +``` + +```js src/Icons.js +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {heading} + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js +import { useState } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Thumbnail({ video, children }) { + return ( + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js +import { + useState, + createContext, + use, + useTransition, + useLayoutEffect, + useEffect, +} from "react"; + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +export function Router({ children }) { + const [routerState, setRouterState] = useState({ + pendingNav: () => {}, + url: document.location.pathname, + }); + const [isPending, startTransition] = useTransition(); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + function navigate(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + function navigateBack(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} +``` + +```css src/styles.css +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + + + +#### View Transitions do not replace CSS and JS driven animations {/*view-transitions-do-not-replace-css-and-js-driven-animations*/} + +View Transitions are meant to be used for UI transitions such as navigation, expanding, opening, or re-ordering. They are not meant to replace all the animations in your app. + +In our example app above, notice that there are already animations when you click the "like" button and the Suspense fallback glimmer. These are good use cases for CSS animations because they are animating a specific element. + + + +### Animating navigations {/*animating-navigations*/} + +Our app includes a Suspense-enabled router, with [page transitions already marked as Transitions](/reference/react/useTransition#building-a-suspense-enabled-router), which means navigations are performed with `startTransition`: + +```js +function navigate(url) { + startTransition(() => { + go(url); + }); +} +``` + +`startTransition` is a View Transition trigger, so we can add `` to animate between pages: + +```js +// "what" to animate + + {url === '/' ? : } + +``` + +When the `url` changes, the `` and new route are rendered. Since the `` was updated inside of `startTransition`, the `` is activated for an animation. + + +By default, View Transitions include the browser default cross-fade animation. Adding this to our example, we now have a cross-fade whenever we navigate between pages: + + + +```js src/App.js active +import {unstable_ViewTransition as ViewTransition} from 'react'; import Details from './Details'; import Home from './Home'; import {useRouter} from './router'; + +export default function App() { + const {url} = useRouter(); + + // Use ViewTransition to animate between pages. + // No additional CSS needed by default. + return ( + + {url === '/' ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back +
+ } + > +
+ + + + }> + + +
+ + ); +} + +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {heading} + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Thumbnail({ video, children }) { + return ( + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js +import {useState, createContext,use,useTransition,useLayoutEffect,useEffect} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + + function navigate(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + + + + const [routerState, setRouterState] = useState({ + pendingNav: () => {}, + url: document.location.pathname, + }); + + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + + function navigateBack(url) { + startTransition(() => { + go(url); + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +Since our router already updates the route using `startTransition`, this one line change to add `` activates with the default cross-fade animation. + +If you're curious how this works, see the docs for [How does `` work?](/reference/react/ViewTransition#how-does-viewtransition-work) + +### Customizing animations {/*customizing-animations*/} + +By default, `` includes the default cross-fade from the browser. + +To customize animations, you can provide props to the `` component to specify which animations to use, based on [how the `` activates](/reference/react/ViewTransition#props). + +For example, we can slow down the `default` cross fade animation: + +```js + + + +``` + +And define `slow-fade` in CSS using [view transition classes](/reference/react/ViewTransition#view-transition-classes): + +```css +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +Now, the cross fade is slower: + + + +```js src/App.js active +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Define a default animation of .slow-fade. + // See animations.css for the animation definiton. + return ( + + {url === '/' ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + }> + + +
+
+ ); +} + +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {heading} + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Thumbnail({ video, children }) { + return ( + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import { + useState, + createContext, + use, + useTransition, + useLayoutEffect, + useEffect, +} from "react"; + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +export function Router({ children }) { + const [routerState, setRouterState] = useState({ + pendingNav: () => {}, + url: document.location.pathname, + }); + const [isPending, startTransition] = useTransition(); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + function navigate(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + function navigateBack(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* Define .slow-fade using view transition classes */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +See [Styling View Transitions](/reference/react/ViewTransition#styling-view-transitions) for a full guide on styling ``. + +### Shared Element Transitions {/*shared-element-transitions*/} + +When two pages include the same element, often you want to animate it from one page to the next. + +To do this you can add a unique `name` to the ``: + +```js + + + +``` + +Now the video thumbnail animates between the two pages: + + + +```js src/App.js +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Keeping our default slow-fade. + // This allows the content not in the shared + // element transition to cross-fade. + return ( + + {url === "/" ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + }> + + +
+
+ ); +} + +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {heading} + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js active +import { useState, unstable_ViewTransition as ViewTransition } from "react"; import LikeButton from "./LikeButton"; import { useRouter } from "./router"; import { PauseIcon, PlayIcon } from "./Icons"; import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import { + useState, + createContext, + use, + useTransition, + useLayoutEffect, + useEffect, +} from "react"; + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +export function Router({ children }) { + const [routerState, setRouterState] = useState({ + pendingNav: () => {}, + url: document.location.pathname, + }); + const [isPending, startTransition] = useTransition(); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + function navigate(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + function navigateBack(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* No additional animations needed */ + + + + + + + + + +/* Previously defined animations below */ + + + + + +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +By default, React automatically generates a unique `name` for each element activated for a transition (see [How does `` work](/reference/react/ViewTransition#how-does-viewtransition-work)). When React sees a transition where a `` with a `name` is removed and a new `` with the same `name` is added, it will activate a shared element transition. + +For more info, see the docs for [Animating a Shared Element](/reference/react/ViewTransition#animating-a-shared-element). + +### Animating based on cause {/*animating-based-on-cause*/} + +Sometimes, you may want elements to animate differently based on how it was triggered. For this use case, we've added a new API called `addTransitionType` to specify the cause of a transition: + +```js {4,11} +function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); +} +function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); +} +``` + +With transition types, you can provide custom animations via props to ``. Let's add a shared element transition to the header for "6 Videos" and "Back": + +```js {4,5} + + {heading} + +``` + +Here we pass a `share` prop to define how to animate based on the transiton type. When the share transition activates from `nav-forward`, the view transition class `slide-forward` is applied. When it's from `nav-back`, the `slide-back` animation is activated. Let's define these animations in CSS: + +```css +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: ... +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: ... +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: ... +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: ... +} +``` + +Now we can animate the header along with thumbnail based on navigation type: + + + +```js src/App.js hidden +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Keeping our default slow-fade. + return ( + + {url === "/" ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + }> + + +
+
+ ); +} + +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js active +import {unstable_ViewTransition as ViewTransition} from 'react'; import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* New keyframes to support our animations above. */ +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + +/* Previously defined animations. */ + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +### Animating Suspense Boundaries {/*animating-suspense-boundaries*/} + +Suspense will also activate `` when the fallback is replaced by content. This is why the video description currently fades in with our `slow-fade` animation after the Suspense fallback. + +We can customize the Suspense animation using an `exit` on the fallback, and `enter` on the content: + +```js {3,8} + + + + } +> + + + + +``` + +Here's how we'll define `slide-down` and `slide-up` with CSS: + +```css {1, 6} +::view-transition-old(.slide-down) { + /* Slide the fallback down */ + animation: ...; +} + +::view-transition-new(.slide-up) { + /* Slide the content up */ + animation: ...; +} +``` + +Now, the Suspense content replaces the fallback with a sliding animation: + + + +```js src/App.js hidden +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Default slow-fade animation. + return ( + + {url === "/" ? :
} + + ); +} +``` + +```js src/Details.js active +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; import { fetchVideo, fetchVideoDetails } from "./data"; import { Thumbnail, VideoControls } from "./Videos"; import { useRouter } from "./router"; import Layout from "./Layout"; import { ChevronLeft } from "./Icons"; + +function VideoDetails({ id }) { + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* Slide the fallback down */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +/* Slide the content up */ +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Define the new keyframes */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +/* Previously defined animations below */ + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + + +### Animating Lists {/*animating-lists*/} + +You can also use `` to animate lists of items as they re-order, like in a searchable list of items: + +```js {3,5} +
+ {filteredVideos.map((video) => ( + + + ))} +
+``` + +To activate the ViewTransition, we can use `useDeferredValue`: + +```js {2} +const [searchText, setSearchText] = useState(''); +const deferredSearchText = useDeferredValue(searchText); +const filteredVideos = filterVideos(videos, deferredSearchText); +``` + +Now the items animate as you type in the search bar: + + + +```js src/App.js hidden +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Default slow-fade animation. + return ( + + {url === "/" ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { ChevronLeft } from "./Icons"; + +function VideoDetails({id}) { + // Animate from Suspense fallback to content + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js +import { useId, useState, use, useDeferredValue, unstable_ViewTransition as ViewTransition } from "react";import { Video } from "./Videos";import Layout from "./Layout";import { fetchVideos } from "./data";import { IconSearch } from "./Icons"; + +function SearchList({searchText, videos}) { + // Activate with useDeferredValue ("when") + const deferredSearchText = useDeferredValue(searchText); + const filteredVideos = filterVideos(videos, deferredSearchText); + return ( +
+
+ {filteredVideos.map((video) => ( + // Animate each item in list ("what") + + + ))} +
+ {filteredVideos.length === 0 && ( +
No results
+ )} +
+ ); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(''); + + return ( + {count} Videos}> + + + + ); +} + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* No additional animations needed */ + + + + + + + + + +/* Previously defined animations below */ + + + + + + +/* Slide animation for Suspense */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +### Final result {/*final-result*/} + +By adding a few `` components and a few lines of CSS, we were able to add all the animations above into the final result. + +We're excited about View Transitions and think they will level up the apps you're able to build. They're ready to start trying today in the experimental channel of React releases. + +Let's remove the slow fade, and take a look at the final result: + + + +```js src/App.js +import {unstable_ViewTransition as ViewTransition} from 'react'; import Details from './Details'; import Home from './Home'; import {useRouter} from './router'; + +export default function App() { + const {url} = useRouter(); + + // Animate with a cross fade between pages. + return ( + + {url === '/' ? :
} + + ); +} +``` + +```js src/Details.js +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; import { fetchVideo, fetchVideoDetails } from "./data"; import { Thumbnail, VideoControls } from "./Videos"; import { useRouter } from "./router"; import Layout from "./Layout"; import { ChevronLeft } from "./Icons"; + +function VideoDetails({id}) { + // Animate from Suspense fallback to content + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js +import { useId, useState, use, useDeferredValue, unstable_ViewTransition as ViewTransition } from "react";import { Video } from "./Videos";import Layout from "./Layout";import { fetchVideos } from "./data";import { IconSearch } from "./Icons"; + +function SearchList({searchText, videos}) { + // Activate with useDeferredValue ("when") + const deferredSearchText = useDeferredValue(searchText); + const filteredVideos = filterVideos(videos, deferredSearchText); + return ( +
+
+ {filteredVideos.map((video) => ( + // Animate each item in list ("what") + + + ))} +
+ {filteredVideos.length === 0 && ( +
No results
+ )} +
+ ); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(''); + + return ( + {count} Videos}> + + + + ); +} + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js +import {unstable_ViewTransition as ViewTransition} from 'react'; import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js +import { useState, unstable_ViewTransition as ViewTransition } from "react"; import LikeButton from "./LikeButton"; import { useRouter } from "./router"; import { PauseIcon, PlayIcon } from "./Icons"; import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + return ( + + + + ); +} + + + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* Slide animations for Suspense the fallback down */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +If you're curious to know more about how they work, check out [How Does `` Work](/reference/react/ViewTransition#how-does-viewtransition-work) in the docs. + +_For more background on how we built View Transitions, see: [#31975](https://github.com/facebook/react/pull/31975), [#32105](https://github.com/facebook/react/pull/32105), [#32041](https://github.com/facebook/react/pull/32041), [#32734](https://github.com/facebook/react/pull/32734), [#32797](https://github.com/facebook/react/pull/32797) [#31999](https://github.com/facebook/react/pull/31999), [#32031](https://github.com/facebook/react/pull/32031), [#32050](https://github.com/facebook/react/pull/32050), [#32820](https://github.com/facebook/react/pull/32820), [#32029](https://github.com/facebook/react/pull/32029), [#32028](https://github.com/facebook/react/pull/32028), and [#32038](https://github.com/facebook/react/pull/32038) by [@sebmarkbage](https://twitter.com/sebmarkbage) (thanks Seb!)._ + +--- + +## Activity {/*activity*/} + +In [past](/blog/2022/06/15/react-labs-what-we-have-been-working-on-june-2022#offscreen) [updates](/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024#offscreen-renamed-to-activity), we shared that we were researching an API to allow components to be visually hidden and deprioritized, preserving UI state with reduced performance costs relative to unmounting or hiding with CSS. + +We're now ready to share the API and how it works, so you can start testing it in experimental React versions. + +`` is a new component to hide and show parts of the UI: + +```js [[1, 1, "'visible'"], [2, 1, "'hidden'"]] + + + +``` + +When an Activity is visible it's rendered as normal. When an Activity is hidden it is unmounted, but will save it's state and continue to render at a lower priority than anything visible on screen. + +You can use `Activity` save state for parts of the UI the user isn't using, or pre-render parts that a user is likely to use next. + +Let's look at some examples improving the View Transition examples above. + + + +**Effects don’t mount when an Activity is hidden.** + +When an `` is `hidden`, Effects are unmounted. Conceptually, the component is unmounted, but React saves the state for later. + +In practice, this works as expected if you have followed the [You Might Not Need an Effect](/learn/you-might-not-need-an-effect) guide. To eagerly find problematic Effects, we recommend adding [``](/reference/react/StrictMode) which will eagerly perform Activity unmounts and mounts to catch any unexpected side effects. + + + +### Restoring state with Activity {/*restoring-state-with-activity*/} + +When a user navigates away from a page, it's common to stop rendering the old page: + +```js {6,7} +function App() { + const { url } = useRouter(); + + return ( + <> + {url === '/' && } + {url !== '/' &&
} + + ); +} +``` + +However, this means if the user goes back to the old page, all of the previous state is lost. For example, if the `` page has an `` field, when the user leaves the page the ` is unmouted, and all of the text they had typed is lost. + +Activity allows you to keep the state around as the user changes pages, so when they come back they can resume where they left off. This is done by wrapping part of the tree in `` and toggling the `mode`: + +```js {6-8} +function App() { + const { url } = useRouter(); + + return ( + <> + + + + {url !== '/' &&
} + + ); +} +``` + +With this change, we can improve on our View Transitons example above. Before, when you searched for a video, selected one, and returned, your search filter was lost. With Activity, your search filter is restored and you can pick up where you left off. + +Try searching for a video, selecting it, and clicking "back": + + + +```js src/App.js +import { unstable_ViewTransition as ViewTransition, unstable_Activity as Activity } from "react"; import Details from "./Details"; import Home from "./Home"; import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + return ( + // View Transitions know about Activity + + {/* Render Home in Activity so we don't lose state */} + + + + {url !== '/' &&
} + + ); +} +``` + +```js src/Details.js hidden +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { ChevronLeft } from "./Icons"; + +function VideoDetails({id}) { + // Animate from Suspense fallback to content + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js hidden +import { useId, useState, use, useDeferredValue, unstable_ViewTransition as ViewTransition } from "react";import { Video } from "./Videos";import Layout from "./Layout";import { fetchVideos } from "./data";import { IconSearch } from "./Icons"; + +function SearchList({searchText, videos}) { + // Activate with useDeferredValue ("when") + const deferredSearchText = useDeferredValue(searchText); + const filteredVideos = filterVideos(videos, deferredSearchText); + return ( +
+ {filteredVideos.length === 0 && ( +
No results
+ )} +
+ {filteredVideos.map((video) => ( + // Animate each item in list ("what") + + + ))} +
+
+ ); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(''); + + return ( + {count} Videos}> + + + + ); +} + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* No additional animations needed */ + + + + + + + + + +/* Previously defined animations below */ + + + + + + +/* Slide animations for Suspense the fallback down */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +### Pre-rendering with Activity {/*prerender-with-activity*/} + +Sometimes, you may want to prepare the next part of the UI a user is likely to use ahead of time, so it's ready by the time they are ready to use it. This is especially useful if the next route needs to suspend on data it needs to render, because you can help ensure the data is already fetched before the user navigates. + +For example, our app currently needs to suspend to load the data for each video when you select one. We can improve this by rendering all of the pages is a hidden `` until the user navigates: + +```js {2,5,8} + + + + + +
+ + +
+ + +``` + +With this update, if you select a video after 1 second, the content has time to pre-render and animates without the Suspense fallback: + + + +```js src/App.js +import { unstable_ViewTransition as ViewTransition, unstable_Activity as Activity, use } from "react"; import Details from "./Details"; import Home from "./Home"; import { useRouter } from "./router"; import {fetchVideos} from './data' + +export default function App() { + const { url } = useRouter(); + const videoId = url.split("/").pop(); + const videos = use(fetchVideos()); + + return ( + + {/* Render videos in Activity to pre-render them */} + {videos.map(({id}) => ( + +
+ + ))} + + + + + ); +} +``` + +```js src/Details.js hidden +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { ChevronLeft } from "./Icons"; + +function VideoDetails({id}) { + // Animate from Suspense fallback to content + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details({id}) { + const { url, navigateBack } = useRouter(); + const video = use(fetchVideo(id)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js hidden +import { useId, useState, use, useDeferredValue, unstable_ViewTransition as ViewTransition } from "react";import { Video } from "./Videos";import Layout from "./Layout";import { fetchVideos } from "./data";import { IconSearch } from "./Icons"; + +function SearchList({searchText, videos}) { + // Activate with useDeferredValue ("when") + const deferredSearchText = useDeferredValue(searchText); + const filteredVideos = filterVideos(videos, deferredSearchText); + return ( +
+ {filteredVideos.length === 0 && ( +
No results
+ )} +
+ {filteredVideos.map((video) => ( + // Animate each item in list ("what") + + + ))} +
+
+ ); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(''); + + return ( + {count} Videos}> + + + + ); +} + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* No additional animations needed */ + + + + + + + + + +/* Previously defined animations below */ + + + + + + +/* Slide animations for Suspense the fallback down */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +--- + +# Features in development {/*features-in-development*/} + +## React Performance Tracks {/*react-performance-tracks*/} + +We're working on a new set of custom tracks to performance profilers using browser APIs that [allow adding custom tracks](https://developer.chrome.com/docs/devtools/performance/extension) to provide more information about the performance of your React app. + +This feature is still in progress, so we're not ready to publish docs to fully release it as an experimental feature yet. You can get a sneak preview when using an experimental version of React, which will automatically see the performance tracks added to profiles: + +
+ + + + + + + + +
+ +There are a few known issues we plan to address such as performance, and the scheduler track not always "connecting" work across Suspended trees, so it's not quite ready to try. We're also still collecting feedback from early adopters to improve the design and usability of the tracks. + +Once we solve those issues, we'll publish experimental docs and share that it's ready to try. + +--- + +## Compiler IDE Extension {/*compiler-ide-extension*/} + +Earlier this week [we shared](/blog/2025/04/21/react-compiler-rc) the React Compiler release candidate, and we're working towards shipping the first SemVer stable version of the compiler in the coming months. + +We've also begun exploring ways to use the React Compiler to provide information that can improve understanding and debugging your code. One idea we've started exploring is a new experimental LSP-based React IDE extension powered by React Compiler, similar to the extension used in [Lauren Tan's React Conf talk](https://conf2024.react.dev/talks/5). + +Our idea is that we can use the compiler's static analysis to provide more information, suggestions, and optimization opportunities directly in your IDE. For example, we can provide diagnostics for code breaking the Rules of React, hovers to show if components and hooks were optimized by the compiler, or a CodeLens to see [automatically inserted Effect dependencies](/#automatic-effect-dependencies). + +The IDE extension is still an early exploration, but we'll share our progress in future updates. + +--- + +## Automatic Effect Dependencies {/*automatic-effect-dependencies*/} + +When we released hooks, we had three motivations: + +- **Sharing code between components**: hooks replaced patterns like render props and higher-order components to allow you to reuse stateful logic without changing your component hierarchy. +- **Think in terms of function, not lifecycles**: hooks let you split one component into smaller functions based on what pieces are related (such as setting up a subscription or fetching data), rather than forcing a split based on lifecycle methods. +- **Support ahead-of-time compilation**: hooks were designed to support ahead-of-time compilation with less pitfalls causing unintention de-optimizations caused by lifecycle methods, and limitation of classes. + +Since their release, hooks have been successful at *sharing code between components*. Hooks are now the favored way to share logic between components, and there are less use cases for render props and higher order components. Hooks have also been successful at supporting features like Fast Refresh that were not possible with class components. + +### Effects can be hard {/*effects-can-be-hard*/} + +Unfortunately, some hooks are still hard to think in terms of function instead of lifecycles. Effects specifically are still hard to understand and is the most common pain point we hear from developers. Last year, we spent a significant amount of time researching how effects were used, and how those use cases could be simplified and easier to understand. + +We found that often, the confusion is from using an Effect when you don't need to. The [You Probably Don't Need an Effect guide](/TODO), covers many cases for when Effects are not the right solution. However, even when an Effect is the right fit for a problem, Effects can still be harder to understand than class component lifecyles. + +We believe one of the reasons for confusion is the dependency array, which allows developers to think of effects from the _components_ perspective (like a lifecycle), instead of the _effects_ point of view (what the effect does). + +Let's look at an example [from the docs](/learn/lifecycle-of-reactive-effects#thinking-from-the-effects-perspective): + +```js +useEffect(() => { + // Your Effect connected to the room specified with roomId... + const connection = createConnection(serverUrl, roomId); + connection.connect(); + return () => { + // ...until it disconnected + connection.disconnect(); + }; +}, [roomId]); +``` + +Many users would read this code as "on mount, connect to the roomId. whenever `roomId` changes, disconnect to the old room and re-create the connection". However, this is thinking from the component's lifecycle perspective, which means you will need to think of every component lifecycle state to write the effect correctly. This can be difficult, so it's understandble that Effects seem harder than class lifecycles when using component perspective. + +### Effects without dependencies {/*effects-without-dependencies*/} + +Instaed, it's better to think from the Effect's perspective. The effect doesn't know about about the component lifecycles. It only describes how to start synchronization and how to stop it. When users think of Effects in this way, their Effects tend to be easier to write, and more resilient to being started and stopped as many times as it’s needed. + +We spent some time researching why Effects are thought of from the component perspective, and we think one of the resons is the dependency array. Since you have to write it, it's right there and in your face reminding you of what you're "reacting" to and baiting you into the mental model of 'do this when these values change'. + +When we released hooks, we knew we could make them easier to use with ahead-of-time compilation. With the React Compiler, you're now able to avoid writing `useCallback` and `useMemo` yourself in most cases. For Effects, the compiler can insert the dependencies for you: + +```js +useEffect(() => { + const connection = createConnection(serverUrl, roomId); + connection.connect(); + return () => { + connection.disconnect(); + }; +}); // compiler inserted dependencies. +``` + +With this code, the React Compiler can infer the dependencies for you and insert them automatically so you don't need to see or write them. With features like the IDE exension and `useEffectEvent`, we can provide a CodeLens to show you what the Compiler inserted for times you need to debug, or to optimize by removing a dependency. This helps reinforce the correct mental model for writing Effects, which can run at any time to synchronize your component or hook's state with something else + +Our hope is that automatically inserting dependencies is not only easier to write, but that it also makes them easier to understand by forcing you to think in terms of what the effect does, and not in component lifecycles. + +--- + +## Fragment Refs {/*fragment-refs*/} + +Many DOM APIs like those for event management, positioning, and focus are difficult to compose when writing with React. This often leads developers to reach for Effects, managing multiple Refs, or APIs like `findDOMNode` (removed in React 19). + +We are exploring adding refs to Fragments that would point to a group of DOM elements, rather than just a single element. Our hope is that this will simplify managing multiple children and make it easier to write composable React code when calling DOM APIs. + +Fragment refs are still being researched. We'll share more when we're closer to having the final API finished. + +--- + +## Gesture Animations {/*gesture-animations*/} + +We're also researching ways to enhance View Transitions to support gesture animations such as swiping to open a menu, or scroll through a photo carousel. + +Gestures present new challenges for a few reasons: + +- **Gestures are continuous**: as you swipe the animation is tied to your finger placement time, rather than triggering and running to completion. +- **Gestures don't complete**: when you release your finger gesture animations can run to completion, or revert to their original state (like when you only partially open a menu) depending on how far you go. +- **Gestures invert old and new**: while you're animating, you want the page you are animating from to stay "alive" and interactive. This inverts the browser View Transition model where the "old" state is a snapshot and the "new" state is the live DOM. + +We believe we’ve found an approach that works well and may introduce a new API for triggering gesture transitions. For now, we're focused on shipping ``, and will revisit gestures afterward. + +--- + +## Concurrent stores {/*concurrent-stores*/} + +When we released React 18 with concurrent rendering, we also released `useSyncExternalStore` so external store libraries that did not use React state or context could [support concurrent rendering](https://github.com/reactwg/react-18/discussions/70) by forcing a sync render when the store is updated. + +Using `useSyncExternalStore` comes at a cost though, since it forces bail out from concurrent features like transitions, and forces existing content to show Suspense fallbacks. + +Now that React 19 has shipped, we're re-visiting this problem space to create a primitive to fully support concurrent external stores with the `use` API: + +```js +const value = use(store); +``` + +Our goal is to allow external state to be read during render without tearing, and to work seamlessly with all of the concurrent features React offers. + +This research is still early. We'll share more, and what the new APIs will look like, when we're further along. + +--- + +_TODO: Thanks to [Dan Abramov](https://bsky.app/profile/danabra.mov), [Lauren Tan](https://bsky.app/profile/no.lol), [Jack Pope](https://jackpope.me), [Jason Bonta](https://threads.net/someextent), [Jordan Brown](https://github.com/jbrown215), [Jordan Eldredge](https://bsky.app/profile/capt.dev), and [Mofei Zhang](https://threads.net/z_mofei) for reviewing this post. diff --git a/src/content/blog/2025/04/23/react-labs-view-transitions-activity-and-more.md b/src/content/blog/2025/04/23/react-labs-view-transitions-activity-and-more.md new file mode 100644 index 000000000..be2a2d05b --- /dev/null +++ b/src/content/blog/2025/04/23/react-labs-view-transitions-activity-and-more.md @@ -0,0 +1,14358 @@ +--- +title: "React Labs: View Transitions, Activity, and more" +author: Ricky Hanlon +date: 2025/04/23 +description: In React Labs posts, we write about projects in active research and development. In this post, we're sharing two new experimental features that are ready to try today, and updates on other areas we're working on now. +--- + +April 23, 2025 by [Ricky Hanlon](https://twitter.com/rickhanlonii) + +--- + + + +In React Labs posts, we write about projects in active research and development. In this post, we're sharing two new experimental features that are ready to try today, and updates on other areas we're working on now. + + + + + + +React Conf 2025 is scheduled for October 7–8 in Henderson, Nevada! + +We're looking for speakers to help us create talks about the features covered in this post. If you're interested in speaking at ReactConf, [please apply here](https://forms.reform.app/react-conf/call-for-speakers/) (no talk proposal required). + +For more info on tickets, free streaming, sponsoring, and more, see [the React Conf website](https://conf.react.dev). + + + +Today, we're excited to release documentation for two new experimental features that are ready for testing: + +- [View Transitions](#view-transitions) +- [Activity](#activity) + +We're also sharing updates on new features currently in development: +- [React Performance Tracks](#react-performance-tracks) +- [Compiler IDE Extension](#compiler-ide-extension) +- [Automatic Effect Dependencies](#automatic-effect-dependencies) +- [Fragment Refs](#fragment-refs) +- [Concurrent Stores](#concurrent-stores) + +--- + +# New Experimental Features {/*new-experimental-features*/} + +View Transitions and Activity are now ready for testing in `react@experimental`. These features have been tested in production and are stable, but the final API may still change as we incorporate feedback. + +You can try them by upgrading React packages to the most recent experimental version: + +- `react@experimental` +- `react-dom@experimental` + +Read on to learn how to use these features in your app, or check out the newly published docs: + +- [``](/reference/react/ViewTransition): A component lets you activate an animation for a Transition. +- [`addTransitionType`](/reference/react/addTransitionType): A function that allows you to specify the cause of a Transition. +- [``](/reference/react/Activity): A component that lets you hide and show part of the UI. + +## View Transitions {/*view-transitions*/} + +React View Transitions are a new experimental feature that makes it easier to add animations to UI transitions in your app. Under-the-hood, these animations use the new [`startViewTransition`](https://developer.mozilla.org/en-US/docs/Web/API/Document/startViewTransition) API available in most modern browsers. + +To opt-in to animating an element, wrap it in the new `` component: + +```js +// "what" to animate. + +
animate me
+
+``` + +This new component lets you declaratively define "what" to animate when an animation is activated. + +You can define "when" to animate by using one of these three triggers for a View Transition: + +```js +// "when" to animate. + +// Transitions +startTransition(() => setState(...)); + +// Deferred Values +const deferred = useDeferredValue(value); + +// Suspense +}> +
Loading...
+
+``` + +By default, these animations use the [default CSS animations for View Transitions](https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API/Using#customizing_your_animations) applied (typically a smooth cross-fade). You can use [view transition pseudo-selectors](https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API/Using#the_view_transition_pseudo-element_tree) to define "how" the animation runs. For example, you can use `*` to change the default animation for all transitions: + +``` +// "how" to animate. +::view-transition-old(*) { + animation: 300ms ease-out fade-out; +} +::view-transition-new(*) { + animation: 300ms ease-in fade-in; +} +``` + +When the DOM updates due to an animation trigger—like `startTransition`, `useDeferredValue`, or a `Suspense` fallback switching to content—React will use [declarative heuristics](/reference/react/ViewTransition#viewtransition) to automatically determine which `` components to activate for the animation. The browser will then run the animation that's defined in CSS. + +If you're familiar with the browser's View Transition API and want to know how React supports it, check out [How does `` Work](/reference/react/ViewTransition#how-does-viewtransition-work) in the docs. + +In this post, let's take a look at a few examples of how to use View Transitions. + +We'll start with this app, which doesn't animate any of the following interactions: +- Click a video to view the details. +- Click "back" to go back to the feed. +- Type in the list to filter the videos. + + + +```js src/App.js active +import TalkDetails from './Details'; import Home from './Home'; import {useRouter} from './router'; + +export default function App() { + const {url} = useRouter(); + + // 🚩This version doesn't include any animations yet + return url === '/' ? : ; +} +``` + +```js src/Details.js +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + }> + + +
+
+ ); +} + +``` + +```js src/Home.js +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {heading} + {isPending && } +
+
+ +
+
{children}
+
+
+ ); +} +``` + +```js src/LikeButton.js +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js +import { useState } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Thumbnail({ video, children }) { + return ( + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js +import { + useState, + createContext, + use, + useTransition, + useLayoutEffect, + useEffect, +} from "react"; + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +export function Router({ children }) { + const [routerState, setRouterState] = useState({ + pendingNav: () => {}, + url: document.location.pathname, + }); + const [isPending, startTransition] = useTransition(); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + function navigate(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + function navigateBack(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} +``` + +```css src/styles.css +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + +
+ + + +#### View Transitions do not replace CSS and JS driven animations {/*view-transitions-do-not-replace-css-and-js-driven-animations*/} + +View Transitions are meant to be used for UI transitions such as navigation, expanding, opening, or re-ordering. They are not meant to replace all the animations in your app. + +In our example app above, notice that there are already animations when you click the "like" button and the Suspense fallback glimmer. These are good use cases for CSS animations because they are animating a specific element. + + + +### Animating navigations {/*animating-navigations*/} + +Our app includes a Suspense-enabled router, with [page transitions already marked as Transitions](/reference/react/useTransition#building-a-suspense-enabled-router), which means navigations are performed with `startTransition`: + +```js +function navigate(url) { + startTransition(() => { + go(url); + }); +} +``` + +`startTransition` is a View Transition trigger, so we can add `` to animate between pages: + +```js +// "what" to animate + + {url === '/' ? : } + +``` + +When the `url` changes, the `` and new route are rendered. Since the `` was updated inside of `startTransition`, the `` is activated for an animation. + + +By default, View Transitions include the browser default cross-fade animation. Adding this to our example, we now have a cross-fade whenever we navigate between pages: + + + +```js src/App.js active +import {unstable_ViewTransition as ViewTransition} from 'react'; import Details from './Details'; import Home from './Home'; import {useRouter} from './router'; + +export default function App() { + const {url} = useRouter(); + + // Use ViewTransition to animate between pages. + // No additional CSS needed by default. + return ( + + {url === '/' ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + }> + + +
+
+ ); +} + +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js +import {unstable_ViewTransition as ViewTransition} from 'react'; import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + + return ( +
+
+
+ {heading} + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Thumbnail({ video, children }) { + return ( + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js +import {useState, createContext,use,useTransition,useLayoutEffect,useEffect} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + + function navigate(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + + + + const [routerState, setRouterState] = useState({ + pendingNav: () => {}, + url: document.location.pathname, + }); + + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + + function navigateBack(url) { + startTransition(() => { + go(url); + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +Since our router already updates the route using `startTransition`, this one line change to add `` activates with the default cross-fade animation. + +If you're curious how this works, see the docs for [How does `` work?](/reference/react/ViewTransition#how-does-viewtransition-work) + + + +#### Opting out of `` animations {/*opting-out-of-viewtransition-animations*/} + +In this example, we're wrapping the root of the app in `` for simplicity, but this means that all transitions in the app will be animated, which can lead to unexpected animations. + +To fix, we're wrapping route children with `"none"` so each page can control it's own animation: + +```js +// Layout.js + + {children} + +``` + +In practice, navigations should be done via "enter" and "exit" props, or by using Transition Types. + + + +### Customizing animations {/*customizing-animations*/} + +By default, `` includes the default cross-fade from the browser. + +To customize animations, you can provide props to the `` component to specify which animations to use, based on [how the `` activates](/reference/react/ViewTransition#props). + +For example, we can slow down the `default` cross fade animation: + +```js + + + +``` + +And define `slow-fade` in CSS using [view transition classes](/reference/react/ViewTransition#view-transition-classes): + +```css +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +Now, the cross fade is slower: + + + +```js src/App.js active +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Define a default animation of .slow-fade. + // See animations.css for the animation definiton. + return ( + + {url === '/' ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + }> + + +
+
+ ); +} + +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + + return ( +
+
+
+ {heading} + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Thumbnail({ video, children }) { + return ( + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import { + useState, + createContext, + use, + useTransition, + useLayoutEffect, + useEffect, +} from "react"; + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +export function Router({ children }) { + const [routerState, setRouterState] = useState({ + pendingNav: () => {}, + url: document.location.pathname, + }); + const [isPending, startTransition] = useTransition(); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + function navigate(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + function navigateBack(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* Define .slow-fade using view transition classes */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +See [Styling View Transitions](/reference/react/ViewTransition#styling-view-transitions) for a full guide on styling ``. + +### Shared Element Transitions {/*shared-element-transitions*/} + +When two pages include the same element, often you want to animate it from one page to the next. + +To do this you can add a unique `name` to the ``: + +```js + + + +``` + +Now the video thumbnail animates between the two pages: + + + +```js src/App.js +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Keeping our default slow-fade. + // This allows the content not in the shared + // element transition to cross-fade. + return ( + + {url === "/" ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + }> + + +
+
+ ); +} + +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + + return ( +
+
+
+ {heading} + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js active +import { useState, unstable_ViewTransition as ViewTransition } from "react"; import LikeButton from "./LikeButton"; import { useRouter } from "./router"; import { PauseIcon, PlayIcon } from "./Icons"; import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import { + useState, + createContext, + use, + useTransition, + useLayoutEffect, + useEffect, +} from "react"; + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +export function Router({ children }) { + const [routerState, setRouterState] = useState({ + pendingNav: () => {}, + url: document.location.pathname, + }); + const [isPending, startTransition] = useTransition(); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + function navigate(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + function navigateBack(url) { + // Update router state in transition. + startTransition(() => { + go(url); + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* No additional animations needed */ + + + + + + + + + +/* Previously defined animations below */ + + + + + +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +By default, React automatically generates a unique `name` for each element activated for a transition (see [How does `` work](/reference/react/ViewTransition#how-does-viewtransition-work)). When React sees a transition where a `` with a `name` is removed and a new `` with the same `name` is added, it will activate a shared element transition. + +For more info, see the docs for [Animating a Shared Element](/reference/react/ViewTransition#animating-a-shared-element). + +### Animating based on cause {/*animating-based-on-cause*/} + +Sometimes, you may want elements to animate differently based on how it was triggered. For this use case, we've added a new API called `addTransitionType` to specify the cause of a transition: + +```js {4,11} +function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); +} +function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); +} +``` + +With transition types, you can provide custom animations via props to ``. Let's add a shared element transition to the header for "6 Videos" and "Back": + +```js {4,5} + + {heading} + +``` + +Here we pass a `share` prop to define how to animate based on the transition type. When the share transition activates from `nav-forward`, the view transition class `slide-forward` is applied. When it's from `nav-back`, the `slide-back` animation is activated. Let's define these animations in CSS: + +```css +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: ... +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: ... +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: ... +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: ... +} +``` + +Now we can animate the header along with thumbnail based on navigation type: + + + +```js src/App.js hidden +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Keeping our default slow-fade. + return ( + + {url === "/" ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { use, Suspense } from "react"; +import { ChevronLeft } from "./Icons"; + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + }> + + +
+
+ ); +} + +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js active +import {unstable_ViewTransition as ViewTransition} from 'react'; import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* New keyframes to support our animations above. */ +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + +/* Previously defined animations. */ + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +### Animating Suspense Boundaries {/*animating-suspense-boundaries*/} + +Suspense will also activate View Transitions. + +To animate the fallback to content, we can wrap `Suspense` with ``: + +```js + + }> + + + +``` + +By adding this, the fallback will cross-fade into the content. Click a video and see the video info animate in: + + + +```js src/App.js hidden +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Default slow-fade animation. + return ( + + {url === "/" ? :
} + + ); +} +``` + +```js src/Details.js active +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; import { fetchVideo, fetchVideoDetails } from "./data"; import { Thumbnail, VideoControls } from "./Videos"; import { useRouter } from "./router"; import Layout from "./Layout"; import { ChevronLeft } from "./Icons"; + +function VideoDetails({ id }) { + // Cross-fade the fallback to content. + return ( + + }> + + + + ); +} + +function VideoInfoFallback() { + return ( +
+
+
+
+ ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( +
+

{details.title}

+

{details.description}

+
+ ); +} +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* Slide the fallback down */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +/* Slide the content up */ +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Define the new keyframes */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +/* Previously defined animations below */ + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +We can also provide custom animatons using an `exit` on the fallback, and `enter` on the content: + +```js {3,8} + + + + } +> + + + + +``` + +Here's how we'll define `slide-down` and `slide-up` with CSS: + +```css {1, 6} +::view-transition-old(.slide-down) { + /* Slide the fallback down */ + animation: ...; +} + +::view-transition-new(.slide-up) { + /* Slide the content up */ + animation: ...; +} +``` + +Now, the Suspense content replaces the fallback with a sliding animation: + + + +```js src/App.js hidden +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Default slow-fade animation. + return ( + + {url === "/" ? :
} + + ); +} +``` + +```js src/Details.js active +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; import { fetchVideo, fetchVideoDetails } from "./data"; import { Thumbnail, VideoControls } from "./Videos"; import { useRouter } from "./router"; import Layout from "./Layout"; import { ChevronLeft } from "./Icons"; + +function VideoDetails({ id }) { + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js hidden +import { Video } from "./Videos"; +import Layout from "./Layout"; +import { fetchVideos } from "./data"; +import { useId, useState, use } from "react"; +import { IconSearch } from "./Icons"; + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(""); + const foundVideos = filterVideos(videos, searchText); + return ( + {count} Videos}> + +
+ {foundVideos.length === 0 && ( +
No results
+ )} +
+ {foundVideos.map((video) => ( +
+
+
+ ); +} + +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* Slide the fallback down */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +/* Slide the content up */ +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Define the new keyframes */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +/* Previously defined animations below */ + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + + +### Animating Lists {/*animating-lists*/} + +You can also use `` to animate lists of items as they re-order, like in a searchable list of items: + +```js {3,5} +
+ {filteredVideos.map((video) => ( + + + ))} +
+``` + +To activate the ViewTransition, we can use `useDeferredValue`: + +```js {2} +const [searchText, setSearchText] = useState(''); +const deferredSearchText = useDeferredValue(searchText); +const filteredVideos = filterVideos(videos, deferredSearchText); +``` + +Now the items animate as you type in the search bar: + + + +```js src/App.js hidden +import { unstable_ViewTransition as ViewTransition } from "react"; +import Details from "./Details"; +import Home from "./Home"; +import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + // Default slow-fade animation. + return ( + + {url === "/" ? :
} + + ); +} +``` + +```js src/Details.js hidden +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { ChevronLeft } from "./Icons"; + +function VideoDetails({id}) { + // Animate from Suspense fallback to content + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js +import { useId, useState, use, useDeferredValue, unstable_ViewTransition as ViewTransition } from "react";import { Video } from "./Videos";import Layout from "./Layout";import { fetchVideos } from "./data";import { IconSearch } from "./Icons"; + +function SearchList({searchText, videos}) { + // Activate with useDeferredValue ("when") + const deferredSearchText = useDeferredValue(searchText); + const filteredVideos = filterVideos(videos, deferredSearchText); + return ( +
+
+ {filteredVideos.map((video) => ( + // Animate each item in list ("what") + + + ))} +
+ {filteredVideos.length === 0 && ( +
No results
+ )} +
+ ); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(''); + + return ( + {count} Videos}> + + + + ); +} + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; +import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* No additional animations needed */ + + + + + + + + + +/* Previously defined animations below */ + + + + + + +/* Slide animation for Suspense */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +### Final result {/*final-result*/} + +By adding a few `` components and a few lines of CSS, we were able to add all the animations above into the final result. + +We're excited about View Transitions and think they will level up the apps you're able to build. They're ready to start trying today in the experimental channel of React releases. + +Let's remove the slow fade, and take a look at the final result: + + + +```js src/App.js +import {unstable_ViewTransition as ViewTransition} from 'react'; import Details from './Details'; import Home from './Home'; import {useRouter} from './router'; + +export default function App() { + const {url} = useRouter(); + + // Animate with a cross fade between pages. + return ( + + {url === '/' ? :
} + + ); +} +``` + +```js src/Details.js +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; import { fetchVideo, fetchVideoDetails } from "./data"; import { Thumbnail, VideoControls } from "./Videos"; import { useRouter } from "./router"; import Layout from "./Layout"; import { ChevronLeft } from "./Icons"; + +function VideoDetails({id}) { + // Animate from Suspense fallback to content + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js +import { useId, useState, use, useDeferredValue, unstable_ViewTransition as ViewTransition } from "react";import { Video } from "./Videos";import Layout from "./Layout";import { fetchVideos } from "./data";import { IconSearch } from "./Icons"; + +function SearchList({searchText, videos}) { + // Activate with useDeferredValue ("when") + const deferredSearchText = useDeferredValue(searchText); + const filteredVideos = filterVideos(videos, deferredSearchText); + return ( +
+
+ {filteredVideos.map((video) => ( + // Animate each item in list ("what") + + + ))} +
+ {filteredVideos.length === 0 && ( +
No results
+ )} +
+ ); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(''); + + return ( + {count} Videos}> + + + + ); +} + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js +import {unstable_ViewTransition as ViewTransition} from 'react'; import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js +import { useState, unstable_ViewTransition as ViewTransition } from "react"; import LikeButton from "./LikeButton"; import { useRouter } from "./router"; import { PauseIcon, PlayIcon } from "./Icons"; import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + return ( + + + + ); +} + + + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* Slide animations for Suspense the fallback down */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +If you're curious to know more about how they work, check out [How Does `` Work](/reference/react/ViewTransition#how-does-viewtransition-work) in the docs. + +_For more background on how we built View Transitions, see: [#31975](https://github.com/facebook/react/pull/31975), [#32105](https://github.com/facebook/react/pull/32105), [#32041](https://github.com/facebook/react/pull/32041), [#32734](https://github.com/facebook/react/pull/32734), [#32797](https://github.com/facebook/react/pull/32797) [#31999](https://github.com/facebook/react/pull/31999), [#32031](https://github.com/facebook/react/pull/32031), [#32050](https://github.com/facebook/react/pull/32050), [#32820](https://github.com/facebook/react/pull/32820), [#32029](https://github.com/facebook/react/pull/32029), [#32028](https://github.com/facebook/react/pull/32028), and [#32038](https://github.com/facebook/react/pull/32038) by [@sebmarkbage](https://twitter.com/sebmarkbage) (thanks Seb!)._ + +--- + +## Activity {/*activity*/} + +In [past](/blog/2022/06/15/react-labs-what-we-have-been-working-on-june-2022#offscreen) [updates](/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024#offscreen-renamed-to-activity), we shared that we were researching an API to allow components to be visually hidden and deprioritized, preserving UI state with reduced performance costs relative to unmounting or hiding with CSS. + +We're now ready to share the API and how it works, so you can start testing it in experimental React versions. + +`` is a new component to hide and show parts of the UI: + +```js [[1, 1, "'visible'"], [2, 1, "'hidden'"]] + + + +``` + +When an Activity is visible it's rendered as normal. When an Activity is hidden it is unmounted, but will save its state and continue to render at a lower priority than anything visible on screen. + +You can use `Activity` to save state for parts of the UI the user isn't using, or pre-render parts that a user is likely to use next. + +Let's look at some examples improving the View Transition examples above. + + + +**Effects don’t mount when an Activity is hidden.** + +When an `` is `hidden`, Effects are unmounted. Conceptually, the component is unmounted, but React saves the state for later. + +In practice, this works as expected if you have followed the [You Might Not Need an Effect](/learn/you-might-not-need-an-effect) guide. To eagerly find problematic Effects, we recommend adding [``](/reference/react/StrictMode) which will eagerly perform Activity unmounts and mounts to catch any unexpected side effects. + + + +### Restoring state with Activity {/*restoring-state-with-activity*/} + +When a user navigates away from a page, it's common to stop rendering the old page: + +```js {6,7} +function App() { + const { url } = useRouter(); + + return ( + <> + {url === '/' && } + {url !== '/' &&
} + + ); +} +``` + +However, this means if the user goes back to the old page, all of the previous state is lost. For example, if the `` page has an `` field, when the user leaves the page the ` is unmounted, and all of the text they had typed is lost. + +Activity allows you to keep the state around as the user changes pages, so when they come back they can resume where they left off. This is done by wrapping part of the tree in `` and toggling the `mode`: + +```js {6-8} +function App() { + const { url } = useRouter(); + + return ( + <> + + + + {url !== '/' &&
} + + ); +} +``` + +With this change, we can improve on our View Transitons example above. Before, when you searched for a video, selected one, and returned, your search filter was lost. With Activity, your search filter is restored and you can pick up where you left off. + +Try searching for a video, selecting it, and clicking "back": + + + +```js src/App.js +import { unstable_ViewTransition as ViewTransition, unstable_Activity as Activity } from "react"; import Details from "./Details"; import Home from "./Home"; import { useRouter } from "./router"; + +export default function App() { + const { url } = useRouter(); + + return ( + // View Transitions know about Activity + + {/* Render Home in Activity so we don't lose state */} + + + + {url !== '/' &&
} + + ); +} +``` + +```js src/Details.js hidden +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; +import { fetchVideo, fetchVideoDetails } from "./data"; +import { Thumbnail, VideoControls } from "./Videos"; +import { useRouter } from "./router"; +import Layout from "./Layout"; +import { ChevronLeft } from "./Icons"; + +function VideoDetails({id}) { + // Animate from Suspense fallback to content + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details() { + const { url, navigateBack } = useRouter(); + const videoId = url.split("/").pop(); + const video = use(fetchVideo(videoId)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js hidden +import { useId, useState, use, useDeferredValue, unstable_ViewTransition as ViewTransition } from "react";import { Video } from "./Videos";import Layout from "./Layout";import { fetchVideos } from "./data";import { IconSearch } from "./Icons"; + +function SearchList({searchText, videos}) { + // Activate with useDeferredValue ("when") + const deferredSearchText = useDeferredValue(searchText); + const filteredVideos = filterVideos(videos, deferredSearchText); + return ( +
+ {filteredVideos.length === 0 && ( +
No results
+ )} +
+ {filteredVideos.map((video) => ( + // Animate each item in list ("what") + + + ))} +
+
+ ); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(''); + + return ( + {count} Videos}> + + + + ); +} + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* No additional animations needed */ + + + + + + + + + +/* Previously defined animations below */ + + + + + + +/* Slide animations for Suspense the fallback down */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +### Pre-rendering with Activity {/*prerender-with-activity*/} + +Sometimes, you may want to prepare the next part of the UI a user is likely to use ahead of time, so it's ready by the time they are ready to use it. This is especially useful if the next route needs to suspend on data it needs to render, because you can help ensure the data is already fetched before the user navigates. + +For example, our app currently needs to suspend to load the data for each video when you select one. We can improve this by rendering all of the pages in a hidden `` until the user navigates: + +```js {2,5,8} + + + + + +
+ + +
+ + +``` + +With this update, if the content on the next page has time to pre-render, it will animate in without the Suspense fallback. Click a video, and notice that the video title and description on the Details page render immediately, without a fallback: + + + +```js src/App.js +import { unstable_ViewTransition as ViewTransition, unstable_Activity as Activity, use } from "react"; import Details from "./Details"; import Home from "./Home"; import { useRouter } from "./router"; import {fetchVideos} from './data' + +export default function App() { + const { url } = useRouter(); + const videoId = url.split("/").pop(); + const videos = use(fetchVideos()); + + return ( + + {/* Render videos in Activity to pre-render them */} + {videos.map(({id}) => ( + +
+ + ))} + + + + + ); +} +``` + +```js src/Details.js +import { use, Suspense, unstable_ViewTransition as ViewTransition } from "react"; import { fetchVideo, fetchVideoDetails } from "./data"; import { Thumbnail, VideoControls } from "./Videos"; import { useRouter } from "./router"; import Layout from "./Layout"; import { ChevronLeft } from "./Icons"; + +function VideoDetails({id}) { + // Animate from Suspense fallback to content. + // If this is pre-rendered then the fallback + // won't need to show. + return ( + + + + } + > + {/* Animate the content up */} + + + + + ); +} + +function VideoInfoFallback() { + return ( + <> +
+
+ + ); +} + +export default function Details({id}) { + const { url, navigateBack } = useRouter(); + const video = use(fetchVideo(id)); + + return ( + { + navigateBack("/"); + }} + > + Back + + } + > +
+ + + + +
+
+ ); +} + +function VideoInfo({ id }) { + const details = use(fetchVideoDetails(id)); + return ( + <> +

{details.title}

+

{details.description}

+ + ); +} +``` + +```js src/Home.js hidden +import { useId, useState, use, useDeferredValue, unstable_ViewTransition as ViewTransition } from "react";import { Video } from "./Videos";import Layout from "./Layout";import { fetchVideos } from "./data";import { IconSearch } from "./Icons"; + +function SearchList({searchText, videos}) { + // Activate with useDeferredValue ("when") + const deferredSearchText = useDeferredValue(searchText); + const filteredVideos = filterVideos(videos, deferredSearchText); + return ( +
+ {filteredVideos.length === 0 && ( +
No results
+ )} +
+ {filteredVideos.map((video) => ( + // Animate each item in list ("what") + + + ))} +
+
+ ); +} + +export default function Home() { + const videos = use(fetchVideos()); + const count = videos.length; + const [searchText, setSearchText] = useState(''); + + return ( + {count} Videos}> + + + + ); +} + +function SearchInput({ value, onChange }) { + const id = useId(); + return ( +
e.preventDefault()}> + +
+
+ +
+ onChange(e.target.value)} + /> +
+
+ ); +} + +function filterVideos(videos, query) { + const keywords = query + .toLowerCase() + .split(" ") + .filter((s) => s !== ""); + if (keywords.length === 0) { + return videos; + } + return videos.filter((video) => { + const words = (video.title + " " + video.description) + .toLowerCase() + .split(" "); + return keywords.every((kw) => words.some((w) => w.includes(kw))); + }); +} +``` + +```js src/Icons.js hidden +export function ChevronLeft() { + return ( + + + + + + + ); +} + +export function PauseIcon() { + return ( + + + + ); +} + +export function PlayIcon() { + return ( + + + + ); +} +export function Heart({liked, animate}) { + return ( + <> + + + + + + {liked ? ( + + ) : ( + + )} + + + ); +} + +export function IconSearch(props) { + return ( + + + + ); +} +``` + +```js src/Layout.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; import { useIsNavPending } from "./router"; + +export default function Page({ heading, children }) { + const isPending = useIsNavPending(); + return ( +
+
+
+ {/* Custom classes based on transition type. */} + + {heading} + + {isPending && } +
+
+ {/* Opt-out of ViewTransition for the content. */} + {/* Content can define it's own ViewTransition. */} + +
+
{children}
+
+
+
+ ); +} +``` + +```js src/LikeButton.js hidden +import {useState} from 'react'; +import {Heart} from './Icons'; + +// A hack since we don't actually have a backend. +// Unlike local state, this survives videos being filtered. +const likedVideos = new Set(); + +export default function LikeButton({video}) { + const [isLiked, setIsLiked] = useState(() => likedVideos.has(video.id)); + const [animate, setAnimate] = useState(false); + return ( + + ); +} +``` + +```js src/Videos.js hidden +import { useState, unstable_ViewTransition as ViewTransition } from "react"; +import LikeButton from "./LikeButton"; +import { useRouter } from "./router"; +import { PauseIcon, PlayIcon } from "./Icons"; +import { startTransition } from "react"; + +export function Thumbnail({ video, children }) { + // Add a name to animate with a shared element transition. + // This uses the default animation, no additional css needed. + return ( + + + + ); +} + +export function VideoControls() { + const [isPlaying, setIsPlaying] = useState(false); + + return ( + + startTransition(() => { + setIsPlaying((p) => !p); + }) + } + > + {isPlaying ? : } + + ); +} + +export function Video({ video }) { + const { navigate } = useRouter(); + + return ( +
+
{ + e.preventDefault(); + navigate(`/video/${video.id}`); + }} + > + + +
+
{video.title}
+
{video.description}
+
+
+ +
+ ); +} +``` + + +```js src/data.js hidden +const videos = [ + { + id: '1', + title: 'First video', + description: 'Video description', + image: 'blue', + }, + { + id: '2', + title: 'Second video', + description: 'Video description', + image: 'red', + }, + { + id: '3', + title: 'Third video', + description: 'Video description', + image: 'green', + }, + { + id: '4', + title: 'Fourth video', + description: 'Video description', + image: 'purple', + }, + { + id: '5', + title: 'Fifth video', + description: 'Video description', + image: 'yellow', + }, + { + id: '6', + title: 'Sixth video', + description: 'Video description', + image: 'gray', + }, +]; + +let videosCache = new Map(); +let videoCache = new Map(); +let videoDetailsCache = new Map(); +const VIDEO_DELAY = 1; +const VIDEO_DETAILS_DELAY = 1000; +export function fetchVideos() { + if (videosCache.has(0)) { + return videosCache.get(0); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos); + }, VIDEO_DELAY); + }); + videosCache.set(0, promise); + return promise; +} + +export function fetchVideo(id) { + if (videoCache.has(id)) { + return videoCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DELAY); + }); + videoCache.set(id, promise); + return promise; +} + +export function fetchVideoDetails(id) { + if (videoDetailsCache.has(id)) { + return videoDetailsCache.get(id); + } + const promise = new Promise((resolve) => { + setTimeout(() => { + resolve(videos.find((video) => video.id === id)); + }, VIDEO_DETAILS_DELAY); + }); + videoDetailsCache.set(id, promise); + return promise; +} +``` + +```js src/router.js hidden +import {useState, createContext, use, useTransition, useLayoutEffect, useEffect, unstable_addTransitionType as addTransitionType} from "react"; + +export function Router({ children }) { + const [isPending, startTransition] = useTransition(); + const [routerState, setRouterState] = useState({pendingNav: () => {}, url: document.location.pathname}); + function navigate(url) { + startTransition(() => { + // Transition type for the cause "nav forward" + addTransitionType('nav-forward'); + go(url); + }); + } + function navigateBack(url) { + startTransition(() => { + // Transition type for the cause "nav backward" + addTransitionType('nav-back'); + go(url); + }); + } + + function go(url) { + setRouterState({ + url, + pendingNav() { + window.history.pushState({}, "", url); + }, + }); + } + + useEffect(() => { + function handlePopState() { + // This should not animate because restoration has to be synchronous. + // Even though it's a transition. + startTransition(() => { + setRouterState({ + url: document.location.pathname + document.location.search, + pendingNav() { + // Noop. URL has already updated. + }, + }); + }); + } + window.addEventListener("popstate", handlePopState); + return () => { + window.removeEventListener("popstate", handlePopState); + }; + }, []); + const pendingNav = routerState.pendingNav; + useLayoutEffect(() => { + pendingNav(); + }, [pendingNav]); + + return ( + + {children} + + ); +} + +const RouterContext = createContext({ url: "/", params: {} }); + +export function useRouter() { + return use(RouterContext); +} + +export function useIsNavPending() { + return use(RouterContext).isPending; +} + +``` + +```css src/styles.css hidden +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Rg.woff2) format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Md.woff2) format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: Optimistic Text; + src: url(https://react.dev/fonts/Optimistic_Text_W_Bd.woff2) format("woff2"); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +* { + box-sizing: border-box; +} + +html { + background-image: url(https://react.dev/images/meta-gradient-dark.png); + background-size: 100%; + background-position: -100%; + background-color: rgb(64 71 86); + background-repeat: no-repeat; + height: 100%; + width: 100%; +} + +body { + font-family: Optimistic Text, -apple-system, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + padding: 10px 0 10px 0; + margin: 0; + display: flex; + justify-content: center; +} + +#root { + flex: 1 1; + height: auto; + background-color: #fff; + border-radius: 10px; + max-width: 450px; + min-height: 600px; + padding-bottom: 10px; +} + +h1 { + margin-top: 0; + font-size: 22px; +} + +h2 { + margin-top: 0; + font-size: 20px; +} + +h3 { + margin-top: 0; + font-size: 18px; +} + +h4 { + margin-top: 0; + font-size: 16px; +} + +h5 { + margin-top: 0; + font-size: 14px; +} + +h6 { + margin-top: 0; + font-size: 12px; +} + +code { + font-size: 1.2em; +} + +ul { + padding-inline-start: 20px; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.absolute { + position: absolute; +} + +.overflow-visible { + overflow: visible; +} + +.visible { + overflow: visible; +} + +.fit { + width: fit-content; +} + + +/* Layout */ +.page { + display: flex; + flex-direction: column; + height: 100%; +} + +.top-hero { + height: 200px; + display: flex; + justify-content: center; + align-items: center; + background-image: conic-gradient( + from 90deg at -10% 100%, + #2b303b 0deg, + #2b303b 90deg, + #16181d 1turn + ); +} + +.bottom { + flex: 1; + overflow: auto; +} + +.top-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0; + padding: 0 12px; + top: 0; + width: 100%; + height: 44px; + color: #23272f; + font-weight: 700; + font-size: 20px; + z-index: 100; + cursor: default; +} + +.content { + padding: 0 12px; + margin-top: 4px; +} + + +.loader { + color: #23272f; + font-size: 3px; + width: 1em; + margin-right: 18px; + height: 1em; + border-radius: 50%; + position: relative; + text-indent: -9999em; + animation: loading-spinner 1.3s infinite linear; + animation-delay: 200ms; + transform: translateZ(0); +} + +@keyframes loading-spinner { + 0%, + 100% { + box-shadow: 0 -3em 0 0.2em, + 2em -2em 0 0em, 3em 0 0 -1em, + 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 0; + } + 12.5% { + box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, + 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 25% { + box-shadow: 0 -3em 0 -0.5em, + 2em -2em 0 0, 3em 0 0 0.2em, + 2em 2em 0 0, 0 3em 0 -1em, + -2em 2em 0 -1em, -3em 0 0 -1em, + -2em -2em 0 -1em; + } + 37.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, + -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 50% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, + -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em; + } + 62.5% { + box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, + -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em; + } + 75% { + box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, + 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0; + } + 87.5% { + box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, + 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, + -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em; + } +} + +/* LikeButton */ +.like-button { + outline-offset: 2px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + border-radius: 9999px; + border: none; + outline: none 2px; + color: #5e687e; + background: none; +} + +.like-button:focus { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); +} + +.like-button:active { + color: #a6423a; + background-color: rgba(166, 66, 58, .05); + transform: scaleX(0.95) scaleY(0.95); +} + +.like-button:hover { + background-color: #f6f7f9; +} + +.like-button.liked { + color: #a6423a; +} + +/* Icons */ +@keyframes circle { + 0% { + transform: scale(0); + stroke-width: 16px; + } + + 50% { + transform: scale(.5); + stroke-width: 16px; + } + + to { + transform: scale(1); + stroke-width: 0; + } +} + +.circle { + color: rgba(166, 66, 58, .5); + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4,0,.2,1); +} + +.circle.liked.animate { + animation: circle .3s forwards; +} + +.heart { + width: 1.5rem; + height: 1.5rem; +} + +.heart.liked { + transform-origin: center; + transition-property: all; + transition-duration: .15s; + transition-timing-function: cubic-bezier(.4, 0, .2, 1); +} + +.heart.liked.animate { + animation: scale .35s ease-in-out forwards; +} + +.control-icon { + color: hsla(0, 0%, 100%, .5); + filter: drop-shadow(0 20px 13px rgba(0, 0, 0, .03)) drop-shadow(0 8px 5px rgba(0, 0, 0, .08)); +} + +.chevron-left { + margin-top: 2px; + rotate: 90deg; +} + + +/* Video */ +.thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 8rem; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.thumbnail.blue { + background-image: conic-gradient(at top right, #c76a15, #087ea4, #2b3491); +} + +.thumbnail.red { + background-image: conic-gradient(at top right, #c76a15, #a6423a, #2b3491); +} + +.thumbnail.green { + background-image: conic-gradient(at top right, #c76a15, #388f7f, #2b3491); +} + +.thumbnail.purple { + background-image: conic-gradient(at top right, #c76a15, #575fb7, #2b3491); +} + +.thumbnail.yellow { + background-image: conic-gradient(at top right, #c76a15, #FABD62, #2b3491); +} + +.thumbnail.gray { + background-image: conic-gradient(at top right, #c76a15, #4E5769, #2b3491); +} + +.video { + display: flex; + flex-direction: row; + gap: 0.75rem; + align-items: center; +} + +.video .link { + display: flex; + flex-direction: row; + flex: 1 1 0; + gap: 0.125rem; + outline-offset: 4px; + cursor: pointer; +} + +.video .info { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 8px; + gap: 0.125rem; +} + +.video .info:hover { + text-decoration: underline; +} + +.video-title { + font-size: 15px; + line-height: 1.25; + font-weight: 700; + color: #23272f; +} + +.video-description { + color: #5e687e; + font-size: 13px; +} + +/* Details */ +.details .thumbnail { + position: relative; + aspect-ratio: 16 / 9; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 0.5rem; + outline-offset: 2px; + width: 100%; + vertical-align: middle; + background-color: #ffffff; + background-size: cover; + user-select: none; +} + +.video-details-title { + margin-top: 8px; +} + +.video-details-speaker { + display: flex; + gap: 8px; + margin-top: 10px +} + +.back { + display: flex; + align-items: center; + margin-left: -5px; + cursor: pointer; +} + +.back:hover { + text-decoration: underline; +} + +.info-title { + font-size: 1.5rem; + font-weight: 700; + line-height: 1.25; + margin: 8px 0 0 0 ; +} + +.info-description { + margin: 8px 0 0 0; +} + +.controls { + cursor: pointer; +} + +.fallback { + background: #f6f7f8 linear-gradient(to right, #e6e6e6 5%, #cccccc 25%, #e6e6e6 35%) no-repeat; + background-size: 800px 104px; + display: block; + line-height: 1.25; + margin: 8px 0 0 0; + border-radius: 5px; + overflow: hidden; + + animation: 1s linear 1s infinite shimmer; + animation-delay: 300ms; + animation-duration: 1s; + animation-fill-mode: forwards; + animation-iteration-count: infinite; + animation-name: shimmer; + animation-timing-function: linear; +} + + +.fallback.title { + width: 130px; + height: 30px; + +} + +.fallback.description { + width: 150px; + height: 21px; +} + +@keyframes shimmer { + 0% { + background-position: -468px 0; + } + + 100% { + background-position: 468px 0; + } +} + +.search { + margin-bottom: 10px; +} +.search-input { + width: 100%; + position: relative; +} + +.search-icon { + position: absolute; + top: 0; + bottom: 0; + inset-inline-start: 0; + display: flex; + align-items: center; + padding-inline-start: 1rem; + pointer-events: none; + color: #99a1b3; +} + +.search-input input { + display: flex; + padding-inline-start: 2.75rem; + padding-top: 10px; + padding-bottom: 10px; + width: 100%; + text-align: start; + background-color: rgb(235 236 240); + outline: 2px solid transparent; + cursor: pointer; + border: none; + align-items: center; + color: rgb(35 39 47); + border-radius: 9999px; + vertical-align: middle; + font-size: 15px; +} + +.search-input input:hover, .search-input input:active { + background-color: rgb(235 236 240/ 0.8); + color: rgb(35 39 47/ 0.8); +} + +/* Home */ +.video-list { + position: relative; +} + +.video-list .videos { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + height: 100%; +} +``` + + +```css src/animations.css +/* No additional animations needed */ + + + + + + + + + +/* Previously defined animations below */ + + + + + + +/* Slide animations for Suspense the fallback down */ +::view-transition-old(.slide-down) { + animation: 150ms ease-out both fade-out, 150ms ease-out both slide-down; +} + +::view-transition-new(.slide-up) { + animation: 210ms ease-in 150ms both fade-in, 400ms ease-in both slide-up; +} + +/* Animations for view transition classed added by transition type */ +::view-transition-old(.slide-forward) { + /* when sliding forward, the "old" page should slide out to left. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left; +} + +::view-transition-new(.slide-forward) { + /* when sliding forward, the "new" page should slide in from right. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right; +} + +::view-transition-old(.slide-back) { + /* when sliding back, the "old" page should slide out to right. */ + animation: 150ms cubic-bezier(0.4, 0, 1, 1) both fade-out, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-right; +} + +::view-transition-new(.slide-back) { + /* when sliding back, the "new" page should slide in from left. */ + animation: 210ms cubic-bezier(0, 0, 0.2, 1) 150ms both fade-in, + 400ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-left; +} + +/* Keyframes to support our animations above. */ +@keyframes slide-up { + from { + transform: translateY(10px); + } + to { + transform: translateY(0); + } +} + +@keyframes slide-down { + from { + transform: translateY(0); + } + to { + transform: translateY(10px); + } +} + +@keyframes fade-in { + from { + opacity: 0; + } +} + +@keyframes fade-out { + to { + opacity: 0; + } +} + +@keyframes slide-to-right { + to { + transform: translateX(50px); + } +} + +@keyframes slide-from-right { + from { + transform: translateX(50px); + } + to { + transform: translateX(0); + } +} + +@keyframes slide-to-left { + to { + transform: translateX(-50px); + } +} + +@keyframes slide-from-left { + from { + transform: translateX(-50px); + } + to { + transform: translateX(0); + } +} + +/* Default .slow-fade. */ +::view-transition-old(.slow-fade) { + animation-duration: 500ms; +} + +::view-transition-new(.slow-fade) { + animation-duration: 500ms; +} +``` + +```js src/index.js hidden +import React, {StrictMode} from 'react'; +import {createRoot} from 'react-dom/client'; +import './styles.css'; +import './animations.css'; + +import App from './App'; +import {Router} from './router'; + +const root = createRoot(document.getElementById('root')); +root.render( + + + + + +); +``` + +```json package.json hidden +{ + "dependencies": { + "react": "experimental", + "react-dom": "experimental", + "react-scripts": "latest" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test --env=jsdom", + "eject": "react-scripts eject" + } +} +``` + + + +### Server-Side Rendering with Activity {/*server-side-rendering-with-activity*/} + +When using Activity on a page that uses server-side rendering (SSR), there are additional optimizations. + +If part of the page is rendered with `mode="hidden"`, then it will not be included in the SSR response. Instead, React will schedule a client render for the content inside Activity while the rest of the page hydrates, prioritizing the visible content on screen. + +For parts of the UI rendered with `mode="visible"`, React will de-prioritize hydration of content within Activity, similar to how Suspense content is hydrated at a lower priority. If the user interacts with the page, we'll prioritize hydration within the boundary if needed. + +These are advanced use cases, but they show the additional benefits considered with Activity. + +### Future modes for Activity {/*future-modes-for-activity*/} + +In the future, we may add more modes to Activity. + +For example, a common use case is rendering a modal, where the previous "inactive" page is visible behind the "active" modal view. The "hidden" mode does not work for this use case because it's not visible and not included in SSR. + +Instead, we're considering a new mode that would keep the content visible—and included in SSR—but keep it unmounted and de-prioritize updates. This mode may also need to "pause" DOM updates, since it can be distracting to see backgrounded content updating while a modal is open. + +Another mode we're considering for Activity is the ability to automatically destroy state for hidden Activities if there is too much memory being used. Since the component is already unmounted, it may be preferable to destroy state for the least recently used hidden parts of the app rather than consume too many resources. + +These are areas we're still exploring, and we'll share more as we make progress. For more information on what Activity includes today, [check out the docs](/reference/react/Activity). + +--- + +# Features in development {/*features-in-development*/} + +We're also developing features to help solve the common problems below. + +As we iterate on possible solutions, you may see some potenial APIs we're testing being shared based on the PRs we are landing. Please keep in mind, that as we try different ideas, we often change or remove different solutions after trying them out. + +When the solutions we're working on are shared too early, it can create churn and confusion in the community. To balance being transparent and limiting confusion, we're sharing the problems we're currently developing solutions for, without sharing a particular solution we have in mind. + +As these features progress, we'll announce them on the blog with docs included so you can try them out. + +## React Performance Tracks {/*react-performance-tracks*/} + +We're working on a new set of custom tracks to performance profilers using browser APIs that [allow adding custom tracks](https://developer.chrome.com/docs/devtools/performance/extension) to provide more information about the performance of your React app. + +This feature is still in progress, so we're not ready to publish docs to fully release it as an experimental feature yet. You can get a sneak preview when using an experimental version of React, which will automatically see the performance tracks added to profiles: + +
+ + + + + + + + +
+ +There are a few known issues we plan to address such as performance, and the scheduler track not always "connecting" work across Suspended trees, so it's not quite ready to try. We're also still collecting feedback from early adopters to improve the design and usability of the tracks. + +Once we solve those issues, we'll publish experimental docs and share that it's ready to try. + +--- + +## Automatic Effect Dependencies {/*automatic-effect-dependencies*/} + +When we released hooks, we had three motivations: + +- **Sharing code between components**: hooks replaced patterns like render props and higher-order components to allow you to reuse stateful logic without changing your component hierarchy. +- **Think in terms of function, not lifecycles**: hooks let you split one component into smaller functions based on what pieces are related (such as setting up a subscription or fetching data), rather than forcing a split based on lifecycle methods. +- **Support ahead-of-time compilation**: hooks were designed to support ahead-of-time compilation with less pitfalls causing unintention de-optimizations caused by lifecycle methods, and limitation of classes. + +Since their release, hooks have been successful at *sharing code between components*. Hooks are now the favored way to share logic between components, and there are less use cases for render props and higher order components. Hooks have also been successful at supporting features like Fast Refresh that were not possible with class components. + +### Effects can be hard {/*effects-can-be-hard*/} + +Unfortunately, some hooks are still hard to think in terms of function instead of lifecycles. Effects specifically are still hard to understand and is the most common pain point we hear from developers. Last year, we spent a significant amount of time researching how Effects were used, and how those use cases could be simplified and easier to understand. + +We found that often, the confusion is from using an Effect when you don't need to. The [You Might Not Need an Effect](/learn/you-might-not-need-an-effect) guide, covers many cases for when Effects are not the right solution. However, even when an Effect is the right fit for a problem, Effects can still be harder to understand than class component lifecyles. + +We believe one of the reasons for confusion is that developers to think of Effects from the _components_ perspective (like a lifecycle), instead of the _Effects_ point of view (what the Effect does). + +Let's look at an example [from the docs](/learn/lifecycle-of-reactive-effects#thinking-from-the-effects-perspective): + +```js +useEffect(() => { + // Your Effect connected to the room specified with roomId... + const connection = createConnection(serverUrl, roomId); + connection.connect(); + return () => { + // ...until it disconnected + connection.disconnect(); + }; +}, [roomId]); +``` + +Many users would read this code as "on mount, connect to the roomId. whenever `roomId` changes, disconnect to the old room and re-create the connection". However, this is thinking from the component's lifecycle perspective, which means you will need to think of every component lifecycle state to write the Effect correctly. This can be difficult, so it's understandble that Effects seem harder than class lifecycles when using component perspective. + +### Effects without dependencies {/*effects-without-dependencies*/} + +Instead, it's better to think from the Effect's perspective. The Effect doesn't know about the component lifecycles. It only describes how to start synchronization and how to stop it. When users think of Effects in this way, their Effects tend to be easier to write, and more resilient to being started and stopped as many times as it’s needed. + +We spent some time researching why Effects are thought of from the component perspective, and we think one of the resons is the dependency array. Since you have to write it, it's right there and in your face reminding you of what you're "reacting" to and baiting you into the mental model of 'do this when these values change'. + +When we released hooks, we knew we could make them easier to use with ahead-of-time compilation. With the React Compiler, you're now able to avoid writing `useCallback` and `useMemo` yourself in most cases. For Effects, the compiler can insert the dependencies for you: + +```js +useEffect(() => { + const connection = createConnection(serverUrl, roomId); + connection.connect(); + return () => { + connection.disconnect(); + }; +}); // compiler inserted dependencies. +``` + +With this code, the React Compiler can infer the dependencies for you and insert them automatically so you don't need to see or write them. With features like [the IDE exension](#compiler-ide-extension) and [`useEffectEvent`](/reference/react/experimental_useEffectEvent), we can provide a CodeLens to show you what the Compiler inserted for times you need to debug, or to optimize by removing a dependency. This helps reinforce the correct mental model for writing Effects, which can run at any time to synchronize your component or hook's state with something else. + +Our hope is that automatically inserting dependencies is not only easier to write, but that it also makes them easier to understand by forcing you to think in terms of what the Effect does, and not in component lifecycles. + +--- + +## Compiler IDE Extension {/*compiler-ide-extension*/} + +Earlier this week [we shared](/blog/2025/04/21/react-compiler-rc) the React Compiler release candidate, and we're working towards shipping the first SemVer stable version of the compiler in the coming months. + +We've also begun exploring ways to use the React Compiler to provide information that can improve understanding and debugging your code. One idea we've started exploring is a new experimental LSP-based React IDE extension powered by React Compiler, similar to the extension used in [Lauren Tan's React Conf talk](https://conf2024.react.dev/talks/5). + +Our idea is that we can use the compiler's static analysis to provide more information, suggestions, and optimization opportunities directly in your IDE. For example, we can provide diagnostics for code breaking the Rules of React, hovers to show if components and hooks were optimized by the compiler, or a CodeLens to see [automatically inserted Effect dependencies](#automatic-effect-dependencies). + +The IDE extension is still an early exploration, but we'll share our progress in future updates. + +--- + +## Fragment Refs {/*fragment-refs*/} + +Many DOM APIs like those for event management, positioning, and focus are difficult to compose when writing with React. This often leads developers to reach for Effects, managing multiple Refs, by using APIs like `findDOMNode` (removed in React 19). + +We are exploring adding refs to Fragments that would point to a group of DOM elements, rather than just a single element. Our hope is that this will simplify managing multiple children and make it easier to write composable React code when calling DOM APIs. + +Fragment refs are still being researched. We'll share more when we're closer to having the final API finished. + +--- + +## Gesture Animations {/*gesture-animations*/} + +We're also researching ways to enhance View Transitions to support gesture animations such as swiping to open a menu, or scroll through a photo carousel. + +Gestures present new challenges for a few reasons: + +- **Gestures are continuous**: as you swipe the animation is tied to your finger placement time, rather than triggering and running to completion. +- **Gestures don't complete**: when you release your finger gesture animations can run to completion, or revert to their original state (like when you only partially open a menu) depending on how far you go. +- **Gestures invert old and new**: while you're animating, you want the page you are animating from to stay "alive" and interactive. This inverts the browser View Transition model where the "old" state is a snapshot and the "new" state is the live DOM. + +We believe we’ve found an approach that works well and may introduce a new API for triggering gesture transitions. For now, we're focused on shipping ``, and will revisit gestures afterward. + +--- + +## Concurrent Stores {/*concurrent-stores*/} + +When we released React 18 with concurrent rendering, we also released `useSyncExternalStore` so external store libraries that did not use React state or context could [support concurrent rendering](https://github.com/reactwg/react-18/discussions/70) by forcing a sync render when the store is updated. + +Using `useSyncExternalStore` comes at a cost though, since it forces bail out from concurrent features like transitions, and forces existing content to show Suspense fallbacks. + +Now that React 19 has shipped, we're re-visiting this problem space to create a primitive to fully support concurrent external stores with the `use` API: + +```js +const value = use(store); +``` + +Our goal is to allow external state to be read during render without tearing, and to work seamlessly with all of the concurrent features React offers. + +This research is still early. We'll share more, and what the new APIs will look like, when we're further along. + +--- + +_Thanks to [Aurora Scharff](https://bsky.app/profile/aurorascharff.no), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Eli White](https://twitter.com/Eli_White), [Lauren Tan](https://bsky.app/profile/no.lol), [Luna Wei](https://github.com/lunaleaps), [Matt Carroll](https://twitter.com/mattcarrollcode), [Jack Pope](https://jackpope.me), [Jason Bonta](https://threads.net/someextent), [Jordan Brown](https://github.com/jbrown215), [Jordan Eldredge](https://bsky.app/profile/capt.dev), [Mofei Zhang](https://threads.net/z_mofei), [Sebastien Lorber](https://bsky.app/profile/sebastienlorber.com), [Sebastian Markbåge](https://bsky.app/profile/sebmarkbage.calyptus.eu), and [Tim Yung](https://github.com/yungsters) for reviewing this post._ \ No newline at end of file diff --git a/src/content/blog/index.md b/src/content/blog/index.md index fadb95243..a7a897634 100644 --- a/src/content/blog/index.md +++ b/src/content/blog/index.md @@ -12,6 +12,12 @@ You can also follow the [@react.dev](https://bsky.app/profile/react.dev) account
+ + +In React Labs posts, we write about projects in active research and development. In this post, we're sharing two new experimental features that are ready to try today, and sharing other areas we're working on now ... + + + We are releasing the compiler's first Release Candidate (RC) today. diff --git a/src/content/reference/react/Activity.md b/src/content/reference/react/Activity.md new file mode 100644 index 000000000..92ee18d44 --- /dev/null +++ b/src/content/reference/react/Activity.md @@ -0,0 +1,1161 @@ +--- +title: +version: experimental +--- + + + +**This API is experimental and is not available in a stable version of React yet.** + +You can try it by upgrading React packages to the most recent experimental version: + +- `react@experimental` +- `react-dom@experimental` +- `eslint-plugin-react-hooks@experimental` + +Experimental versions of React may contain bugs. Don't use them in production. + + + + + +`` lets you hide and show part of the UI. + + +```js + + + +``` + + + + + +--- + +## Reference {/*reference*/} + +### `` {/*activity*/} + +Wrap a part of the UI in `` to manage its visibility state: + +```js +import {unstableActivity as Activity} from 'react'; + + + + +``` + +When "hidden", the `children` of `` are not visible on the page. If a new `` mounts as "hidden" then it pre-renders the content at lower priority without blocking the visible content on the page, but it does not mount by creating Effects. When a "visible" Activity switches to "hidden" it conceptually unmounts by destroying all the Effects, but saves its state. This allows fast switching between "visible" and "hidden" states without recreating the state for a "hidden" Activity. + +In the future, "hidden" Activities may automatically destroy state based on resources like memory. + +#### Props {/*props*/} + +* `children`: The actual UI you intend to render. +* **optional** `mode`: Either "visible" or "hidden". Defaults to "visible". When "hidden", updates to the children are deferred to lower priority. The component will not create Effects until the Activity is switched to "visible". If a "visible" Activity switches to "hidden", the Effects will be destroyed. + +#### Caveats {/*caveats*/} + +- While hidden, the `children` of `` are hidden on the page. +- `` will unmount all Effects when switching from "visible" to "hidden" without destroying React or DOM state. This means Effects that are expected to run only once on mount will run again when switching from "hidden" to "visible". Conceptually, "hidden" Activities are unmounted, but they are not destroyed either. We recommend using [``](/reference/react/StrictMode) to catch any unexpected side-effects from this behavior. +- When used with ``, hidden activities that reveal in a transition will activate an "enter" animation. Visible Activities hidden in a transition will activate an "exit" animation. +- Parts of the UI wrapped in `` are not included in the SSR response. +- Parts of the UI wrapped in `` will hydrate at a lower priority than other content. + +--- + +## Usage {/*usage*/} + +### Pre-render part of the UI {/*pre-render-part-of-the-ui*/} + +You can pre-render part of the UI using ``: + +```js + + + +``` + +When an Activity is rendered with `mode="hidden"`, the `children` are not visible on the page, but are rendered at lower priority than the visible content on the page. + +When the `mode` later switches to "visible", the pre-rendered children will mount and become visible. This can be used to prepare parts of the UI the user is likely to interact with next to reduce loading times. + +In the following example from [`useTransition`](/reference/react/useTransition#preventing-unwanted-loading-indicators), the `PostsTab` component fetches some data using `use`. When you click the “Posts” tab, the `PostsTab` component suspends, causing the button loading state to appear: + + + +```js +import { Suspense, useState } from 'react'; +import TabButton from './TabButton.js'; +import AboutTab from './AboutTab.js'; +import PostsTab from './PostsTab.js'; +import ContactTab from './ContactTab.js'; + +export default function TabContainer() { + const [tab, setTab] = useState('about'); + return ( + 🌀 Loading...}> + setTab('about')} + > + About + + setTab('posts')} + > + Posts + + setTab('contact')} + > + Contact + +
+ {tab === 'about' && } + {tab === 'posts' && } + {tab === 'contact' && } +
+ ); +} +``` + + +```js src/TabButton.js active +import { useTransition } from 'react'; + +export default function TabButton({ action, children, isActive }) { + const [isPending, startTransition] = useTransition(); + if (isActive) { + return {children} + } + if (isPending) { + return {children}; + } + return ( + + ); +} +``` + +```js src/AboutTab.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; + +export default function AboutTab() { + return ( + +

Welcome to my profile!

+
+ ); +} +``` + +```js src/PostsTab.js hidden +import {use, unstable_ViewTransition as ViewTransition} from 'react'; +import { fetchData } from './data.js'; + +function PostsTab() { + const posts = use(fetchData('/posts')); + return ( + +
    + {posts.map(post => + + )} +
+
+ ); +} + +function Post({ title }) { + return ( +
  • + {title} +
  • + ); +} + +export default PostsTab; +``` + +```js src/ContactTab.js hidden +import {unstable_ViewTransition as ViewTransition} from 'react'; + +export default function ContactTab() { + return ( + +

    + Send me a message! +

    +