gitextract_nwqdaqk2/ ├── .claude/ │ ├── agents/ │ │ └── docs-reviewer.md │ ├── settings.json │ └── skills/ │ ├── docs-components/ │ │ └── SKILL.md │ ├── docs-rsc-sandpack/ │ │ └── SKILL.md │ ├── docs-sandpack/ │ │ └── SKILL.md │ ├── docs-voice/ │ │ └── SKILL.md │ ├── docs-writer-blog/ │ │ └── SKILL.md │ ├── docs-writer-learn/ │ │ └── SKILL.md │ ├── docs-writer-reference/ │ │ └── SKILL.md │ ├── react-expert/ │ │ └── SKILL.md │ ├── review-docs/ │ │ └── SKILL.md │ └── write/ │ └── SKILL.md ├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── 0-bug.yml │ │ ├── 1-typo.yml │ │ ├── 3-framework.yml │ │ ├── config.yml │ │ ├── need-translation.md │ │ └── term.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ └── workflows/ │ ├── analyze.yml │ ├── analyze_comment.yml │ ├── site_lint.yml │ ├── textlint_lint.yml │ └── textlint_test.yml ├── .gitignore ├── .husky/ │ ├── common.sh │ └── pre-commit ├── .prettierignore ├── .prettierrc ├── .textlintrc.js ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── CLAUDE.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE-DOCS.md ├── README.md ├── colors.js ├── eslint-local-rules/ │ ├── __tests__/ │ │ ├── fixtures/ │ │ │ └── src/ │ │ │ └── content/ │ │ │ ├── basic-error.md │ │ │ ├── duplicate-metadata.md │ │ │ ├── malformed-metadata.md │ │ │ ├── mixed-language.md │ │ │ ├── stale-expected-error.md │ │ │ └── suppressed-error.md │ │ └── lint-markdown-code-blocks.test.js │ ├── index.js │ ├── package.json │ ├── parser.js │ └── rules/ │ ├── diagnostics.js │ ├── lint-markdown-code-blocks.js │ ├── markdown.js │ ├── metadata.js │ └── react-compiler.js ├── eslint.config.mjs ├── lint-staged.config.js ├── next-env.d.ts ├── next.config.js ├── package.json ├── plugins/ │ ├── markdownToHtml.js │ ├── remark-header-custom-ids.js │ └── remark-smartypants.js ├── postcss.config.js ├── public/ │ ├── .well-known/ │ │ └── atproto-did │ ├── browserconfig.xml │ ├── html/ │ │ └── single-file-example.html │ ├── js/ │ │ ├── jsfiddle-integration-babel.js │ │ └── jsfiddle-integration.js │ ├── robots.txt │ └── site.webmanifest ├── scripts/ │ ├── buildRscWorker.mjs │ ├── copyright.js │ ├── deadLinkChecker.js │ ├── downloadFonts.mjs │ ├── generateRss.js │ ├── headingIDHelpers/ │ │ ├── generateHeadingIDs.js │ │ ├── validateHeadingIDs.js │ │ └── walk.js │ └── headingIdLinter.js ├── src/ │ ├── components/ │ │ ├── Breadcrumbs.tsx │ │ ├── Button.tsx │ │ ├── ButtonLink.tsx │ │ ├── DocsFooter.tsx │ │ ├── ErrorDecoderContext.tsx │ │ ├── ExternalLink.tsx │ │ ├── Icon/ │ │ │ ├── IconArrow.tsx │ │ │ ├── IconArrowSmall.tsx │ │ │ ├── IconBsky.tsx │ │ │ ├── IconCanary.tsx │ │ │ ├── IconChevron.tsx │ │ │ ├── IconClose.tsx │ │ │ ├── IconCodeBlock.tsx │ │ │ ├── IconCopy.tsx │ │ │ ├── IconDeepDive.tsx │ │ │ ├── IconDownload.tsx │ │ │ ├── IconError.tsx │ │ │ ├── IconExperimental.tsx │ │ │ ├── IconFacebookCircle.tsx │ │ │ ├── IconGitHub.tsx │ │ │ ├── IconHamburger.tsx │ │ │ ├── IconHint.tsx │ │ │ ├── IconInstagram.tsx │ │ │ ├── IconLink.tsx │ │ │ ├── IconNavArrow.tsx │ │ │ ├── IconNewPage.tsx │ │ │ ├── IconNote.tsx │ │ │ ├── IconPitfall.tsx │ │ │ ├── IconRestart.tsx │ │ │ ├── IconRocket.tsx │ │ │ ├── IconRss.tsx │ │ │ ├── IconSearch.tsx │ │ │ ├── IconSolution.tsx │ │ │ ├── IconTerminal.tsx │ │ │ ├── IconThreads.tsx │ │ │ ├── IconTwitter.tsx │ │ │ └── IconWarning.tsx │ │ ├── Layout/ │ │ │ ├── Feedback.tsx │ │ │ ├── Footer.tsx │ │ │ ├── HomeContent.js │ │ │ ├── Page.tsx │ │ │ ├── Sidebar/ │ │ │ │ ├── SidebarButton.tsx │ │ │ │ ├── SidebarLink.tsx │ │ │ │ ├── SidebarRouteTree.tsx │ │ │ │ └── index.tsx │ │ │ ├── SidebarNav/ │ │ │ │ ├── SidebarNav.tsx │ │ │ │ └── index.tsx │ │ │ ├── Toc.tsx │ │ │ ├── TopNav/ │ │ │ │ ├── BrandMenu.tsx │ │ │ │ ├── TopNav.tsx │ │ │ │ └── index.tsx │ │ │ ├── getRouteMeta.tsx │ │ │ └── useTocHighlight.tsx │ │ ├── Logo.tsx │ │ ├── MDX/ │ │ │ ├── BlogCard.tsx │ │ │ ├── Challenges/ │ │ │ │ ├── Challenge.tsx │ │ │ │ ├── Challenges.tsx │ │ │ │ ├── Navigation.tsx │ │ │ │ └── index.tsx │ │ │ ├── CodeBlock/ │ │ │ │ ├── CodeBlock.tsx │ │ │ │ └── index.tsx │ │ │ ├── CodeDiagram.tsx │ │ │ ├── ConsoleBlock.tsx │ │ │ ├── Diagram.tsx │ │ │ ├── DiagramGroup.tsx │ │ │ ├── ErrorDecoder.tsx │ │ │ ├── ExpandableCallout.tsx │ │ │ ├── ExpandableExample.tsx │ │ │ ├── Heading.tsx │ │ │ ├── InlineCode.tsx │ │ │ ├── Intro.tsx │ │ │ ├── LanguagesContext.tsx │ │ │ ├── Link.tsx │ │ │ ├── MDXComponents.module.css │ │ │ ├── MDXComponents.tsx │ │ │ ├── PackageImport.tsx │ │ │ ├── Recap.tsx │ │ │ ├── Sandpack/ │ │ │ │ ├── ClearButton.tsx │ │ │ │ ├── Console.tsx │ │ │ │ ├── CustomPreset.tsx │ │ │ │ ├── DownloadButton.tsx │ │ │ │ ├── ErrorMessage.tsx │ │ │ │ ├── LoadingOverlay.tsx │ │ │ │ ├── NavigationBar.tsx │ │ │ │ ├── OpenInCodeSandboxButton.tsx │ │ │ │ ├── OpenInTypeScriptPlayground.tsx │ │ │ │ ├── Preview.tsx │ │ │ │ ├── ReloadButton.tsx │ │ │ │ ├── ResetButton.tsx │ │ │ │ ├── SandpackRSCRoot.tsx │ │ │ │ ├── SandpackRoot.tsx │ │ │ │ ├── Themes.tsx │ │ │ │ ├── createFileMap.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── runESLint.tsx │ │ │ │ ├── sandpack-rsc/ │ │ │ │ │ ├── RscFileBridge.tsx │ │ │ │ │ └── sandbox-code/ │ │ │ │ │ └── src/ │ │ │ │ │ ├── __react_refresh_init__.js │ │ │ │ │ ├── rsc-client.js │ │ │ │ │ ├── rsc-server.js │ │ │ │ │ ├── webpack-shim.js │ │ │ │ │ └── worker-bundle.dist.js │ │ │ │ ├── template.ts │ │ │ │ ├── templateRSC.ts │ │ │ │ └── useSandpackLint.tsx │ │ │ ├── SandpackWithHTMLOutput.tsx │ │ │ ├── SimpleCallout.tsx │ │ │ ├── TeamMember.tsx │ │ │ ├── TerminalBlock.tsx │ │ │ ├── TocContext.tsx │ │ │ └── YouWillLearnCard.tsx │ │ ├── PageHeading.tsx │ │ ├── Search.tsx │ │ ├── Seo.tsx │ │ ├── SocialBanner.tsx │ │ └── Tag.tsx │ ├── content/ │ │ ├── blog/ │ │ │ ├── 2020/ │ │ │ │ └── 12/ │ │ │ │ └── 21/ │ │ │ │ └── data-fetching-with-react-server-components.md │ │ │ ├── 2021/ │ │ │ │ ├── 06/ │ │ │ │ │ └── 08/ │ │ │ │ │ └── the-plan-for-react-18.md │ │ │ │ └── 12/ │ │ │ │ └── 17/ │ │ │ │ └── react-conf-2021-recap.md │ │ │ ├── 2022/ │ │ │ │ ├── 03/ │ │ │ │ │ ├── 08/ │ │ │ │ │ │ └── react-18-upgrade-guide.md │ │ │ │ │ └── 29/ │ │ │ │ │ └── react-v18.md │ │ │ │ └── 06/ │ │ │ │ └── 15/ │ │ │ │ └── react-labs-what-we-have-been-working-on-june-2022.md │ │ │ ├── 2023/ │ │ │ │ ├── 03/ │ │ │ │ │ ├── 16/ │ │ │ │ │ │ └── introducing-react-dev.md │ │ │ │ │ └── 22/ │ │ │ │ │ └── react-labs-what-we-have-been-working-on-march-2023.md │ │ │ │ └── 05/ │ │ │ │ └── 03/ │ │ │ │ └── react-canaries.md │ │ │ ├── 2024/ │ │ │ │ ├── 02/ │ │ │ │ │ └── 15/ │ │ │ │ │ └── react-labs-what-we-have-been-working-on-february-2024.md │ │ │ │ ├── 04/ │ │ │ │ │ └── 25/ │ │ │ │ │ └── react-19-upgrade-guide.md │ │ │ │ ├── 05/ │ │ │ │ │ └── 22/ │ │ │ │ │ └── react-conf-2024-recap.md │ │ │ │ ├── 10/ │ │ │ │ │ └── 21/ │ │ │ │ │ └── react-compiler-beta-release.md │ │ │ │ └── 12/ │ │ │ │ └── 05/ │ │ │ │ └── react-19.md │ │ │ ├── 2025/ │ │ │ │ ├── 02/ │ │ │ │ │ └── 14/ │ │ │ │ │ └── sunsetting-create-react-app.md │ │ │ │ ├── 04/ │ │ │ │ │ ├── 21/ │ │ │ │ │ │ └── react-compiler-rc.md │ │ │ │ │ └── 23/ │ │ │ │ │ └── react-labs-view-transitions-activity-and-more.md │ │ │ │ ├── 10/ │ │ │ │ │ ├── 01/ │ │ │ │ │ │ └── react-19-2.md │ │ │ │ │ ├── 07/ │ │ │ │ │ │ ├── introducing-the-react-foundation.md │ │ │ │ │ │ └── react-compiler-1.md │ │ │ │ │ └── 16/ │ │ │ │ │ └── react-conf-2025-recap.md │ │ │ │ └── 12/ │ │ │ │ ├── 03/ │ │ │ │ │ └── critical-security-vulnerability-in-react-server-components.md │ │ │ │ └── 11/ │ │ │ │ └── denial-of-service-and-source-code-exposure-in-react-server-components.md │ │ │ ├── 2026/ │ │ │ │ └── 02/ │ │ │ │ └── 24/ │ │ │ │ └── the-react-foundation.md │ │ │ └── index.md │ │ ├── community/ │ │ │ ├── acknowledgements.md │ │ │ ├── conferences.md │ │ │ ├── docs-contributors.md │ │ │ ├── index.md │ │ │ ├── meetups.md │ │ │ ├── team.md │ │ │ ├── translations.md │ │ │ ├── versioning-policy.md │ │ │ └── videos.md │ │ ├── errors/ │ │ │ ├── 377.md │ │ │ ├── generic.md │ │ │ └── index.md │ │ ├── index.md │ │ ├── learn/ │ │ │ ├── add-react-to-an-existing-project.md │ │ │ ├── adding-interactivity.md │ │ │ ├── build-a-react-app-from-scratch.md │ │ │ ├── choosing-the-state-structure.md │ │ │ ├── conditional-rendering.md │ │ │ ├── creating-a-react-app.md │ │ │ ├── describing-the-ui.md │ │ │ ├── editor-setup.md │ │ │ ├── escape-hatches.md │ │ │ ├── extracting-state-logic-into-a-reducer.md │ │ │ ├── importing-and-exporting-components.md │ │ │ ├── index.md │ │ │ ├── installation.md │ │ │ ├── javascript-in-jsx-with-curly-braces.md │ │ │ ├── keeping-components-pure.md │ │ │ ├── lifecycle-of-reactive-effects.md │ │ │ ├── managing-state.md │ │ │ ├── manipulating-the-dom-with-refs.md │ │ │ ├── passing-data-deeply-with-context.md │ │ │ ├── passing-props-to-a-component.md │ │ │ ├── preserving-and-resetting-state.md │ │ │ ├── queueing-a-series-of-state-updates.md │ │ │ ├── react-compiler/ │ │ │ │ ├── debugging.md │ │ │ │ ├── incremental-adoption.md │ │ │ │ ├── index.md │ │ │ │ ├── installation.md │ │ │ │ └── introduction.md │ │ │ ├── react-developer-tools.md │ │ │ ├── reacting-to-input-with-state.md │ │ │ ├── referencing-values-with-refs.md │ │ │ ├── removing-effect-dependencies.md │ │ │ ├── render-and-commit.md │ │ │ ├── rendering-lists.md │ │ │ ├── responding-to-events.md │ │ │ ├── reusing-logic-with-custom-hooks.md │ │ │ ├── rsc-sandbox-test.md │ │ │ ├── scaling-up-with-reducer-and-context.md │ │ │ ├── separating-events-from-effects.md │ │ │ ├── setup.md │ │ │ ├── sharing-state-between-components.md │ │ │ ├── start-a-new-react-project.md │ │ │ ├── state-a-components-memory.md │ │ │ ├── state-as-a-snapshot.md │ │ │ ├── synchronizing-with-effects.md │ │ │ ├── thinking-in-react.md │ │ │ ├── tutorial-tic-tac-toe.md │ │ │ ├── typescript.md │ │ │ ├── understanding-your-ui-as-a-tree.md │ │ │ ├── updating-arrays-in-state.md │ │ │ ├── updating-objects-in-state.md │ │ │ ├── writing-markup-with-jsx.md │ │ │ ├── you-might-not-need-an-effect.md │ │ │ └── your-first-component.md │ │ ├── reference/ │ │ │ ├── dev-tools/ │ │ │ │ └── react-performance-tracks.md │ │ │ ├── eslint-plugin-react-hooks/ │ │ │ │ ├── index.md │ │ │ │ └── lints/ │ │ │ │ ├── component-hook-factories.md │ │ │ │ ├── config.md │ │ │ │ ├── error-boundaries.md │ │ │ │ ├── exhaustive-deps.md │ │ │ │ ├── gating.md │ │ │ │ ├── globals.md │ │ │ │ ├── immutability.md │ │ │ │ ├── incompatible-library.md │ │ │ │ ├── preserve-manual-memoization.md │ │ │ │ ├── purity.md │ │ │ │ ├── refs.md │ │ │ │ ├── rules-of-hooks.md │ │ │ │ ├── set-state-in-effect.md │ │ │ │ ├── set-state-in-render.md │ │ │ │ ├── static-components.md │ │ │ │ ├── unsupported-syntax.md │ │ │ │ └── use-memo.md │ │ │ ├── react/ │ │ │ │ ├── Activity.md │ │ │ │ ├── Children.md │ │ │ │ ├── Component.md │ │ │ │ ├── Fragment.md │ │ │ │ ├── Profiler.md │ │ │ │ ├── PureComponent.md │ │ │ │ ├── StrictMode.md │ │ │ │ ├── Suspense.md │ │ │ │ ├── ViewTransition.md │ │ │ │ ├── act.md │ │ │ │ ├── addTransitionType.md │ │ │ │ ├── apis.md │ │ │ │ ├── cache.md │ │ │ │ ├── cacheSignal.md │ │ │ │ ├── captureOwnerStack.md │ │ │ │ ├── cloneElement.md │ │ │ │ ├── components.md │ │ │ │ ├── createContext.md │ │ │ │ ├── createElement.md │ │ │ │ ├── createFactory.md │ │ │ │ ├── createRef.md │ │ │ │ ├── experimental_taintObjectReference.md │ │ │ │ ├── experimental_taintUniqueValue.md │ │ │ │ ├── experimental_useEffectEvent.md │ │ │ │ ├── forwardRef.md │ │ │ │ ├── hooks.md │ │ │ │ ├── index.md │ │ │ │ ├── isValidElement.md │ │ │ │ ├── lazy.md │ │ │ │ ├── legacy.md │ │ │ │ ├── memo.md │ │ │ │ ├── startTransition.md │ │ │ │ ├── use.md │ │ │ │ ├── useActionState.md │ │ │ │ ├── useCallback.md │ │ │ │ ├── useContext.md │ │ │ │ ├── useDebugValue.md │ │ │ │ ├── useDeferredValue.md │ │ │ │ ├── useEffect.md │ │ │ │ ├── useEffectEvent.md │ │ │ │ ├── useId.md │ │ │ │ ├── useImperativeHandle.md │ │ │ │ ├── useInsertionEffect.md │ │ │ │ ├── useLayoutEffect.md │ │ │ │ ├── useMemo.md │ │ │ │ ├── useOptimistic.md │ │ │ │ ├── useReducer.md │ │ │ │ ├── useRef.md │ │ │ │ ├── useState.md │ │ │ │ ├── useSyncExternalStore.md │ │ │ │ └── useTransition.md │ │ │ ├── react-compiler/ │ │ │ │ ├── compilationMode.md │ │ │ │ ├── compiling-libraries.md │ │ │ │ ├── configuration.md │ │ │ │ ├── directives/ │ │ │ │ │ ├── use-memo.md │ │ │ │ │ └── use-no-memo.md │ │ │ │ ├── directives.md │ │ │ │ ├── gating.md │ │ │ │ ├── logger.md │ │ │ │ ├── panicThreshold.md │ │ │ │ └── target.md │ │ │ ├── react-dom/ │ │ │ │ ├── client/ │ │ │ │ │ ├── createRoot.md │ │ │ │ │ ├── hydrateRoot.md │ │ │ │ │ └── index.md │ │ │ │ ├── components/ │ │ │ │ │ ├── common.md │ │ │ │ │ ├── form.md │ │ │ │ │ ├── index.md │ │ │ │ │ ├── input.md │ │ │ │ │ ├── link.md │ │ │ │ │ ├── meta.md │ │ │ │ │ ├── option.md │ │ │ │ │ ├── progress.md │ │ │ │ │ ├── script.md │ │ │ │ │ ├── select.md │ │ │ │ │ ├── style.md │ │ │ │ │ ├── textarea.md │ │ │ │ │ └── title.md │ │ │ │ ├── createPortal.md │ │ │ │ ├── flushSync.md │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.md │ │ │ │ │ └── useFormStatus.md │ │ │ │ ├── index.md │ │ │ │ ├── preconnect.md │ │ │ │ ├── prefetchDNS.md │ │ │ │ ├── preinit.md │ │ │ │ ├── preinitModule.md │ │ │ │ ├── preload.md │ │ │ │ ├── preloadModule.md │ │ │ │ ├── server/ │ │ │ │ │ ├── index.md │ │ │ │ │ ├── renderToPipeableStream.md │ │ │ │ │ ├── renderToReadableStream.md │ │ │ │ │ ├── renderToStaticMarkup.md │ │ │ │ │ ├── renderToString.md │ │ │ │ │ ├── resume.md │ │ │ │ │ └── resumeToPipeableStream.md │ │ │ │ └── static/ │ │ │ │ ├── index.md │ │ │ │ ├── prerender.md │ │ │ │ ├── prerenderToNodeStream.md │ │ │ │ ├── resumeAndPrerender.md │ │ │ │ └── resumeAndPrerenderToNodeStream.md │ │ │ ├── rsc/ │ │ │ │ ├── directives.md │ │ │ │ ├── server-components.md │ │ │ │ ├── server-functions.md │ │ │ │ ├── use-client.md │ │ │ │ └── use-server.md │ │ │ └── rules/ │ │ │ ├── components-and-hooks-must-be-pure.md │ │ │ ├── index.md │ │ │ ├── react-calls-components-and-hooks.md │ │ │ └── rules-of-hooks.md │ │ ├── versions.md │ │ └── warnings/ │ │ ├── invalid-aria-prop.md │ │ ├── invalid-hook-call-warning.md │ │ ├── react-dom-test-utils.md │ │ ├── react-test-renderer.md │ │ ├── special-props.md │ │ └── unknown-prop.md │ ├── hooks/ │ │ └── usePendingRoute.ts │ ├── pages/ │ │ ├── 404.js │ │ ├── 500.js │ │ ├── [[...markdownPath]].js │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── api/ │ │ │ └── md/ │ │ │ └── [...path].ts │ │ ├── errors/ │ │ │ ├── [errorCode].tsx │ │ │ └── index.tsx │ │ └── llms.txt.tsx │ ├── sidebarBlog.json │ ├── sidebarCommunity.json │ ├── sidebarHome.json │ ├── sidebarLearn.json │ ├── sidebarReference.json │ ├── siteConfig.js │ ├── styles/ │ │ ├── algolia.css │ │ ├── index.css │ │ └── sandpack.css │ ├── types/ │ │ └── docsearch-react-modal.d.ts │ └── utils/ │ ├── analytics.ts │ ├── compileMDX.ts │ ├── finishedTranslations.ts │ ├── forwardRefWithAs.tsx │ ├── prepareMDX.js │ ├── processShim.js │ ├── rafShim.js │ ├── rss.js │ └── toCommaSeparatedList.tsx ├── tailwind.config.js ├── textlint/ │ ├── data/ │ │ ├── rules/ │ │ │ └── translateGlossary.js │ │ └── utils/ │ │ ├── errMsg.spec.js │ │ ├── is.spec.js │ │ └── strip.spec.js │ ├── generators/ │ │ └── genTranslateGlossaryDocs.js │ ├── rules/ │ │ └── translateGlossary.js │ ├── tests/ │ │ ├── rules/ │ │ │ └── translateGlossary.spec.js │ │ └── utils/ │ │ ├── errMsg.spec.js │ │ ├── is.spec.js │ │ └── strip.spec.js │ └── utils/ │ ├── errMsg.js │ ├── is.js │ └── strip.js ├── tsconfig.json ├── vercel.json └── wiki/ ├── best-practices-for-translation.md ├── textlint-guide.md ├── translate-glossary-legacy.md ├── translate-glossary.md └── universal-style-guide.md