🎨 Frontend · React

@react-modernizerMigre class components vers function + hooks

Maifady est un plugin Claude Code 100% gratuit avec 30 agents IA — @react-modernizer migre tes class components React vers function + hooks, transforme les HOC en custom hooks, remplace les APIs dépréciées (componentWillMount, refs strings, vieux context API) — un composant à la fois, comportement préservé, tests verts.

Télécharger MaifadyVoir les 30 agents

Le problème qu'il résout

Tu reprends un projet React de 2019. Plein de class extends React.Component, des componentDidMount, des this.refs.input, et des HOC qui empilent 5 wrappers. Tu veux moderniser, mais tu sais que la migration naïve casse des trucs subtils (timing de useEffect vs componentDidMount, par exemple).

@react-modernizer migre un composant à la fois et flag les changements de comportement subtils.

Comment il bosse

  1. Lit le composant cible + ses tests.
  2. Identifie state, lifecycle, props API, contrats avec children.
  3. Migre UN composant à la fois.
  4. Mapping : this.stateuseState (un hook par concern, pas un seul giant), componentDidMountuseEffect([], ...), componentWillUnmount → return cleanup, this.refsuseRef, ancien context → useContext.
  5. Note les subtle behavior changes (useEffect runs after paint, contrairement à componentDidMount qui runs avant).
  6. Vérifie que les tests passent après chaque migration.

Exemple concret

Tu tapes

@react-modernizer migre src/components/Dashboard.tsx (Class) vers function + hooks.
Préserve l'API publique (props). Tests doivent rester verts.

Tu obtiens

## Avant : Class component, 187 lignes
## Après : Function + hooks, 124 lignes

## Mapping
- this.state.user → useState<User | null>
- this.state.loading → useState<boolean>
- this.state.error → useState<Error | null>
- componentDidMount → useEffect([], fetchUser)
- componentDidUpdate(prev) → useEffect([userId], fetchUser)
- componentWillUnmount → cleanup in useEffect
- this.refs.searchInput → useRef<HTMLInputElement>
- this.context (ThemeContext) → useContext(ThemeContext)

## Subtle behavior changes
- useEffect runs AFTER paint (vs componentDidMount BEFORE).
  Impact ici : aucun (pas de DOM manipulation pre-paint).

## Tests : 12/12 passing ✓

Pourquoi tu vas l'aimer

🪜

Un composant à la fois

Pas de big-bang. Commit entre chaque. Si quelque chose pète, tu sais quoi rollback.

🛡️

API publique préservée

Les props restent les mêmes. Les imports du composant ne changent pas.

🎯

Hooks par concern

Pas un seul useState géant. Plusieurs useState, un par responsibility.

⚠️

Flag les surprises

useEffectcomponentDidMount. L'agent te dit quand c'est important.

Quand l'utiliser

✅ Idéal pour

  • Projet React legacy avec class components
  • Migration progressive d'une codebase
  • Composant que tu vas modifier de toute façon (refactor + migration)

⚠️ Pas adapté quand

Combine avec ces agents

Questions fréquentes

Migre-t-il les HOC ?

Oui quand c'est sensé : un HOC qui ajoute juste du state / behavior devient un custom hook. Si le HOC fait du styling, il reste tel quel.

Et les class components avec methods complexes ?

Les methods deviennent des fonctions inline (ou useCallback si stabilité de référence nécessaire). L'agent justifie chaque useCallback / useMemo qu'il introduit.

Prêt à moderniser ton React ?

Télécharger Maifady