New Ukrainian Translation Progress
Maintainer List
This list of maintainers and active translators was updated on 2025/12/15. uk.react.dev is looking for a maintainer to help review, translate and maintain the documentation!
- ~~@vldmrkl~~
- ~~@ithompson4~~
- ~~@oleksii-polovyi~~
- ~~@bkatsevych~~
- @alinkedd (Discord l10n community) ('Apologies for the delayed reviews. I’m doing reviews completely asynchronously and sporadically at the moment.')
For New Translators
To translate a page:
- Check that no one else has claimed your page in the checklist and comments below. AND PLEASE, TAKE A PAGE WHICH IS LOWER IN HIERARCHY, NOT AN INDEX OR INTRO ONE--THESE DEPEND ON INNER PAGES!
- Comment below with the name of the page you would like to translate.
- Fork and clone this repo, translate your page, and submit a pull request back here!
Please take only one page at a time.
Before contributing, read the glossary and style guide to understand how to translate various technical and React-specific terms.
Please be prompt with your translations! If you find that you can't commit anymore, let the maintainers know so they can assign the page to someone else.
For Maintainers
When someone volunteers, edit this issue with the username of the volunteer, and with the PR. Ex:
- [ ] Quick Start (@tesseralis) #12345
When PRs are merged, make sure to mark that page as completed!
Main Content
To do before releasing as an "official" translation. Please translate these pages first.
Note that each section has an index page, which needs to be translated too.
(This list of topics was updated on 2025/10/17)
Learn React
-
[x] Quick Start (@stanislavcodes) #466
- [ ] Tutorial: Tic Tac Toe (partially @BlindKai, help is needed to finish) #532
- [ ] Thinking in React
-
[x] Installation (@alinkedd) #500
- ~~Start a New React Project (@undead404) #547~~
- [x] Creating a React App (mainly a copy from Start a New React Project; @alinkedd) #591
- ~~Building a React Framework (@alinkedd) #591~~
- [x] Build a React app from Scratch (partially a copy from Building a React Framework; @alinkedd) #593
- [x] Add React to an Existing Project (@bwv847) #459
-
[x] Setup (@alinkedd) #591
- [x] Editor Setup (@undead404) #548
- [x] Using TypeScript (@alinkedd) #507
- [x] React Developer Tools (@alinkedd) #498
-
[ ] React Compiler - DO NOT TRANSLATE UNTIL SUBPAGES ARE TRANSLATED!
- [ ] Introduction
- [ ] Installation
- [ ] Incremental Adoption
- [ ] Debugging and Troubleshooting
-
[x] Describing the UI (@alinkedd) #513
- [x] Your First Component (@litovskii-s) #458
- [x] Importing and Exporting Components (@vadym-oliinyk) #464
- [x] Writing Markup with JSX (@ltlaitoff) #485
- [x] JavaScript in JSX with Curly Braces (@ltlaitoff) #487
- [x] Passing Props to a Component (@ltlaitoff) #495
- [x] Conditional Rendering (@ltlaitoff) #497
- [x] Rendering Lists (@alinkedd) #511
- [ ] Keeping Components Pure
- [x] Your UI as a Tree (@alinkedd) #512
-
[x] Adding Interactivity (@MinichMykyta) ~#539~ #595
- [x] Responding to Events (@alinkedd) #515
- [x] State: A Component's Memory (@alinkedd) ~#535~ #593
- [x] Render and Commit (@kpripper) #534
- [x] State as a Snapshot (@undead404) #549
- [x] Queueing a Series of State Updates (@undead404) #552
- [ ] Updating Objects in State (@Stanislav-prog) #631
- [x] Updating Arrays in State (@astropsy999) #553
-
[ ] Managing State (@tpostolyuk) #588 - waiting for subpages to be translated
- [x] Reacting to Input with State (@undead404) ~~#555~~ #581
- [ ] Choosing the State Structure (@undead404) ~~#557~~ #582
- [x] Sharing State Between Components (@Dmytrii248) #594
- [ ] Preserving and Resetting State (@Dmytrii248) #627
- [ ] Extracting State Logic into a Reducer (@dolgachio)
- [ ] Passing Data Deeply with Context
- [x] Scaling Up with Reducer and Context (@astropsy999) #561
-
[ ] Escape Hatches - DO NOT TRANSLATE UNTIL SUBPAGES ARE TRANSLATED!
- [ ] Referencing Values with Refs
- [ ] Manipulating the DOM with Refs
- [ ] Synchronizing with Effects
- [ ] You Might Not Need an Effect
- [ ] Lifecycle of Reactive Effects
- [ ] Separating Events from Effects
- [ ] Removing Effect Dependencies
- [ ] Reusing Logic with Custom Hooks
API Reference
-
[ ]
react@19Overview -
[x]
react@19: Hooks (@pavlosambur) #598- [ ]
useActionState(useFormState) (@mokhovyk) - [ ]
useCallback(@mokhovyk) #634 - [x]
useContext(@astropsy999) #560 - [ ]
useDebugValue(@tysiachnyi) #635 - [ ]
useDeferredValue - [ ]
useEffect(@Andrii256) #641 - [ ]
useEffectEvent(@Andrii256) #642 - [x]
useId(@LeoMorgan113) #633 - [x]
useImperativeHandle(@MaksymMohyla) #592 - [ ]
useInsertionEffect - [ ]
useLayoutEffect - [ ]
useMemo - [x]
useOptimistic(@TanuhaUA) #637 - [ ]
useReducer - [ ]
useRef - [ ]
useState(@pavlosambur) #601 - [ ]
useSyncExternalStore - [ ]
useTransition
- [ ]
-
[ ]
react@19: Components- [ ]
<Fragment> (<>)(needs additional translations!) (@syavik2001) (#460) - [x]
<Profiler>(@GeorgeShvab) (#564) - [ ]
<StrictMode> - [ ]
<Suspense>(@GeorgeShvab) #556 - [ ]
<Activity>(@Grenvals) - [ ]
<ViewTransition>(canary)
- [ ]
-
[ ]
react@19: APIs- [ ]
act - [ ]
addTransitionType(canary) - [ ]
cache - [ ]
captureOwnerStack - [ ]
createContext - [ ]
lazy - [ ]
memo - [ ]
startTransition - [ ]
use - [ ] experimental
experimental_taintObjectReference - [ ] experimental
experimental_taintUniqueValue
- [ ]
-
[ ]
react-dom@19: Hooks- [ ]
useFormStatus
- [ ]
-
[ ]
react-dom@19: Components- [ ] Common (e.g.
<div>) - [ ]
<form> - [ ]
<input> - [ ]
<option> - [ ]
<progress> - [ ]
<select> - [ ]
<textarea> - [ ]
<link> - [ ]
<meta> - [ ]
<script> - [ ]
<style> - [ ]
<title>
- [ ] Common (e.g.
-
[ ]
react-dom@19: APIs- [x]
createPortal(@GeorgeShvab) (#468) - [ ]
flushSync - ~~
findDOMNode~~ - ~~
hydrate(@GeorgeShvab) (#503)~~ - [ ]
preconnect - [ ]
prefetchDNS - [ ]
preinit - [ ]
preinitModule - [ ]
preload - [ ]
preloadModule - ~~
render~~ - ~~
unmountComponentAtNode~~
- [x]
-
[ ]
react-dom@19/client: Client APIs- [ ]
createRoot - [ ]
hydrateRoot
- [ ]
-
[ ]
react-dom@19/server: Server APIs- ~~
renderToNodeStream~~ - [ ]
renderToPipeableStream - [ ]
renderToReadableStream - [ ]
renderToStaticMarkup - ~~
renderToStaticNodeStream~~ - [ ]
renderToString - [ ]
resume - [ ]
resumeToPipeableStream
- ~~
-
[ ]
react-dom@19/server: Static APIs- [ ]
prerender - [ ]
prerenderToNodeStream - [ ]
resumeAndPrerender - [ ]
resumeAndPrerenderToNodeStream
- [ ]
Navigation and UI
We suggest to leave most of the UI translation until the end. We plan to do some invasive changes to the website folder layout and components, so postponing this until your translation is almost complete would make it easier to merge the changes from our side later. It might make sense to translate the homepage above the fold early, but leave the rest for later. As individual pages get translated, you can change the page titles in the corresponding sidebar files. Finally, when you're translating the navigation, make sure to test both desktop and mobile layouts.
- [x] Homepage (currently in
HomeContent.js) (@alinkedd) #596, #602 - [ ] Sidebars (currently in
src/sidebar*.json) (@undead404) #551 + every next article should be shipped with its title changed in the sidebar and/or footer; #596 - in progress - [x] Top-level navigation (currently in
TopNav.tsx) (@alinkedd) #596 - [x] Other UI ~~#562~~ (@alinkedd) #596 #609 #610
When You're Ready...
After everything above is translated, add your language to deployedLanguages in Seo.tsx of the original reactjs/react.dev repository.
Secondary Content
These API pages should ideally be translated too, but they're less urgent and can be done after the others:
React Compiler
- [ ] Configuration
- [ ]
compilationMode - [ ]
gating - [ ]
logger - [ ]
panicThreshold - [ ]
target
- [ ]
- [ ] Directives
- [ ]
'use memo' - [ ]
'use no memo'
- [ ]
- [ ] Compiling Libraries
React Dev Tools
- [ ] React Performance tracks
Lints
- [ ] Lints (eslint-plugin-react-hooks)
- [ ] exhaustive-deps
- [ ] rules-of-hooks
- [ ] component-hook-factories
- [ ] config
- [ ] error-boundaries
- [ ] gating
- [ ] globals
- [ ] immutability
- [ ] incompatible-library
- [ ] preserve-manual-memoization
- [ ] purity
- [ ] refs
- [ ] set-state-in-effect
- [ ] set-state-in-render
- [ ] static-components
- [ ] unsupported-syntax
- [ ] use-memo
Rules of React
- [ ] Rules of React
- [ ] Components and Hooks must be pure
- [ ] React calls Components and Hooks
- [ ] Rules of Hooks
React Server Components
- [ ] Server Components
- [ ] Server Functions
- [ ] Directives
- [ ]
'use client' - [ ]
'use server'
- [ ]
Legacy APIs
- [ ] Legacy React APIs
- [ ]
Children - [ ]
cloneElement - [ ]
Component - [ ]
createElement - ~~
createFactory~~ - [ ]
createRef - [x]
forwardRef(@GeorgeShvab) (#473) - [ ]
isValidElement - [ ]
PureComponent
- [ ]
Optional Content
These aren't the main translation targets, but if you'd like to do them, feel free to expand the list to include their subpages:
- [x] Versions (@alinkedd) #610
- [ ] Community
- ...
- [x] Translations (@alinkedd) #597
- [x] Blog (intro) (@alinkedd) #610
- articles
- [x] Banner (@alinkedd) #607
- [ ] Warnings
Hi, I would like to translate useLayoutEffect
Hi! I would like to translate Reusing Logic with Custom Hooks
Hi, there. I would like to translate Start a New React Project
Hi! I would like to translate Your First Component
Done in #458
I would like to translate Tutorial: Tic Tac Toe
I'd like to take Thinking in React
Hi! I would like to translate react: Components: Fragment (<>)
Done in #460
@vldmrkl @ithompson4 @oleksii-polovyi @MargarytaChepiga
Can you please confirm whether you'd be able to steer and maintain this translation? If not, please let us know by updating https://github.com/reactjs/translations.react.dev/blob/main/langs/uk.json so that we know who is active and can set the GH permissions right. Thank you!
Hi, I'd like to take Keeping Components Pure
Hi there. I would like to translate createPortal page
Done in #468
Hi, I'd like to translate Add React to an Existing Project
Done in #459
Hi, I'd like to translate react: APIs: lazy
Hey! I'd like to translate Quick Start and Tutorial: Tic Tac Toe
#466
@vldmrkl @ithompson4 @oleksii-polovyi @MargarytaChepiga
Can you please confirm whether you'd be able to maintain this translation? Totally understand if not, but in that case we'd need to form a new maintainer team first. Thank you!
I'll start translating Editor Setup page
Hi, I'll start translating Importing and Exporting Components page.
It's done in https://github.com/reactjs/uk.react.dev/pull/464
Hi folks,
While I appreciate everyone’s requests to take a piece of the translation, the main issue right now is that it doesn’t appear that anyone on the original maintainer team is able to steer this translation effort.
Would anyone like to volunteer to do that?
Hi folks,
While I appreciate everyone’s requests to take a piece of the translation, the main issue right now is that it doesn’t appear that anyone on the original maintainer team is able to steer this translation effort.
Would anyone like to volunteer to do that?
Well, then I'd like to try
@bkatsevych Do you have some experience doing translations? We'd like to ideally either have maintainers who've done translations before, or to have more than one maintainer per translation.
@gaearon No, unfortunately I don't. But I'm willing to do my best
Alright, let's give it a try. I've added you to the repo. Thanks!
Hi, I would like to translate
useLayoutEffect
@eugenetree, go for it!
Hi! I would like to translate
Reusing Logic with Custom Hooks
@PavelVyny go for it!
Hi, there. I would like to translate
Start a New React Project
@sergii-zhuravel it's yours, go for it!
I would like to translate
Tutorial: Tic Tac Toe
@dolynchuk Sounds good, go for it!
I'd like to take
Thinking in React
@gymnasy55 Go for it!
@bkatsevych Please also edit the post to include who's working on what.
I think it would be a good idea to come up with a solid naming convention for PRs. My version is something like "Finished translation of %page_name_in_quotes% page". Any suggestions are highly welcome
Hi, I'd like to take
Keeping Components Pure
@EngiN33R Go for it!
Hi there. I would like to translate
createPortalpage
@GeorgeShvab go for it!