{"id":"01a423d2-5d20-4585-88ba-6fc0b8518333","shortId":"fgMVca","kind":"skill","title":"react19-source-patterns","tagline":"Reference for React 19 source-file migration patterns, including API changes, ref handling, and context updates.","description":"# React 19 Source Migration Patterns\n\nReference for every source-file migration required for React 19.\n\n## Quick Reference Table\n\n| Pattern | Action | Reference |\n|---|---|---|\n| `ReactDOM.render(...)` | → `createRoot().render()` | See references/api-migrations.md |\n| `ReactDOM.hydrate(...)` | → `hydrateRoot(...)` | See references/api-migrations.md |\n| `unmountComponentAtNode` | → `root.unmount()` | Inline fix |\n| `ReactDOM.findDOMNode` | → direct ref | Inline fix |\n| `forwardRef(...)` wrapper | → ref as direct prop | See references/api-migrations.md |\n| `Component.defaultProps = {}` | → ES6 default params | See references/api-migrations.md |\n| `useRef()` no arg | → `useRef(null)` | Inline fix  add `null` |\n| Legacy Context | → `createContext` | [→ api-migrations.md#legacy-context](references/api-migrations.md#legacy-context) |\n| String refs `this.refs.x` | → `createRef()` | [→ api-migrations.md#string-refs](references/api-migrations.md#string-refs) |\n| `import React from 'react'` (unused) | Remove | Only if no `React.` usage in file |\n\n## PropTypes Rule\n\nDo **not** remove `.propTypes` assignments. The `prop-types` package still works as a standalone validator. React 19 only removes the built-in runtime checking from the React package  the package itself remains valid.\n\nAdd this comment above any `.propTypes` block:\n```jsx\n// NOTE: React 19 no longer runs propTypes validation at runtime.\n// PropTypes kept for documentation and IDE tooling only.\n```\n\n## Read the Reference\n\nFor full before/after code for each migration, read **`references/api-migrations.md`**. It contains the complete patterns including edge cases for `forwardRef` with `useImperativeHandle`, `defaultProps` null vs undefined behavior, and legacy context provider/consumer cross-file migrations.","tags":["react19","source","patterns","awesome","copilot","github","agent-skills","agents","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"capabilities":["skill","source-github","skill-react19-source-patterns","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/react19-source-patterns","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 30743 github stars · SKILL.md body (1,787 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:52:16.378Z","embedding":null,"createdAt":"2026-04-18T21:50:59.033Z","updatedAt":"2026-04-22T00:52:16.378Z","lastSeenAt":"2026-04-22T00:52:16.378Z","tsv":"'19':8,23,37,141,169 'action':42 'add':83,159 'api':15 'api-migrations.md':88,101 'arg':78 'assign':128 'before/after':190 'behavior':213 'block':165 'built':146 'built-in':145 'case':204 'chang':16 'check':149 'code':191 'comment':161 'complet':200 'component.defaultprops':70 'contain':198 'context':20,86,91,95,216 'createcontext':87 'createref':100 'createroot':45 'cross':219 'cross-fil':218 'default':72 'defaultprop':209 'direct':58,66 'document':180 'edg':203 'es6':71 'everi':29 'file':11,32,121,220 'fix':56,61,82 'forwardref':62,206 'full':189 'handl':18 'hydrateroot':50 'ide':182 'import':109 'includ':14,202 'inlin':55,60,81 'jsx':166 'kept':178 'legaci':85,90,94,215 'legacy-context':89,93 'longer':171 'migrat':12,25,33,194,221 'note':167 'null':80,84,210 'packag':133,153,155 'param':73 'pattern':4,13,26,41,201 'prop':67,131 'prop-typ':130 'proptyp':122,127,164,173,177 'provider/consumer':217 'quick':38 'react':7,22,36,110,112,118,140,152,168 'react19':2 'react19-source-patterns':1 'reactdom.finddomnode':57 'reactdom.hydrate':49 'reactdom.render':44 'read':185,195 'ref':17,59,64,97,104,108 'refer':5,27,39,43,187 'references/api-migrations.md':48,52,69,75,92,105,196 'remain':157 'remov':114,126,143 'render':46 'requir':34 'root.unmount':54 'rule':123 'run':172 'runtim':148,176 'see':47,51,68,74 'skill' 'skill-react19-source-patterns' 'sourc':3,10,24,31 'source-fil':9,30 'source-github' 'standalon':138 'still':134 'string':96,103,107 'string-ref':102,106 'tabl':40 'this.refs':98 'tool':183 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'type':132 'undefin':212 'unmountcomponentatnod':53 'unus':113 'updat':21 'usag':119 'useimperativehandl':208 'useref':76,79 'valid':139,158,174 'vs':211 'work':135 'wrapper':63 'x':99","prices":[{"id":"9e95840c-29aa-40bf-b415-12e24a86295e","listingId":"01a423d2-5d20-4585-88ba-6fc0b8518333","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T21:50:59.033Z"}],"sources":[{"listingId":"01a423d2-5d20-4585-88ba-6fc0b8518333","source":"github","sourceId":"github/awesome-copilot/react19-source-patterns","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/react19-source-patterns","isPrimary":false,"firstSeenAt":"2026-04-18T21:50:59.033Z","lastSeenAt":"2026-04-22T00:52:16.378Z"}],"details":{"listingId":"01a423d2-5d20-4585-88ba-6fc0b8518333","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"react19-source-patterns","github":{"repo":"github/awesome-copilot","stars":30743,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-04-21T22:20:21Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"8ef7bdacfa09a33b9fd7207672a0dfb61be4b9a1","skill_md_path":"skills/react19-source-patterns/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/react19-source-patterns"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"react19-source-patterns","description":"Reference for React 19 source-file migration patterns, including API changes, ref handling, and context updates."},"skills_sh_url":"https://skills.sh/github/awesome-copilot/react19-source-patterns"},"updatedAt":"2026-04-22T00:52:16.378Z"}}