Files
awesome-copilot/plugins/react19-upgrade
Aaron Powell a7fdcd5006 Migrate plugins and canvas extensions to Agent Plugins spec (#2546)
* feat: migrate plugins and extensions to Agent Plugins v1.0.0 spec

- Add \ to all 69 curated plugin manifests
- Migrate all 18 extension manifests: add \, move logo into
  xtensions.com.github.copilot.logo namespace, remove top-level
  logo and string xtensions: '.'
- Update eng/validate-plugins.mjs: require \, validate
  namespace-keyed extensions object for canvas extensions, widen
  name pattern to allow dots (spec §5.5, max 64 chars)
- Update eng/materialize-plugins.mjs: emit spec-clean served manifests
  (only spec fields: \, name, version, description, author,
  homepage, repository, license, keywords, extensions)
- Update eng/generate-website-data.mjs: read logo from namespace
  with fallback to top-level logo for compatibility
- Update eng/create-plugin.mjs: scaffold emits \
- Add .github/workflows/validate-plugins.yml: blocking CI for PRs
  touching plugins/** or extensions/**
- Add spec compliance check to external plugin quality gates:
  non-blocking warnings with /⚠️/🛑 emoji legend
- Update AGENTS.md: document new extension manifest shape,
  add \ to plugin checklist

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76

* refactor: consolidate canvas extension plugins

- Move all extension plugin manifests from extensions/<name> to plugins/<name>
- Keep extensions/<name> as reusable source only
- Remove standalone extension discovery from marketplace and website plugin catalogs
- Auto-bundle same-name extension sources during materialization
- Add build-only extensions.json references for sharing extensions across plugins
- Remove x-awesome-copilot extension metadata support
- Update validation and contributor documentation

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76

* feat: add canvas extension scaffolding skill

- Add repo-local skill for creating canvas extension sources
- Generate spec-compliant plugin manifests under plugins/
- Support registering reusable extensions with multiple plugins
- Remove guidance for extension-local plugin manifests and custom fields

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76

* fix: align extension namespaces with current guidance

- Use each extension ID as its manifest namespace key
- Update validation and website generation to resolve extension-specific namespaces
- Upsert plugin validation PR comments using the existing repository pattern

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76

* fix: use Copilot extension namespace

- Adopt com.github.copilot for all canvas extension manifests
- Require the namespace during validation and website generation
- Update extension scaffolding guidance

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76

* docs: regenerate plugin catalog after merge

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76

* refactor(plugins): move manifests to plugin roots

Use root plugin.json manifests and namespaced extension directories throughout local tooling, validation, generation, and contributor documentation. Restore materialize-plugins.mjs line breaks so the source remains readable in GitHub.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76

* feat(plugins): migrate manifests to namespaced composition

Move repository composition metadata under com.github.awesome-copilot, materialize reusable extensions into the plugin extensions directory, and improve contributor and PR validation guidance.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76

* fix(validation): address plugin review findings

Restore executable build scripts, validate namespaced manifests and hook directories, improve README item counts, and manage validation comments across reruns.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot-Session: 8f3a88cb-e01e-4760-8125-460490dc1a76
2026-08-06 22:29:31 +10:00
..

React 19 Upgrade Plugin

Enterprise toolkit for migrating React 18 codebases to React 19. Includes five specialized agents and three skills targeting the specific challenges of upgrading to React 19's modern API surface.

Installation

copilot plugin install react19-upgrade@awesome-copilot

What's Included

Agents

  1. react19-commander Master orchestrator that coordinates the entire migration pipeline through audit, dependencies, source code migration, and test verification phases.

  2. react19-auditor Deep-scan specialist that identifies every React 19 breaking change and deprecated pattern:

    • Removed APIs: ReactDOM.render, ReactDOM.hydrate, unmountComponentAtNode, findDOMNode, createFactory, react-dom/test-utils exports
    • Legacy Context API (contextTypes, childContextTypes, getChildContext)
    • String refs (this.refs.x)
    • Deprecated patterns: forwardRef, defaultProps on function components, useRef() without initial value
    • Test-specific issues: act import location, Simulate usage, StrictMode changes
  3. react19-dep-surgeon Dependency upgrade specialist that upgrades to react@19, handles @testing-library/react@16+, resolves all peer conflicts, and returns GO/NO-GO confirmation.

  4. react19-migrator Source code migration engine that rewrites required React 19 changes and can apply optional modernizations for deprecated patterns:

    • ReactDOM.rendercreateRoot
    • ReactDOM.hydratehydrateRoot
    • unmountComponentAtNoderoot.unmount()
    • findDOMNode → direct refs
    • Optional modernization: forwardRef → ref as direct prop
    • defaultProps → ES6 defaults
    • Legacy Context → createContext
    • String refs → createRef
    • useRef()useRef(null)
    • propTypes → documentation comments
  5. react19-test-guardian Test suite fixer that handles:

    • act import fixes (react-dom/test-utils → react)
    • SimulatefireEvent migrations
    • StrictMode spy call count deltas (no more double-invoke in React 19)
    • useRef shape updates
    • Custom render helper verification
    • Error boundary test updates
    • Runs tests until zero failures

Skills

  1. react19-concurrent-patterns Deep patterns for React 19 concurrent features including Suspense, use() Hook, Server Components integration, and concurrent batching.

  2. react19-source-patterns Migration patterns for source API changes including DOM/root APIs, refs, and context updates.

  3. react19-test-patterns Comprehensive test migration guide covering act() semantics, error boundary testing, and StrictMode behavioral changes.

Quick Start

Ask: "Start implementing React 19 migration for my codebase"

The react19-commander will guide you through:

  1. Audit → identify all breaking changes
  2. Deps → upgrade to react@19 + compatible libraries
  3. Migrate → fix all deprecated APIs and patterns
  4. Tests → migrate test suite and run to green

Breaking Changes from React 18

Removed APIs

  • ReactDOM.render() use createRoot()
  • ReactDOM.hydrate() use hydrateRoot()
  • ReactDOM.unmountComponentAtNode() use root.unmount()
  • ReactDOM.findDOMNode() use direct refs
  • React.createFactory() use JSX
  • react-dom/test-utils exports
  • Legacy Context API
  • String refs

Deprecated Patterns (Still work but should migrate)

  • forwardRef ref is now a direct prop
  • defaultProps on function components use ES6 defaults
  • useRef() without initial value pass null

Behavioral Changes

  • StrictMode no longer double-invokes effects (affects test call count assertions)
  • propTypes runtime validation removed (keep for documentation, but no runtime checks)

Key Features

  • Comprehensive removal of 8+ deprecated React APIs
  • Handles complex patterns: legacy context, forwardRef, defaultProps
  • Memory-based resumable pipeline survive interruptions
  • Zero tolerance for incomplete migrations run to full success
  • StrictMode-aware test fixes
  • Testing-library v16+ compatibility verification
  • Error boundary and async test pattern updates

Prerequisite

This plugin assumes you're migrating from React 18 codebases. If you're on React 16/17, use the react18-upgrade plugin first to reach React 18.3.1, then use this plugin for the React 19 final upgrade.

Source

This plugin is part of Awesome Copilot.

License

MIT