zh-hans.react.dev: the React documentation in Simplified Chinese, kept in sync
React documentation website in Simplified Chinese
At a glance
- What is it?
- zh-hans.react.dev is the official Simplified Chinese translation of the React documentation, published from a repository that upstream syncs in real time. The judgment is that it is now a maintenance job rather than a translation effort, with a glossary and a heading id linter doing most of the quality work, and that the upstream English site stays the reference whenever the two disagree.
- Who is it for?
- Adopt zh-hans.react.dev as the reference for Chinese speaking React developers and as the place to contribute translation fixes, since it is the official mirror rather than a community copy. Do not treat it as a replacement for the English site when a subtle API detail matters, because the translation is a rendering of upstream text and upstream is authoritative.
- Can I use it commercially?
- Yes, with credit. CC-BY-4.0 allows commercial use as long as you credit the authors and indicate what you changed. It is written for creative content, so check how it applies to any code.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 6, 2026, and from our analysis. They are not legal advice.
Star history
- reactjs/zh-hans.react.dev998 ★ · +1
| Repository | 2026-10-21 | 2026-11-06 |
|---|---|---|
| reactjs/zh-hans.react.dev | 997 | 998 |
1 Stars in the last 16 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
An official mirror rather than a community translation
The repository description says what it is: the React documentation website in Simplified Chinese. The README states that the repository contains the documentation and source code for the Chinese site, and that it is synchronised in real time by the official team. That last clause is the difference that matters. Most translated documentation in the wild is a fork that drifts, and this one is positioned as a rendering of react.dev that the upstream project pushes into.
The audience is two groups. The first is Chinese speaking developers who read documentation faster in their own language and who otherwise have to reconcile English API text with Chinese blog posts. The second is contributors, because the README says the primary work now is synchronising and improving existing translations, which means the contribution path is editing machine assisted or human produced Chinese text against a moving upstream source.
The site is a Next.js application, and the repository root shows the same shape as the upstream react.dev project: src/, plugins/, public/, scripts/, a next.config.js, a tailwind.config.js, a vercel.json, and a yarn.lock. It is a website project, with all the tooling that implies.
The translation job is finished, the synchronisation job is not
The README is unusually clear about the state of the work. Most of the translation work is already done, and the main job now is synchronising and perfecting the existing translations. Any contributor who arrives expecting to translate a page will find that the pages exist and that the work is revision.
That changes the shape of a pull request. The README asks contributors to read the wiki and follow the guidelines there, and it points at two specific pages: the React translation guide for the translated documentation, and the glossary sheet. A glossary is the piece that decides whether a term is rendered consistently across hundreds of pages, and it is the reason a small wording change can be a large diff.
The contribution mechanics are also specified. Translation problems are submitted directly as pull requests, while other questions are raised as issues for discussion. That split is a useful signal for anyone triaging: a pull request is expected to be a text fix, and a question about how to translate something is a conversation first. The repository also carries a TRANSLATION.md file and a CODE_OF_CONDUCT.md file, and a CLAUDE.md file with a .claude/ directory, which points to a workflow that has been set up for automated editing assistance.
Running the Chinese site locally with yarn dev
The upstream README section that this repository inherits describes the local setup, and it is short. The prerequisites are Git, Node at any version starting with v16.8.0 or greater, Yarn, a fork of the repository, and a clone of the react.dev repository on your machine. Installation is two commands:
cd react.dev
yarnThe yarn command installs the website's npm dependencies, and it has a postinstall step in package.json that installs the local ESLint rules and sets up Husky outside CI. Running locally is the same length:
yarn devwhich starts the development server powered by Next.js, and then you open the site:
open http://localhost:3000There is a detail in the scripts worth knowing. The dev script is not a plain next dev, it is next-remote-watch pointed at the content directory:
"dev": "next-remote-watch ./src/content"That watcher exists so the local site can pull the current upstream English content, which is what makes a translation diff visible as the upstream text moves. The README also says changes to React components in src hot-reload, and changes to markdown files in content hot-reload, while plugin work may require removing the .cache directory and restarting the server.
The check that runs more than a formatter
Before opening a pull request, the README tells you to run one command:
yarn check-allThat script is a runner over several checks. In package.json it expands to prettier, lint:fix, tsc and rss in sequence, so formatting, linting with fixes applied, type checking, and the feed generation. It is the local equivalent of what CI runs.
The CI variant is broader. The ci-check script runs prettier:diff in parallel with lint, tsc, lint-heading-ids, rss and deadlinks. Two of those are specific to a translated documentation site and are the reason this repository is more than a copy of upstream.
The first is the heading id linter, run through scripts/headingIdLinter.js, with a fix mode behind the fix-headings script. Translated headings are the source of broken anchors. A Chinese heading translates to a different slug, so every link that points at an anchor in the page, and every reference from another page, depends on a deterministic id derived from the Chinese text. The linter exists to catch the cases where the id and the link disagree.
The second is the dead link checker, scripts/deadLinkChecker.js, which is why the repository carries .env.development and .env.production files and a scripts/ directory at all. The rss script regenerates a feed from the content tree, and the copyright script handles the licence lines that belong with the content.
A branch, a commit, and the licence that travels with the text
The branching workflow is spelled out in the same README, and it is conventional. You check out main, pull the latest main code, and create a branch with a suitable name:
git checkout main
git pull origin main
git checkout -b the-name-of-my-branchThen you commit with a descriptive message and push to your fork:
git add -A && git commit -m "My message"
git push my-fork-name the-name-of-my-branchThe README also asks for screenshots for visual changes and notes that a preview build is triggered after changes are pushed.
The licence is the part to read carefully, and it is split. The metadata records the repository licence as CC-BY-4.0, and the package.json declares the package as private with the licence field set to CC. The README states that content submitted to react.dev is CC-BY-4.0 licensed, as found in the LICENSE-DOCS.md file, and that file is present in the repository root. So the text is Creative Commons with attribution, and the site code is a separate matter that the upstream project holds. If you are copying a paragraph from the Chinese documentation into a course, a book, or another site, the attribution terms apply, and if you are vendoring the site itself, the code side is what you need to look at.
Where the mirror is the wrong source
There is a case where this site is the wrong answer, and it is a common one. A translation can be a few days behind upstream, and it can be a few days behind on the specific paragraph you needed. The README says the synchronisation is real time, but synchronisation is a mechanism, not a guarantee of the exact revision you are reading, and nothing in the repository tells you which upstream commit a given Chinese page corresponds to.
The second case is nuance. React documentation contains sentences where the precise meaning of an English term carries the meaning of the paragraph. Hooks rules, dependency arrays, and the language around rendering behaviour are exactly the places where a fluent translation can shift meaning without being wrong word for word. For those paragraphs, the English site is the reference, and a correction submitted as a pull request is the right way to fix the Chinese one.
The third is tooling and scope. This repository documents the current React version and the current site. It is not a versioned archive, there are no GitHub releases, and the package version in package.json is 1.0.0 for a private package, so there is no tag to pin a reader to. If you need the documentation that shipped with React 17, this is not the place to find it, and the upstream project keeps a version switcher for that purpose.
Editorial conclusion
Adopt zh-hans.react.dev as the reference for Chinese speaking React developers and as the place to contribute translation fixes, since it is the official mirror rather than a community copy. Do not treat it as a replacement for the English site when a subtle API detail matters, because the translation is a rendering of upstream text and upstream is authoritative. Before you start, read the wiki translation guide and the glossary sheet, run yarn check-all locally so you are not the person who breaks the heading ids, and remember that the repository is at version 1.0.0 of the react-dev package with no GitHub releases, so what you read on zh-hans.react.dev is the deployment, not a tagged artefact.
Frequently asked questions
Is zh-hans.react.dev an official React documentation translation?
The repository states that it contains the documentation and source code for the Chinese site and that it is synchronised in real time by the official team. The site is published at zh-hans.react.dev and the content is licensed CC-BY-4.0.
How do I run the Chinese React documentation site locally?
Install the dependencies with yarn inside the project root, then run yarn dev to start the Next.js development server, and open http://localhost:3000. The prerequisites listed are Git, Node v16.8.0 or greater, Yarn, a fork and a clone of the react.dev repository.
What should I check before submitting a translation pull request?
Read the wiki translation guide and the glossary sheet, and run yarn check-all locally, which runs Prettier, ESLint with fixes, type checking and the RSS generation. CI additionally runs a heading id linter and a dead link checker, because translated headings change the anchors other pages link to.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/reactjs-zh-hans-react-dev)Star history chart for your README
[](https://hysenlabs.com/projects/reactjs-zh-hans-react-dev)Was this useful?