Skip to content
Open
Changes from 1 commit
Commits
Show all changes
189 commits
Select commit Hold shift + click to select a range
6a35e13
Update react-19-upgrade-guide.md
sophiebits Dec 2, 2024
4bae717
Fix typo in react-19-upgrade-guide.md
sophiebits Dec 2, 2024
fd8b1e0
Update React v19 blog post for stable release (#7321)
rickhanlonii Dec 5, 2024
4673a05
Merge v19 docs to main (#7322)
rickhanlonii Dec 5, 2024
d6f3659
update version label
rickhanlonii Dec 5, 2024
d2536c0
fix vv19
rickhanlonii Dec 5, 2024
8235ae9
Fix types install instructions in 19 upgrade guide
eps1lon Dec 5, 2024
4d7cc91
Update Versions page (#7324)
rickhanlonii Dec 5, 2024
ebedc89
fix links to prerender docs (#7323)
mayank99 Dec 5, 2024
acda167
Add compiler beta release to Version changelog
rickhanlonii Dec 5, 2024
69edd84
fixed typo in yarn add command (#7326)
JakeSaterlay Dec 5, 2024
3b02f82
Update React DevTools docs to reference RN DevTools (#7355)
huntie Dec 11, 2024
9fb491d
Fix troubleshooting links in startTransition reference (#7367)
jimmycallin Dec 16, 2024
51864f6
(fix): mismatch href bug (#7368)
ahm3tozenir Dec 16, 2024
bc93f05
Fix stylesheet precedence example (#7235)
EricCote Dec 16, 2024
07eca83
Fix intro of prerenderToNodeStream (#7356)
smikitky Dec 16, 2024
c92bad2
chore: several major typo fixes (#7362)
coalio Dec 16, 2024
d3bd0f9
Update act.md (#7363)
huiliangShen Dec 16, 2024
31456db
chore: correct typo in useTransition docs (#7366)
AminDannak Dec 16, 2024
d4d1683
chore: fix a typo in startTransition docs (#7361)
AminDannak Dec 16, 2024
04ba43c
fix: add link to prop-type codemod (#7344)
renbaoshuo Dec 16, 2024
4349dd5
fix: anchor (#7343)
Jealh-h Dec 16, 2024
d3cde8f
Fix "won't break between majors" (#7357)
smikitky Dec 16, 2024
37e1ce9
Add React Summit 2025 to conferences.md; move past conferences to the…
denis-urban Dec 16, 2024
4b5ce91
Add missing react-error-boundary dependency (#7353)
acusti Dec 16, 2024
0805613
fix broken link in use server (#7351)
simon300000 Dec 16, 2024
a4b6074
fix: page does not exist (#7348)
Dec 16, 2024
807e7fa
Mention that uncontrolled form elements are reset by form actions (#7…
jeremy-deutsch Dec 16, 2024
0f8bd80
Code example mistake in useMemo page (#7335)
JZZICK Dec 16, 2024
3558095
docs: include React 19 blog post in sidebarBlog.json (#7331)
slorber Dec 16, 2024
93a03f1
docs: Fix broken link to next.js Suspense docs (#7318)
ethshea Dec 16, 2024
204b3f1
Remove canary flag from useFormStatus (#7349)
smikitky Dec 16, 2024
8ac5531
Rename remaining "Server Actions" (#7352)
smikitky Dec 16, 2024
9985199
docs[compiler]: clarify React DevTools support for Compiler Badges in…
piotrski Dec 16, 2024
c37fdd3
Remove forwardref from useImperativeHandle docs (#7360)
SebassNoob Dec 16, 2024
e2bba41
docs: fix readme node version (#7316)
devwqc Dec 16, 2024
8a5526e
Update lauren (#7373)
poteto Dec 17, 2024
03e74dd
Add info about App.js 2025 conference (#7154)
piaskowyk Dec 18, 2024
8e41e32
Inline stylesheets are not Suspensey yet (#7378)
eps1lon Dec 19, 2024
1517494
refactor: remove unused useTransition import in App.js and update doc…
Rekl0w Dec 19, 2024
6ae99dd
Remove forwardRef references from useRef and Manipulating the DOM wit…
mattcarrollcode Dec 20, 2024
b1a249d
Fix React Native DevTools link (#7386)
rammba Dec 24, 2024
5e3e400
bot to notify for PRs (#7408)
rickhanlonii Jan 7, 2025
c0b6baf
Fix broken Next.js base path configuration link (#7419)
amarachiugwu Jan 9, 2025
7b4f948
fix: change overflow-x-scroll to overflow-x-auto in TerminalBlock com…
clicktodev Jan 9, 2025
9c4bc28
Update server-functions.md (#7396)
Azzyxec Jan 9, 2025
9000e6e
Add React Universe Conf 2025 to list of conferences (#7421)
barbaramarkiewicz Jan 9, 2025
517c0fa
/errors: Empty args are not missing arguments (#6767)
eps1lon Jan 13, 2025
855ce23
Upgrade to React 19, Next 15.1 and enable React Compiler (#6996)
mattcarrollcode Jan 13, 2025
316230a
Update React compiler and install eslint plugin (#7428)
poteto Jan 13, 2025
ee8a829
Disallow `/index.html` in sandboxes (#7430)
eps1lon Jan 14, 2025
a2d4932
Update Conferences Lists for 2025 (#7406)
apherio Jan 15, 2025
b22cbc3
Update Dan Abramov's broken Twitter link to bsky.app across multiple …
clicktodev Jan 15, 2025
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
3c805e7
fix(reference): missing parameter in hydrateRoot (#7724)
Kafuu-Chinocya Apr 15, 2025
84261aa
Update versions to mention the latest version: 19.1 (#7739)
val1984 Apr 15, 2025
947681e
docs: fix a typo in the docs (#7736)
Clatron Apr 15, 2025
4bea66b
Change the word 'Function' to 'Component' (#7741)
kapantzak Apr 16, 2025
4c54ac9
Fix missing Sunsetting CRA entry in sidebar (#7755)
poteto Apr 21, 2025
3a88efd
Compiler blog post (#7756)
poteto Apr 21, 2025
c1e5681
Compiler blog post edits (#7758)
poteto Apr 21, 2025
663df77
React compiler doc updates (#7759)
poteto Apr 21, 2025
740016e
More compiler blog post tweaks (#7760)
poteto Apr 21, 2025
39b9c56
Fix ESLint plugin version. (#7768)
cpojer Apr 23, 2025
5890bd6
Update react-compiler-rc.md (#7769)
poteto Apr 23, 2025
dd129e4
fix a typo in name in the blog post (#7762)
witch-factory Apr 23, 2025
55ddaa4
Add React Summit US 2025 and React Advanced London 2025 to conference…
Hlebread Apr 23, 2025
358d2be
[blog + docs] React Labs: View Transitions, Activity, and more (#7772)
rickhanlonii Apr 23, 2025
09c9593
Update Next.js deployment notes (#7771)
eduardoboucas Apr 23, 2025
159df67
Add React Norway 2025 conference to community page (#7766)
danisal Apr 24, 2025
f94ab10
Fix typos in blog post
sophiebits Apr 24, 2025
594ff45
Refine wording for Next.js + Compiler + SWC (#7779)
eps1lon Apr 25, 2025
d05547b
fix: server-components link in few pages (#7780)
ad1992 Apr 26, 2025
ecf7596
docs: rename unstableViewTransition to unstable_ViewTransition (#7778)
Apr 27, 2025
92dfd8c
fixed typo (#7785)
MrD9877 Apr 28, 2025
022e047
Remove extra copy of labs post (#7787)
jackpope Apr 28, 2025
4314b49
Improve grammar in component descriptions (#7788)
Maddily Apr 29, 2025
d6c4c0f
Fix useOptimistic example (#7792)
rickhanlonii Apr 29, 2025
a3e9466
fix action pattern in useTransition / useOptimistic (#7796)
rickhanlonii Apr 30, 2025
73d7073
fix: correct overlay highlighting in code examples (#7669)
mrbadri May 15, 2025
4a7bdc1
fix: the value property of checkbox to the checked property (#7804)
kosh-jp May 16, 2025
ae4a40a
No need for useState here — useCounter handles the state internally (…
gbhardwaj00 May 16, 2025
a73055f
docs: fix misplaced prepositional phrase error (#7799)
mehmetmalli May 16, 2025
e2d9fd7
Fix wrong documentation for effect events (#7800)
gbhardwaj00 May 16, 2025
b92bb59
Remove stray console.log and image (#7814)
rickhanlonii May 16, 2025
b3b2166
fix(template): remove unnecessary import of React in template code (#…
dahoho May 16, 2025
9fb0519
fix(reference): correct singular form of 'Server Functions' to 'Serve…
dahoho May 16, 2025
69ce5d3
Add bold mono font (#7815)
rickhanlonii May 16, 2025
8b2fe2b
Remove TODO comments and convert them to issues (#7743)
BartoszKlonowski May 16, 2025
00587d6
Add example of `useActionState` handling execution order (#7733)
ajits01 May 16, 2025
79e1c48
docs: update vite link (#7784)
bornkiss May 16, 2025
c289cd0
docs: add bsky link (#7781)
bornkiss May 16, 2025
7ab1969
React Montreal Meetings have a new link (#7809)
EricCote May 16, 2025
f275c9d
fix: remove useless content (#6615)
loveloki May 17, 2025
0b68054
fix: wrong verb tense in doc (#7818)
aalhoura May 17, 2025
65d297e
fix: typo in challenge solution (#7816)
aalhoura May 17, 2025
f15830d
Use experiemental in all uEE doc sandboxes (#7820)
rickhanlonii May 20, 2025
2571aee
Author: Josh Story <story@hey.com>
gnoff May 21, 2025
3ee3a60
Fix wrong explanation in preserving-and-resetting-state (#6043)
smikitky May 26, 2025
9db23d6
fix: correct broken WAI-ARIA modal dialog link in createPortal refere…
dimatitov Jun 2, 2025
bbcb9af
Update meetups.md adding React Rajasthan Community (#7831)
shubhamui Jun 2, 2025
a2d17d1
Update components-and-hooks-must-be-pure.md (#7830)
ExercitusMortem Jun 2, 2025
94424ae
Update referencing-values-with-refs.md (#7829)
cHaLkdusT Jun 2, 2025
172f0b9
Add uwu click animation (#7822)
Jinsoo1004 Jun 2, 2025
3dcc4c4
Fix typo and clarily that a server function reference is created only…
kapantzak Jun 2, 2025
06965de
Add React Alicante 2025 to Conferences page (#7674)
mikedidomizio Jun 2, 2025
e901790
fix: use const where applicable in examples for keeping components pu…
ad1992 Jun 2, 2025
87cef4a
Remove `forwardRef` reference from API listing (#7837)
kassens Jun 3, 2025
c60173f
docs: Refactor context provider usage (#7793)
nannany Jun 3, 2025
37b09ea
fix: typo in docs on prerendering (#7823)
yeskunall Jun 3, 2025
5927c4e
Replace Context.Provider with Context (#7838)
kassens Jun 3, 2025
5dca520
fix(blog): resolve typo in React 19 blog post (`refs` → `ref`s) (#7828)
amir78729 Jun 3, 2025
50d6991
Update analyze_comment.yml (#7840)
jtn-dev Jun 6, 2025
59cec03
merging all conflicts
react-translations-bot Jun 23, 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
Prev Previous commit
Next Next commit
Fix misspelling in cra blog post (#7496)
  • Loading branch information
poteto authored Feb 14, 2025
commit 3ba4f8cee38738981c0a020f6b06e48850594af5
36 changes: 18 additions & 18 deletions src/content/blog/2025/02/14/sunsetting-create-react-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Today, we’re deprecating [Create React App](https://create-react-app.dev/) for

-----

When we released Create React App in 2016, there was no clear way to build a new React app.
When we released Create React App in 2016, there was no clear way to build a new React app.

To create a React app, you had to install a bunch of tools and wire them up together yourself to support basic features like JSX, linting, and hot reloading. This was very tricky to do correctly, so the [community](https://github.com/react-boilerplate/react-boilerplate) [created](https://github.com/kriasoft/react-starter-kit) [boilerplates](https://github.com/petehunt/react-boilerplate) for [common](https://github.com/gaearon/react-hot-boilerplate) [setups](https://github.com/erikras/react-redux-universal-hot-example). However, boilerplates were difficult to update and fragmentation made it difficult for React to release new features.

Expand All @@ -38,7 +38,7 @@ Starting today, if you install a new app, you will see a deprecation warning:

create-react-app is deprecated.
{'\n\n'}
You can find a list of up-to-date React frameworks on react.dev
You can find a list of up-to-date React frameworks on react.dev
For more info see: react.dev/link/cra
{'\n\n'}
This error message will only be shown once per install.
Expand All @@ -56,7 +56,7 @@ For existing apps, these guides will help you migrate to a client-only SPA:

Create React App will continue working in maintenance mode, and we've published a new version of Create React App to work with React 19.

If your app has unusual constraints, or you prefer to solve these problems by building your own framework, or you just want to learn how react works from scratch, you can roll your own custom setup with React using Vite or Parcel.
If your app has unusual constraints, or you prefer to solve these problems by building your own framework, or you just want to learn how react works from scratch, you can roll your own custom setup with React using Vite or Parcel.

To help users get started with Vite or Parcel, we've published new docs for [Building a Framework](/learn/building-a-react-framework). Continue reading to learn more about the [limitations of Create React App](#limitations-of-create-react-app) and [why we recommend frameworks](#why-we-recommend-frameworks).

Expand Down Expand Up @@ -90,7 +90,7 @@ export default function App() {
}
```

This allows you to immediately start coding in React with features like JSX, default linting rules, and a bundler to run in both development and production. However, this setup is missing the tools you need to build a real production app.
This allows you to immediately start coding in React with features like JSX, default linting rules, and a bundler to run in both development and production. However, this setup is missing the tools you need to build a real production app.

Most production apps need solutions to problems like routing, data fetching, and code splitting.

Expand Down Expand Up @@ -143,21 +143,21 @@ There's a tradeoff being made here: the routing library adds complexity to the a

### Data Fetching {/*data-fetching*/}

Another common problem in Create React App is data fetching. Create React App does not include a specific data fetching solution. If you're just getting started, a common option is to use `fetch` in an effect to load data.
Another common problem in Create React App is data fetching. Create React App does not include a specific data fetching solution. If you're just getting started, a common option is to use `fetch` in an effect to load data.

But doing this means that the data is fetched after the component renders, which can cause network waterfalls. Network waterfalls are caused by fetching data when your app renders instead of in parallel while the code is downloading:

```js
export default function Dashboard() {
const [data, setData] = useState(null);

// ❌ Fetching data in a component causes network waterfalls
useEffect(() => {
fetch('/api/data')
.then(response => response.json())
.then(data => setData(data));
}, []);

return (
<div>
{data.map(item => <div key={item.id}>{item.name}</div>)}
Expand Down Expand Up @@ -193,18 +193,18 @@ However, this requires correctly configuring the loaders in your app and trades

### Code Splitting {/*code-splitting*/}

Another common problem in Create React App is [code splitting](https://www.patterns.dev/vanilla/bundle-splitting). Create React App does not include a specific code splitting solution. If you're just getting started, you might not consider code splitting at all.
Another common problem in Create React App is [code splitting](https://www.patterns.dev/vanilla/bundle-splitting). Create React App does not include a specific code splitting solution. If you're just getting started, you might not consider code splitting at all.

This means your app is shipped as a single bundle:

```txt
- bundle.js 75kb
```

But for ideal performance, you should "split" your code into separate bundles so the user only needs to download what they need. This decreases the time the user needs to wait to load your app, by only downloading the code they need to see the page they are on.

```txt
- core.js 25kb
- core.js 25kb
- home.js 25kb
- dashboard.js 25kb
```
Expand All @@ -226,7 +226,7 @@ Optimized code-splitting is tricky to get right, and it's easy to make mistakes

### And more... {/*and-more*/}

These are just a few examples of the limitations of Create React App.
These are just a few examples of the limitations of Create React App.

Once you've integrated routing, data-fetching, and code splitting, you now also need to consider pending states, navigation interruptions, error messages to the user, and revalidation of the data. There are entire categories of problems that users need to solve like:

Expand All @@ -251,15 +251,15 @@ Once you've integrated routing, data-fetching, and code splitting, you now also
</ul>
</div>

All of these work together to create the most optimal [loading sequence](https://www.patterns.dev/vanilla/loading-sequence).
All of these work together to create the most optimal [loading sequence](https://www.patterns.dev/vanilla/loading-sequence).

Solving each of these problems individually in Create React App can be difficult as each problem is interconnected with the others and can require deep expertise in problem areas users may not be familiar with. In order to solve these problems, users end up building their own bespoke solutions on top of Create React App, which was the problem Create React App originally tried to solve.

## Why we Recommend Frameworks {/*why-we-recommend-frameworks*/}

Although you could solve all these pieces yourself in a build tool like Create React App, Vite, or Parcel, it is hard to do well. Just like when Create React App itself integrated several build tools together, you need a tool to integrate all of these features together to provide the best experience to users.

This category of tools that integrates build tools, rendering, routing, data fetching, and code splitting are known as "frameworks" -- or if you prefer to call React itself a framework, you might call them "metaframeworks".
This category of tools that integrates build tools, rendering, routing, data fetching, and code splitting are known as "frameworks" -- or if you prefer to call React itself a framework, you might call them "metaframeworks".

Frameworks impose some opinions about structuring your app in order to provide a much better user experience, in the same way build tools impose some opinions to make tooling easier. This is why we started recommending frameworks like [Next.js](https://nextjs.org/), [React Router](https://reactrouter.com/), and [Expo](https://expo.dev/) for new projects.

Expand All @@ -269,7 +269,7 @@ Frameworks provide the same getting started experience as Create React App, but

#### Server rendering is optional {/*server-rendering-is-optional*/}

The frameworks we recommend all provide the option to create a [client-side rendered (CSR)](https://developer.mozilla.org/en-US/docs/Glossary/CSR) app.
The frameworks we recommend all provide the option to create a [client-side rendered (CSR)](https://developer.mozilla.org/en-US/docs/Glossary/CSR) app.

In some cases, CSR is the right choice for a page, but many times it's not. Even if most of your app is client-side, there are often individual pages that could benefit from server rendering features like [static-site generation (SSG)](https://developer.mozilla.org/en-US/docs/Glossary/SSG) or [server-side rendering (SSR)](https://developer.mozilla.org/en-US/docs/Glossary/SSR), for example a Terms of Service page, or documentation.

Expand All @@ -285,7 +285,7 @@ The frameworks we recommend also include support for React Server Components.

Server Components help solve these problems by moving routing and data fetching to the server, and allowing code splitting to be done for client components based on the data you render, instead of just the route rendered, and reducing the amount of JavaScript shipped for the best possible [loading sequence](https://www.patterns.dev/vanilla/loading-sequence).

Server Components do not require a server. They can be run at build time on your CI server to create a static-site generated app (SSG) app, at runtime on a web server for a server-side rendered (SSR) app.
Server Components do not require a server. They can be run at build time on your CI server to create a static-site generated app (SSG) app, at runtime on a web server for a server-side rendered (SSR) app.

See [Introducing zero-bundle size React Server Components](/blog/2020/12/21/data-fetching-with-react-server-components) and [the docs](/reference/rsc/server-components) for more info.

Expand All @@ -295,15 +295,15 @@ See [Introducing zero-bundle size React Server Components](/blog/2020/12/21/data

#### Server Rendering is not just for SEO {/*server-rendering-is-not-just-for-seo*/}

A common misunderstanding is that server rendering is only for [SEO](https://developer.mozilla.org/en-US/docs/Glossary/SEO).
A common misunderstanding is that server rendering is only for [SEO](https://developer.mozilla.org/en-US/docs/Glossary/SEO).

While server rendering can improve SEO, it also improves performance by reducing the amount of JavaScript the user needs to download and parse before they can see the content on the screen.
While server rendering can improve SEO, it also improves performance by reducing the amount of JavaScript the user needs to download and parse before they can see the content on the screen.

This is why the Chrome team [has encouraged](https://web.dev/articles/rendering-on-the-web) developers to consider static or server-side render over a full client-side approach to achieve the best possible performance.

</Note>

---

_Thank you to [Dan Abramov](https://bsky.app/profile/danabra.mov) for creating Create React App, and [Joe Haddad](https://github.com/Timer), [Ian Schmitz](https://github.com/ianschmitz), [Brody McKee](https://github.com/mrmckeb), and [many others](https://github.com/facebook/create-react-app/graphs/contributors) for maintaining Create React App over the years. Thank you to [Brooks Lybrand](https://bsky.app/profile/brookslybrand.bsky.social), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Devon Govett](https://bsky.app/profile/devongovett.bsky.social), [Eli White](https://x.com/Eli_White), [Jack Herrington](https://bsky.app/profile/jherr.dev), [Joe Savona](https://x.com/en_JS), [Lauren Tan](https://bsky.app/profile/no.lol), [Lee Robinson](https://x.com/leeerob), [Mark Erikson](https://bsky.app/profile/acemarke.dev), [Ryan Florance](https://x.com/ryanflorence), [Sophie Alpert](https://bsky.app/profile/sophiebits.com), [Tanner Linsley](https://bsky.app/profile/tannerlinsley.com), and [Theo Browne](https://x.com/theo) for reviewing and providing feedback on this post._
_Thank you to [Dan Abramov](https://bsky.app/profile/danabra.mov) for creating Create React App, and [Joe Haddad](https://github.com/Timer), [Ian Schmitz](https://github.com/ianschmitz), [Brody McKee](https://github.com/mrmckeb), and [many others](https://github.com/facebook/create-react-app/graphs/contributors) for maintaining Create React App over the years. Thank you to [Brooks Lybrand](https://bsky.app/profile/brookslybrand.bsky.social), [Dan Abramov](https://bsky.app/profile/danabra.mov), [Devon Govett](https://bsky.app/profile/devongovett.bsky.social), [Eli White](https://x.com/Eli_White), [Jack Herrington](https://bsky.app/profile/jherr.dev), [Joe Savona](https://x.com/en_JS), [Lauren Tan](https://bsky.app/profile/no.lol), [Lee Robinson](https://x.com/leeerob), [Mark Erikson](https://bsky.app/profile/acemarke.dev), [Ryan Florence](https://x.com/ryanflorence), [Sophie Alpert](https://bsky.app/profile/sophiebits.com), [Tanner Linsley](https://bsky.app/profile/tannerlinsley.com), and [Theo Browne](https://x.com/theo) for reviewing and providing feedback on this post._