Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
ee361b5
Update React Paris conference year to 2025 (#7439)
mikedidomizio Jan 21, 2025
e88e3d0
React Native Connection is back in 2025 (#7311)
viteinfinite Jan 21, 2025
b03017a
fix typo (#7440)
absurdistdev Jan 21, 2025
c140d2c
Update conferences.md for CityJS Athens and London Events (#7425)
arismarko Jan 22, 2025
7cdbed0
Mention startTransition in useActionState docs (#7448)
sophiebits Jan 24, 2025
07f13ab
[ci] Add workflow to label PRs from core team (#7451)
poteto Jan 24, 2025
2f24839
[ci] Specify is_remote input to maintainer check workflow (#7453)
poteto Jan 24, 2025
a5aad0d
[ci] Update discord notification bot to use remote workflow (#7455)
poteto Jan 24, 2025
4d44167
import missing useState in the useEffect markdown file (#7457)
SruthiKrish19 Jan 27, 2025
066b6c1
bumped up the versions of docsearch packages (#7458)
phanendraguptha Jan 27, 2025
9001bc6
docs: Correct var reference in prerender example (#7434)
rschristian Jan 27, 2025
305db5f
Capitalized Suspense in a few files (#7449)
renatodellosso Jan 27, 2025
ef705c7
Update Eli's github username on the team page (#7460)
elicwhite Jan 27, 2025
3bb7a4e
Team page updates (#7438)
rickhanlonii Jan 27, 2025
0eb0f88
feat: migrate React.dev to the App Router (#7437)
feedthejim Feb 1, 2025
af0358f
Revert "feat: migrate React.dev to the App Router (#7437)" (#7466)
gaearon Feb 1, 2025
6fc98ff
Fix Vite URLs (#7462)
karlhorky Feb 2, 2025
91614a5
Clarify security updates in versioning-policy.md (#7485)
sophiebits Feb 9, 2025
9a18bcd
docs: add javascript colombo, sri lanka meetup (#7289)
brionmario Feb 10, 2025
7cb25e3
Adding React Helsinki meetup (#7474)
hencca Feb 10, 2025
c76a1f7
Added React Nexus 2025 to the conference list (#7463)
akiran Feb 10, 2025
dfc4448
Reference docs for `captureOwnerStack` (#7427)
eps1lon Feb 13, 2025
7cf1f50
Blog and docs: Sunsetting Create React App (#7495)
rickhanlonii Feb 14, 2025
3ba4f8c
Fix misspelling in cra blog post (#7496)
poteto Feb 14, 2025
294c731
fix(docs): wrong redirect link to /learn/creating-a-react-app on Crea…
otabekshoyimov Feb 16, 2025
c438e9a
fix(docs): wrong vite command (#7615)
elitalpa Feb 16, 2025
4928421
Add Rsbuild as a build tool for React projects (#7608)
chenjiahan Feb 16, 2025
1923248
fix(docs): webpack branding states it should be lower case (#7617)
zackarychapple Feb 17, 2025
09f39a0
fix: Dashboard component name in blogpost (#7621)
erasmoh Feb 17, 2025
604407a
Updates from feedback (#7624)
rickhanlonii Feb 17, 2025
34e13df
Fix setup page (#7607)
jasonqiu212 Feb 18, 2025
1a4183a
fix: typo for issue #7491 (#7493)
TheCaptain1810 Feb 18, 2025
c7099e3
Fix headings and add link (#7626)
rickhanlonii Feb 18, 2025
c726e7d
Fix broken heading link (#7627)
rickhanlonii Feb 18, 2025
aaf392a
Fix more broken links (#7628)
rickhanlonii Feb 18, 2025
32cb13a
updated incorrect logic (#7482)
timmparsons Feb 18, 2025
2cf6668
Update react-19-upgrade-guide.md (#7411)
amirsaeed671 Feb 18, 2025
ff12973
Fix error in second code snippet under Server Functions with Actions …
hyundonmoon Feb 18, 2025
0593d01
Fix typo in render-and-commit.md (#7405)
rammba Feb 18, 2025
126d8c9
Update nextjs link with the latest URL (#7389)
alex-safian Feb 18, 2025
55d1f8f
Update input.md (#7418)
pierluc-codes Feb 18, 2025
f3e9921
clarify alert message behavior in issue #7494 (#7629)
Punith1117 Feb 18, 2025
c03f029
Fix broken header link in CRA blog post(#7632)
yaodingyd Feb 18, 2025
383b389
Remove forwardRefs from recap and challenges (#7475)
dixita0607 Feb 19, 2025
6ef277a
Update CRA to Parcel migration guide (#7638)
devongovett Feb 20, 2025
a42121e
fix: correct typo in hydrateRoot.md (#7637)
hjunyoung Feb 20, 2025
dcaf07e
chore(docs): add mention that React will drop all extraneous props fo…
samcx Feb 22, 2025
fc29603
Fix 'optimistically updating form data' demo bug (#7646)
subliun Feb 22, 2025
4a4e579
docs(hydrateRoot): update suppressHydrationWarning behavior (#7651)
samcx Feb 26, 2025
cc774fa
removing Provider as in React 19 Context can be used as a provider (#…
karthik-awebon Feb 27, 2025
5f09d9f
Invalid bluesky dev account link (#7653)
JosefHartsough Feb 27, 2025
6326e7b
[ci] Run notify workflow on open or ready for review (#7660)
poteto Feb 28, 2025
ab18d2f
docs: update creating-a-react-app.md (broken link anchor) (#7671)
lauthieb Mar 6, 2025
982b16d
[ci] Fix permissions and don't use pull_request_target (#7689)
poteto Mar 21, 2025
f6d762c
[ci] Pin 3rd party actions to specific hash (#7690)
poteto Mar 21, 2025
0bc6300
[ci] fix notify for forks (#7694)
rickhanlonii Mar 24, 2025
9b2ad17
[ci] Remove unused param (#7695)
poteto Mar 24, 2025
6788f6b
Fixes typo (#7688)
betovelandia Mar 24, 2025
2859efa
Add React Prague community (#7279)
pchalupa Mar 25, 2025
9f87530
Remove captureOwnerStack canary banner (#7701)
jackpope Mar 31, 2025
38ee8d2
Add note about StrictMode not as the root component (#7702)
rickhanlonii Mar 31, 2025
c0e1774
[errors] special case for 418 (#7705)
rickhanlonii Apr 1, 2025
b5f5134
update reactrouter url (#7703)
zongben Apr 1, 2025
06500ec
Typo correction (#7657)
SandwichGouda Apr 2, 2025
6a548a8
Use stable React by default in Sandpacks (#7709)
eps1lon Apr 2, 2025
b77c05d
Misc `captureOwnerStack` cleanup after stable release (#7710)
eps1lon Apr 2, 2025
b5c16dc
fix(reference): declare `subscribe` before passing it to the hook (#7…
hugmouse Apr 2, 2025
3dfa3bd
Fix heading links in StrictMode (#7713)
rickhanlonii Apr 2, 2025
9fc1221
Update meetups.md (#7700)
darshanyeah Apr 2, 2025
c74271e
Add React Denver to the Meetups page (#4727)
willklein Apr 2, 2025
0ea503b
typo (#7685)
pdurbin Apr 2, 2025
5138e60
Fix small grammatical mistake on Reusing Logic with Custom Hooks page…
LuckyT89 Apr 2, 2025
6ead1fa
Add note about `useId` being allowed in non-async Server Components (…
hernan-yadiel Apr 7, 2025
e148ffe
Add note about root.render microtask scheduling (#7717)
jukben Apr 8, 2025
420c2f6
Add React Conf banner (#7729)
mattcarrollcode Apr 8, 2025
5598696
Add React Conf to conferences.md and move past conferences (#7730)
mattcarrollcode Apr 9, 2025
67d5708
merging all conflicts
react-translations-bot Apr 14, 2025
c5b7ca5
Merge branch 'main' of github.com:reactjs/es.react.dev into sync-5598…
mateoguzmana Apr 19, 2025
0cd074c
Fix conflicts and translating coming content
mateoguzmana Apr 19, 2025
069f594
Fix linter
mateoguzmana Apr 19, 2025
34f1554
Remove duplicated country
mateoguzmana Apr 19, 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
6 changes: 4 additions & 2 deletions .github/workflows/analyze.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ on:
- main # change this if your default branch is named differently
workflow_dispatch:

permissions: {}

jobs:
analyze:
runs-on: ubuntu-latest
Expand All @@ -23,7 +25,7 @@ jobs:
- name: Restore cached node_modules
uses: actions/cache@v4
with:
path: "**/node_modules"
path: '**/node_modules'
key: node_modules-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('yarn.lock') }}

- name: Install deps
Expand Down Expand Up @@ -55,7 +57,7 @@ jobs:
name: bundle_analysis.json

- name: Download base branch bundle stats
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e
if: success() && github.event.number
with:
workflow: analyze.yml
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/analyze_comment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ name: Analyze Bundle (Comment)

on:
workflow_run:
workflows: ["Analyze Bundle"]
workflows: ['Analyze Bundle']
types:
- completed

permissions: {}

jobs:
comment:
runs-on: ubuntu-latest
Expand All @@ -14,15 +16,15 @@ jobs:
github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Download base branch bundle stats
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e
with:
workflow: analyze.yml
run_id: ${{ github.event.workflow_run.id }}
name: analysis_comment.txt
path: analysis_comment.txt

- name: Download PR number
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e
with:
workflow: analyze.yml
run_id: ${{ github.event.workflow_run.id }}
Expand All @@ -48,7 +50,7 @@ jobs:
echo "pr-number=$pr_number" >> $GITHUB_OUTPUT

- name: Comment
uses: marocchino/sticky-pull-request-comment@v2
uses: marocchino/sticky-pull-request-comment@52423e01640425a022ef5fd42c6fb5f633a02728
with:
header: next-bundle-analysis
number: ${{ steps.get-comment-body.outputs.pr-number }}
Expand Down
17 changes: 14 additions & 3 deletions .github/workflows/discord_notify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,22 @@ name: Discord Notify

on:
pull_request_target:
types: [ labeled ]
types: [opened, ready_for_review]

permissions: {}

jobs:
check_maintainer:
uses: facebook/react/.github/workflows/shared_check_maintainer.yml@main
permissions:
# Used by check_maintainer
contents: read
with:
actor: ${{ github.event.pull_request.user.login }}

notify:
if: ${{ github.event.label.name == 'React Core Team' }}
if: ${{ needs.check_maintainer.outputs.is_core_team == 'true' }}
needs: check_maintainer
runs-on: ubuntu-latest
steps:
- name: Discord Webhook Action
Expand All @@ -18,4 +29,4 @@ jobs:
embed-author-icon-url: ${{ github.event.pull_request.user.avatar_url }}
embed-title: '#${{ github.event.number }} (+${{github.event.pull_request.additions}} -${{github.event.pull_request.deletions}}): ${{ github.event.pull_request.title }}'
embed-description: ${{ github.event.pull_request.body }}
embed-url: ${{ github.event.pull_request.html_url }}
embed-url: ${{ github.event.pull_request.html_url }}
41 changes: 41 additions & 0 deletions .github/workflows/label_core_team_prs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Label Core Team PRs

on:
pull_request_target:

permissions: {}

env:
TZ: /usr/share/zoneinfo/America/Los_Angeles
# https://github.com/actions/cache/blob/main/tips-and-workarounds.md#cache-segment-restore-timeout
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 1

jobs:
check_maintainer:
uses: facebook/react/.github/workflows/shared_check_maintainer.yml@main
permissions:
# Used by check_maintainer
contents: read
with:
actor: ${{ github.event.pull_request.user.login }}

label:
if: ${{ needs.check_maintainer.outputs.is_core_team == 'true' }}
runs-on: ubuntu-latest
needs: check_maintainer
permissions:
# Used to add labels on issues
issues: write
# Used to add labels on PRs
pull-requests: write
steps:
- name: Label PR as React Core Team
uses: actions/github-script@v7
with:
script: |
github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: ${{ github.event.number }},
labels: ['React Core Team']
});
4 changes: 3 additions & 1 deletion .github/workflows/site_lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ on:
pull_request:
types: [opened, synchronize, reopened]

permissions: {}

jobs:
lint:
runs-on: ubuntu-latest
Expand All @@ -25,7 +27,7 @@ jobs:
- name: Restore cached node_modules
uses: actions/cache@v4
with:
path: "**/node_modules"
path: '**/node_modules'
key: node_modules-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('yarn.lock') }}

- name: Install deps
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
},
"dependencies": {
"@codesandbox/sandpack-react": "2.13.5",
"@docsearch/css": "^3.6.1",
"@docsearch/react": "^3.6.1",
"@docsearch/css": "^3.8.3",
"@docsearch/react": "^3.8.3",
"@headlessui/react": "^1.7.0",
"@radix-ui/react-context-menu": "^2.1.5",
"body-scroll-lock": "^3.1.3",
Expand Down
Binary file removed public/images/team/andrey-lunyov.jpg
Binary file not shown.
Binary file added public/images/team/hendrik.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/team/jordan.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/team/kathryn-middleton.jpg
Binary file not shown.
Binary file modified public/images/team/lauren.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/team/luna-wei.jpg
Binary file not shown.
Binary file added public/images/team/mike.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/team/noahlemen.jpg
Binary file not shown.
Binary file added public/images/team/pieter.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/team/sam.jpg
Binary file not shown.
Binary file removed public/images/team/sathya.jpg
Binary file not shown.
Binary file removed public/images/team/tianyu.jpg
Binary file not shown.
14 changes: 10 additions & 4 deletions src/components/Layout/HomeContent.js
Original file line number Diff line number Diff line change
Expand Up @@ -514,11 +514,13 @@ export function HomeContent() {

<div className="mt-20 px-5 lg:px-0 mb-6 max-w-4xl text-center text-opacity-80">
<div className="uwu-visible flex justify-center">
<img
<Image
alt="logo by @sawaratsuki1004"
title="logo by @sawaratsuki1004"
className="uwu-visible mb-10 lg:mb-8 h-24 lg:h-32"
src="/images/uwu.png"
width={100}
height={100}
/>
</div>
<Logo className="uwu-hidden text-brand dark:text-brand-dark w-24 lg:w-28 mb-10 lg:mb-8 mt-12 h-auto mx-auto self-start" />
Expand Down Expand Up @@ -805,10 +807,12 @@ const CommunityImages = memo(function CommunityImages({isLazy}) {
? 'rotate-2 group-hover:rotate-[-1deg] group-hover:scale-110 group-hover:shadow-lg lg:group-hover:shadow-2xl'
: 'group-hover:rotate-1 group-hover:scale-110 group-hover:shadow-lg lg:group-hover:shadow-2xl rotate-[-2deg]'
)}>
<img
<Image
loading={isLazy ? 'lazy' : 'eager'}
src={src}
alt={alt}
width={100}
height={100}
className="aspect-[4/3] h-full w-full flex object-cover rounded-2xl bg-gray-10 dark:bg-gray-80"
/>
</div>
Expand Down Expand Up @@ -1565,7 +1569,7 @@ function Cover({background, children}) {
<div className="absolute inset-0 px-4 py-2 flex items-end bg-gradient-to-t from-black/40 via-black/0">
{children}
</div>
<img
<Image
src={background}
width={500}
height={263}
Expand Down Expand Up @@ -1642,11 +1646,13 @@ function Thumbnail({video}) {
<>
<div className="transition-opacity mt-2.5 -space-x-2 flex flex-row w-full justify-center">
{image.speakers.map((src, i) => (
<img
<Image
key={i}
className="h-8 w-8 border-2 shadow-md border-gray-70 object-cover rounded-full"
src={src}
alt=""
width={100}
height={100}
/>
))}
</div>
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 @@ -8,7 +8,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 @@ -137,7 +137,7 @@ export function Page({
/>
</Head>
)}
{/*<SocialBanner />*/}
<SocialBanner />
<TopNav
section={section}
routeTree={routeTree}
Expand Down
1 change: 1 addition & 0 deletions src/components/MDX/CodeBlock/CodeBlock.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,7 @@ function getInlineDecorators(
line.step === 3,
'bg-green-40 border-green-40 text-green-60 dark:text-green-30':
line.step === 4,
// TODO: Some codeblocks use up to 6 steps.
}
),
})
Expand Down
29 changes: 17 additions & 12 deletions src/components/MDX/ErrorDecoder.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ function parseQueryString(search: string): Array<string | undefined> {
}

export default function ErrorDecoder() {
const {errorMessage} = useErrorDecoderParams();
const {errorMessage, errorCode} = useErrorDecoderParams();
/** error messages that contain %s require reading location.search */
const hasParams = errorMessage?.includes('%s');
const [message, setMessage] = useState<React.ReactNode | null>(() =>
Expand All @@ -82,23 +82,28 @@ export default function ErrorDecoder() {
if (errorMessage == null || !hasParams) {
return;
}
const args = parseQueryString(window.location.search);
let message = errorMessage;
if (errorCode === '418') {
// Hydration errors have a %s for the diff, but we don't add that to the args for security reasons.
message = message.replace(/%s$/, '');

setMessage(
urlify(
replaceArgs(
errorMessage,
parseQueryString(window.location.search),
'[missing argument]'
)
)
);
// Before React 19.1, the error message didn't have an arg, and was always HTML.
if (args.length === 0) {
args.push('HTML');
} else if (args.length === 1 && args[0] === '') {
args[0] = 'HTML';
}
}

setMessage(urlify(replaceArgs(message, args, '[missing argument]')));
setIsReady(true);
}, [hasParams, errorMessage]);
}, [errorCode, hasParams, errorMessage]);

return (
<code
className={cn(
'block bg-red-100 text-red-600 py-4 px-6 mt-5 rounded-lg',
'whitespace-pre-line block bg-red-100 text-red-600 py-4 px-6 mt-5 rounded-lg',
isReady ? 'opacity-100' : 'opacity-0'
)}>
<b>{message}</b>
Expand Down
24 changes: 18 additions & 6 deletions src/components/MDX/MDXComponents.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {Children, useContext, useMemo} from 'react';
import * as React from 'react';
import cn from 'classnames';
import type {HTMLAttributes} from 'react';
import Image from 'next/image';

import CodeBlock from './CodeBlock';
import {CodeDiagram} from './CodeDiagram';
Expand Down Expand Up @@ -285,9 +286,11 @@ function Illustration({
return (
<div className="relative group before:absolute before:-inset-y-16 before:inset-x-0 my-16 mx-0 2xl:mx-auto max-w-4xl 2xl:max-w-6xl">
<figure className="my-8 flex justify-center">
<img
<Image
src={src}
alt={alt}
width={700}
height={300}
style={{maxHeight: 300}}
className="rounded-lg"
/>
Expand Down Expand Up @@ -321,11 +324,12 @@ function IllustrationBlock({
const images = imageInfos.map((info, index) => (
<figure key={index}>
<div className="bg-white rounded-lg p-4 flex-1 flex xl:p-6 justify-center items-center my-4">
<img
<Image
className="text-primary"
src={info.src}
alt={info.alt}
height={info.height}
width={700}
height={info.height || 300}
/>
</div>
{info.caption ? (
Expand Down Expand Up @@ -455,9 +459,17 @@ function YouTubeIframe(props: any) {
);
}

function Image(props: any) {
function CustomImage(props: any) {
const {alt, ...rest} = props;
return <img alt={alt} className="max-w-[calc(min(700px,100%))]" {...rest} />;
return (
<Image
alt={alt}
className="max-w-[calc(min(700px,100%))]"
width={700}
height={400}
{...rest}
/>
);
}

export const MDXComponents = {
Expand All @@ -474,7 +486,7 @@ export const MDXComponents = {
h5: H5,
hr: Divider,
a: Link,
img: Image,
img: CustomImage,
BlogCard,
code: InlineCode,
pre: CodeBlock,
Expand Down
4 changes: 2 additions & 2 deletions src/components/MDX/Sandpack/template.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ root.render(
eject: 'react-scripts eject',
},
dependencies: {
react: '19.0.0-rc-3edc000d-20240926',
'react-dom': '19.0.0-rc-3edc000d-20240926',
react: '^19.1.0',
'react-dom': '^19.1.0',
'react-scripts': '^5.0.0',
},
},
Expand Down
2 changes: 1 addition & 1 deletion src/components/MDX/TeamMember.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*/

import * as React from 'react';
import Image from 'next/image';
import Image from 'next/legacy/image';
import {IconTwitter} from '../Icon/IconTwitter';
import {IconThreads} from '../Icon/IconThreads';
import {IconBsky} from '../Icon/IconBsky';
Expand Down
2 changes: 1 addition & 1 deletion src/components/SocialBanner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {useRef, useEffect} from 'react';
import cn from 'classnames';
import {ExternalLink} from './ExternalLink';

const bannerText = 'Únete a la React Conf del 15 al 16 de mayo.';
const bannerText = 'Únete a la React Conf del 7 al 8 de Octubre.';
const bannerLink = 'https://conf.react.dev/';
const bannerLinkText = 'Más información.';

Expand Down
Loading