# React 19 Source Desk > A move of one React source file to React 19, following the skill's table from github/awesome-copilot. Paste the file > (or drop it); the browser masks comments, strings, template literals and regex literals and rewrites what React 19 > changes mechanically: ReactDOM.render to createRoot(...).render and ReactDOM.hydrate to hydrateRoot with the > react-dom/client import, an untyped forwardRef to a function component that takes ref as a prop, defaultProps on a > function component to default parameters (class components keep static defaultProps), useRef() to useRef(null), and > the React 19 note above propTypes. It flags findDOMNode, unmountComponentAtNode, typed forwardRef, legacy context, > string refs and an unused React import. Metered runs write the review and the whole React 19 file. Built on the > SkillSafe skill @github/react19-source-patterns, from github/awesome-copilot (MIT). > An independent tool: not affiliated with or endorsed by Meta or the React team (React is a trademark of Meta Platforms, Inc.). > The page re-scans files; it does not compile, type-check or run them. https://react19-source-desk.skillsafe.ai/ ## What is free - The scan: every finding with an id (N1, N2, ...), a severity (blocker - removed in React 19, major, minor), the line, where it sits, what the page saw, the fix, and whether the page already made the change. - The skill's table marked from the scan, the install and grep steps. - The React 19 file itself (the mechanical changes made), a unified .patch for git apply, findings as CSV, everything as JSON. ## The metered lanes Two tasks on gpt-terra, metered per run, routed by `task`. Input string fields: `task` (review or rewrite), `unit`, `code`, `carry` (rewrite only: the review's decisions) and `facts` (the page's scan). - `review` replies with `summary`, `findings` (confirmed ids with the issue, the fix and the React 19 lines), `cleared`, `extra` (up to five issues a scan cannot see, on real lines), `plan` (the steps in order, naming their ids) and `caveats`. - `rewrite` replies with `summary`, `code` (the whole React 19 file), `changes`, `kept` and `caveats`. The page holds every reply to its scan: each id accounted for exactly once, every component and the whole file kept, and the rewritten file re-scanned - a removed API left behind, or a new one, is flagged. ## Links - API tutorial: https://react19-source-desk.skillsafe.ai/api.html - Source skill: https://skillsafe.ai/skill/@github/react19-source-patterns