Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
02ecded
Update caveats for Activity rendering behavior (#8067)
TkDodo Oct 13, 2025
a677ba3
Fragment refs - Remove unused ref from focus fragment example (#8056)
slorber Oct 13, 2025
9ef1c47
fix: Breaking up a sentence to make it easier to understand (#8078)
moijes12 Oct 15, 2025
c8843f7
docs: capitalize Error Boundary concept across docs (#6713) (#8077)
Yonas650 Oct 16, 2025
ac0d53e
docs: update recommended full-stack React framework from Remix to Rea…
ardizanki2919 Oct 16, 2025
55e37af
Update conference listings for 2025 and 2026 (#8069)
arismarko Oct 16, 2025
44e94f3
Fix typo in useRef.md (#8060)
gramsco Oct 16, 2025
4b92001
Fix typo in Comments component (#7258)
sachanritik1 Oct 16, 2025
593fa1c
docs: fix symbol in prerenderToNodeStream.md (#8019)
WuMingDao Oct 16, 2025
df75927
docs: fix server components link text to match target section heading…
alejorrojas Oct 16, 2025
7571898
Fix cat scrolling example (#7980)
kenkam Oct 16, 2025
6cb7fea
Update hooks link to /reference/react/hooks in /reference/react/api…
WuMingDao Oct 16, 2025
ee5b672
Fix ordered list numbering in useCallback.md (#8011)
rammba Oct 16, 2025
f93cb2e
doc: Update from /react to /react/hooks in /reference/react-dom/hooks…
WuMingDao Oct 16, 2025
896a689
Remove ReactConf notes in blogs (#8082)
rickhanlonii Oct 16, 2025
fe87df5
clarify SRP definition (#8008)
0xPxt Oct 16, 2025
7ecf008
Add React Conf 2025 recap blog post (#8079)
mattcarrollcode Oct 16, 2025
f8c81a0
Use stable activity imports (#8085)
jackpope Oct 18, 2025
4b0935b
Add `<Activity>` bullet to built-in components section (#8087)
imjordanxd Oct 20, 2025
2c7798d
Fix typo in react compiler blog post date (#8091)
poteto Oct 20, 2025
c0af2d0
Add note on error boundary limitations (#8108)
JayCeeKay1991 Oct 29, 2025
e57e912
docs(blog): Add 'React 19.2' to blog sidebar (#8113)
SeungJin051 Oct 31, 2025
f9e2c13
Remove 'esquery' hack to potentially enable Turbopack (#8115)
joshwcomeau Nov 1, 2025
f020b53
docs: add missing 'Static APIs' link to React DOM reference page (#8127)
martinrebo Nov 5, 2025
5c632dc
Nit: wording
gaearon Nov 5, 2025
9c0763d
fix: correct links for Redwood and TanStack (#8121)
clicktodev Nov 5, 2025
abd1fe0
docs: Remove redundant symbols ‘ “ ’ (#8101)
WuMingDao Nov 5, 2025
6a70889
Fix typo in childIds array in initialTravelPlan (#8112)
egvr2002 Nov 5, 2025
d271a7a
Fix incorrect condition in "Chains of computations" example (#8109)
PaulyBearCoding Nov 6, 2025
b440d66
fix(links): update internal links (#8136)
okeken Nov 10, 2025
27576f1
fix(useTransition): correct anchors pointing to non-blocking updates …
SecondThundeR Nov 14, 2025
2534424
fix: Stop SmartyPants from altering TerminalBlock commands (like `--s…
smikitky Nov 15, 2025
1dac1c3
merging all conflicts
react-translations-bot Nov 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/3-framework.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ body:
value: |
## Apply to be included as a recommended React framework
_This form is for framework authors to apply to be included as a recommended [React framework](https://react.dev/learn/start-a-new-react-project). If you are not a framework author, please contact the authors before submitting._
_This form is for framework authors to apply to be included as a recommended [React framework](https://react.dev/learn/creating-a-react-app). If you are not a framework author, please contact the authors before submitting._
Our goal when recommending a framework is to start developers with a React project that solves common problems like code splitting, data fetching, routing, and HTML generation without any extra work later. We believe this will allow users to get started quickly with React, and scale their app to production.
While we understand that many frameworks may want to be featured, this page is not a place to advertise every possible React framework or all frameworks that you can add React to. There are many great frameworks that offer support for React that are not listed in our guides. The frameworks we recommend have invested significantly in the React ecosystem, and collaborated with the React team to be compatible with our [full-stack React architecture vision](https://react.dev/learn/start-a-new-react-project#which-features-make-up-the-react-teams-full-stack-architecture-vision).
While we understand that many frameworks may want to be featured, this page is not a place to advertise every possible React framework or all frameworks that you can add React to. There are many great frameworks that offer support for React that are not listed in our guides. The frameworks we recommend have invested significantly in the React ecosystem, and collaborated with the React team to be compatible with our [full-stack React architecture vision](https://react.dev/learn/creating-a-react-app#which-features-make-up-the-react-teams-full-stack-architecture-vision).
To be included, frameworks must meet the following criteria:
Expand Down
8 changes: 8 additions & 0 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,14 @@ const nextConfig = {
// Don't bundle the shim unnecessarily.
config.resolve.alias['use-sync-external-store/shim'] = 'react';

// ESLint depends on the CommonJS version of esquery,
// but Webpack loads the ESM version by default. This
// alias ensures the correct version is used.
//
// More info:
// https://github.com/reactjs/react.dev/pull/8115
config.resolve.alias['esquery'] = 'esquery/dist/esquery.min.js';

const {IgnorePlugin, NormalModuleReplacementPlugin} = require('webpack');
config.plugins.push(
new NormalModuleReplacementPlugin(
Expand Down
22 changes: 20 additions & 2 deletions plugins/remark-smartypants.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,24 @@ const visit = require('unist-util-visit');
const retext = require('retext');
const smartypants = require('retext-smartypants');

function check(parent) {
function check(node, parent) {
if (node.data?.skipSmartyPants) return false;
if (parent.tagName === 'script') return false;
if (parent.tagName === 'style') return false;
return true;
}

function markSkip(node) {
if (!node) return;
node.data ??= {};
node.data.skipSmartyPants = true;
if (Array.isArray(node.children)) {
for (const child of node.children) {
markSkip(child);
}
}
}

module.exports = function (options) {
const processor = retext().use(smartypants, {
...options,
Expand All @@ -43,8 +55,14 @@ module.exports = function (options) {
let startIndex = 0;
const textOrInlineCodeNodes = [];

visit(tree, 'mdxJsxFlowElement', (node) => {
if (['TerminalBlock'].includes(node.name)) {
markSkip(node); // Mark all children to skip smarty pants
}
});

visit(tree, ['text', 'inlineCode'], (node, _, parent) => {
if (check(parent)) {
if (check(node, parent)) {
if (node.type === 'text') allText += node.value;
// for the case when inlineCode contains just one part of quote: `foo'bar`
else allText += 'A'.repeat(node.value.length);
Expand Down
13 changes: 13 additions & 0 deletions src/components/Layout/HomeContent.js
Original file line number Diff line number Diff line change
Expand Up @@ -249,11 +249,19 @@ export function HomeContent() {
con un framework
</Header>
<Para>
<<<<<<< HEAD
React è una libreria. Ti permette di mettere insieme componenti,
ma non prescrive come fare routing e data fetching. Per costruire
un&apos;applicazione intera con React, ti consigliamo un framework
full-stack come <Link href="https://nextjs.org">Next.js</Link> o{' '}
<Link href="https://remix.run">Remix</Link>.
=======
React is a library. It lets you put components together, but it
doesn’t prescribe how to do routing and data fetching. To build an
entire app with React, we recommend a full-stack React framework
like <Link href="https://nextjs.org">Next.js</Link> or{' '}
<Link href="https://reactrouter.com">React Router</Link>.
>>>>>>> 2534424ec6c433cc2c811d5a0bd5a65b75efa5f0
</Para>
</Center>
<FullBleed>
Expand All @@ -271,8 +279,13 @@ export function HomeContent() {
<CTA
color="gray"
icon="framework"
<<<<<<< HEAD
href="/learn/start-a-new-react-project">
Inizia con un framework
=======
href="/learn/creating-a-react-app">
Get started with a framework
>>>>>>> 2534424ec6c433cc2c811d5a0bd5a65b75efa5f0
</CTA>
</div>
</Center>
Expand Down
4 changes: 2 additions & 2 deletions src/components/Layout/Page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {useRouter} from 'next/router';
import {SidebarNav} from './SidebarNav';
import {Footer} from './Footer';
import {Toc} from './Toc';
import SocialBanner from '../SocialBanner';
// import SocialBanner from '../SocialBanner';
import {DocsPageFooter} from 'components/DocsFooter';
import {Seo} from 'components/Seo';
import PageHeading from 'components/PageHeading';
Expand Down Expand Up @@ -142,7 +142,7 @@ export function Page({
/>
</Head>
)}
<SocialBanner />
{/* <SocialBanner /> */}
<TopNav
section={section}
routeTree={routeTree}
Expand Down
7 changes: 0 additions & 7 deletions src/components/MDX/Sandpack/runESLint.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,6 @@ const getCodeMirrorPosition = (

const linter = new Linter();

// HACK! Eslint requires 'esquery' using `require`, but there's no commonjs interop.
// because of this it tries to run `esquery.parse()`, while there's only `esquery.default.parse()`.
// This hack places the functions in the right place.
const esquery = require('esquery');
esquery.parse = esquery.default?.parse;
esquery.matches = esquery.default?.matches;

const reactRules = require('eslint-plugin-react-hooks').rules;
linter.defineRules({
'react-hooks/rules-of-hooks': reactRules['rules-of-hooks'],
Expand Down
10 changes: 6 additions & 4 deletions src/components/MDX/TerminalBlock.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,15 @@ function TerminalBlock({level = 'info', children}: TerminalBlockProps) {
</div>
</div>
</div>
<div
<pre
className="px-8 pt-4 pb-6 text-primary-dark dark:text-primary-dark font-mono text-code whitespace-pre overflow-x-auto"
translate="no"
dir="ltr">
<LevelText type={level} />
{message}
</div>
<code>
<LevelText type={level} />
{message}
</code>
</pre>
</div>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ The biggest change is that we introduced [`async` / `await`](https://github.com/

Now that we have data fetching pretty well sorted, we're exploring the other direction: sending data from the client to the server, so that you can execute database mutations and implement forms. We're doing this by letting you pass Server Action functions across the server/client boundary, which the client can then call, providing seamless RPC. Server Actions also give you progressively enhanced forms before JavaScript loads.

React Server Components has shipped in [Next.js App Router](/learn/start-a-new-react-project#nextjs-app-router). This showcases a deep integration of a router that really buys into RSC as a primitive, but it's not the only way to build a RSC-compatible router and framework. There's a clear separation for features provided by the RSC spec and implementation. React Server Components is meant as a spec for components that work across compatible React frameworks.
React Server Components has shipped in [Next.js App Router](/learn/creating-a-react-app#nextjs-app-router). This showcases a deep integration of a router that really buys into RSC as a primitive, but it's not the only way to build a RSC-compatible router and framework. There's a clear separation for features provided by the RSC spec and implementation. React Server Components is meant as a spec for components that work across compatible React frameworks.

We generally recommend using an existing framework, but if you need to build your own custom framework, it is possible. Building your own RSC-compatible framework is not as easy as we'd like it to be, mainly due to the deep bundler integration needed. The current generation of bundlers are great for use on the client, but they weren't designed with first-class support for splitting a single module graph between the server and the client. This is why we're now partnering directly with bundler developers to get the primitives for RSC built-in.

Expand Down Expand Up @@ -92,7 +92,7 @@ Since our last update, we've tested an experimental version of prerendering inte

## Transition Tracing {/*transition-tracing*/}

The Transition Tracing API lets you detect when [React Transitions](/reference/react/useTransition) become slower and investigate why they may be slow. Following our last update, we have completed the initial design of the API and published an [RFC](https://github.com/reactjs/rfcs/pull/238). The basic capabilities have also been implemented. The project is currently on hold. We welcome feedback on the RFC and look forward to resuming its development to provide a better performance measurement tool for React. This will be particularly useful with routers built on top of React Transitions, like the [Next.js App Router](/learn/start-a-new-react-project#nextjs-app-router).
The Transition Tracing API lets you detect when [React Transitions](/reference/react/useTransition) become slower and investigate why they may be slow. Following our last update, we have completed the initial design of the API and published an [RFC](https://github.com/reactjs/rfcs/pull/238). The basic capabilities have also been implemented. The project is currently on hold. We welcome feedback on the RFC and look forward to resuming its development to provide a better performance measurement tool for React. This will be particularly useful with routers built on top of React Transitions, like the [Next.js App Router](/learn/creating-a-react-app#nextjs-app-router).

* * *
In addition to this update, our team has made recent guest appearances on community podcasts and livestreams to speak more on our work and answer questions.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,6 @@ In React Labs posts, we write about projects in active research and development.

</Intro>

<Note>

React Conf 2024 is scheduled for May 15–16 in Henderson, Nevada! If you’re interested in attending React Conf in person, you can [sign up for the ticket lottery](https://forms.reform.app/bLaLeE/react-conf-2024-ticket-lottery/1aRQLK) until February 28th.

For more info on tickets, free streaming, sponsoring, and more, see [the React Conf website](https://conf.react.dev).

</Note>

---

## React Compiler {/*react-compiler*/}
Expand Down
2 changes: 1 addition & 1 deletion src/content/blog/2024/05/22/react-conf-2024-recap.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ Thank you [Ricky Hanlon](https://www.youtube.com/watch?v=FxTZL2U-uKg&t=1263s) fo

Thank you [Callstack](https://www.callstack.com/) for building the conference website; and to [Kadi Kraman](https://twitter.com/kadikraman) and the [Expo](https://expo.dev/) team for building the conference mobile app.

Thank you to all the sponsors who made the event possible: [Remix](https://remix.run/), [Amazon](https://developer.amazon.com/apps-and-games?cmp=US_2024_05_3P_React-Conf-2024&ch=prtnr&chlast=prtnr&pub=ref&publast=ref&type=org&typelast=org), [MUI](https://mui.com/), [Sentry](https://sentry.io/for/react/?utm_source=sponsored-conf&utm_medium=sponsored-event&utm_campaign=frontend-fy25q2-evergreen&utm_content=logo-reactconf2024-learnmore), [Abbott](https://www.jobs.abbott/software), [Expo](https://expo.dev/), [RedwoodJS](https://redwoodjs.com/), and [Vercel](https://vercel.com).
Thank you to all the sponsors who made the event possible: [Remix](https://remix.run/), [Amazon](https://developer.amazon.com/apps-and-games?cmp=US_2024_05_3P_React-Conf-2024&ch=prtnr&chlast=prtnr&pub=ref&publast=ref&type=org&typelast=org), [MUI](https://mui.com/), [Sentry](https://sentry.io/for/react/?utm_source=sponsored-conf&utm_medium=sponsored-event&utm_campaign=frontend-fy25q2-evergreen&utm_content=logo-reactconf2024-learnmore), [Abbott](https://www.jobs.abbott/software), [Expo](https://expo.dev/), [RedwoodJS](https://rwsdk.com/), and [Vercel](https://vercel.com).

Thank you to the AV Team for the visuals, stage, and sound; and to the Westin Hotel for hosting us.

Expand Down
2 changes: 1 addition & 1 deletion src/content/blog/2024/12/05/react-19.md
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ For more information, see [React DOM Static APIs](/reference/react-dom/static).

Server Components are a new option that allows rendering components ahead of time, before bundling, in an environment separate from your client application or SSR server. This separate environment is the "server" in React Server Components. Server Components can run once at build time on your CI server, or they can be run for each request using a web server.

React 19 includes all of the React Server Components features included from the Canary channel. This means libraries that ship with Server Components can now target React 19 as a peer dependency with a `react-server` [export condition](https://github.com/reactjs/rfcs/blob/main/text/0227-server-module-conventions.md#react-server-conditional-exports) for use in frameworks that support the [Full-stack React Architecture](/learn/start-a-new-react-project#which-features-make-up-the-react-teams-full-stack-architecture-vision).
React 19 includes all of the React Server Components features included from the Canary channel. This means libraries that ship with Server Components can now target React 19 as a peer dependency with a `react-server` [export condition](https://github.com/reactjs/rfcs/blob/main/text/0227-server-module-conventions.md#react-server-conditional-exports) for use in frameworks that support the [Full-stack React Architecture](/learn/creating-a-react-app#which-features-make-up-the-react-teams-full-stack-architecture-vision).


<Note>
Expand Down
2 changes: 1 addition & 1 deletion src/content/blog/2025/02/14/sunsetting-create-react-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ export default function Dashboard() {
}
```

Fetching in an effect means the user has to wait longer to see the content, even though the data could have been fetched earlier. To solve this, you can use a data fetching library like [React Query](https://react-query.tanstack.com/), [SWR](https://swr.vercel.app/), [Apollo](https://www.apollographql.com/docs/react), or [Relay](https://relay.dev/) which provide options to prefetch data so the request is started before the component renders.
Fetching in an effect means the user has to wait longer to see the content, even though the data could have been fetched earlier. To solve this, you can use a data fetching library like [TanStack Query](https://tanstack.com/query/), [SWR](https://swr.vercel.app/), [Apollo](https://www.apollographql.com/docs/react), or [Relay](https://relay.dev/) which provide options to prefetch data so the request is started before the component renders.

These libraries work best when integrated with your routing "loader" pattern to specify data dependencies at the route level, which allows the router to optimize your data fetches:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,6 @@ In React Labs posts, we write about projects in active research and development.
</Intro>


<Note>

React Conf 2025 is scheduled for October 7–8 in Henderson, Nevada!

Watch the livestream on [the React Conf website](https://conf.react.dev).

</Note>

Today, we're excited to release documentation for two new experimental features that are ready for testing:

- [View Transitions](#view-transitions)
Expand All @@ -40,6 +32,14 @@ We're also sharing updates on new features currently in development:

# New Experimental Features {/*new-experimental-features*/}

<Note>

`<Activity />` has shipped in `[email protected]`.

`<ViewTransition />` and `addTransitionType` are now available in `react@canary`.

</Note>

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:
Expand Down Expand Up @@ -11543,7 +11543,7 @@ Try searching for a video, selecting it, and clicking "back":
<Sandpack>

```js src/App.js
import { ViewTransition } from "react"; import Details from "./Details"; import Home from "./Home"; import { useRouter } from "./router"; import { unstable_Activity, Activity as ActivityStable} from 'react'; let Activity = ActivityStable ?? unstable_Activity;
import { Activity, ViewTransition } from "react"; import Details from "./Details"; import Home from "./Home"; import { useRouter } from "./router";

export default function App() {
const { url } = useRouter();
Expand Down Expand Up @@ -12880,7 +12880,7 @@ With this update, if the content on the next page has time to pre-render, it wil
<Sandpack>

```js src/App.js
import { ViewTransition, use } from "react"; import Details from "./Details"; import Home from "./Home"; import { useRouter } from "./router"; import {fetchVideos} from './data'; import { unstable_Activity, Activity as ActivityStable} from 'react'; let Activity = ActivityStable ?? unstable_Activity;
import { Activity, ViewTransition, 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();
Expand Down
Loading
Loading