react-modernization
Ajuda seu agente a atualizar aplicações React para as versões mais recentes. Ele pode migrar componentes antigos para novos padrões.
O que ela faz
Esta ferramenta ajuda a atualizar seu código de programação React para as versões mais recentes. Ela também pode transformar componentes antigos em um formato mais moderno chamado 'hooks' e adaptar seu código para usar recursos mais novos do React.
Quando usar
- ✓Quando você precisa atualizar seu projeto React para uma versão mais nova.
- ✓Ao converter componentes antigos (classes) para o formato moderno (hooks).
- ✓Para usar as novas funcionalidades do React, como 'concurrent features'.
Exemplo do que pedir para a IA
“Atualize este código React para a versão mais recente e use hooks.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta analisa seu código React e aplica automaticamente as mudanças necessárias para as novas versões ou para o formato de hooks. Ela usa 'codemods', que são como scripts de automação para refatorar código.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add wshobson/agents --skill react-modernizationOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/framework-migration/skills/react-modernization/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Modernização do React
Domine atualizações de versão do React, migração de classes para hooks, adoção de recursos concorrentes e codemods para transformação automatizada.
Quando Usar Esta Habilidade
- Atualizar aplicações React para as versões mais recentes
- Migrar componentes de classe para componentes funcionais com hooks
- Adotar recursos concorrentes do React (Suspense, transições)
- Aplicar codemods para refatoração automatizada
- Modernizar padrões de gerenciamento de estado
- Atualizar para TypeScript
- Melhorar o desempenho com recursos do React 18+
Caminho de Atualização de Versão
React 16 → 17 → 18
Mudanças Quebrando por Versão:
React 17:
- Mudanças na delegação de eventos
- Sem pooling de eventos
- Tempo de limpeza de efeitos
- Transformação JSX (não precisa importar React)
React 18:
- Agrupamento automático (automatic batching)
- Renderização concorrente
- Mudanças no Strict Mode (invocação dupla)
- Nova API de root
- Suspense no servidor
Migração de Classes para Hooks
Gerenciamento de Estado
// Before: Class component
class Counter extends React.Component {
constructor(props) {
super(props);
this.state = {
count: 0,
name: "",
};
}
increment = () => {
this.setState({ count: this.state.count + 1 });
};
render() {
return (
<div>
<p>Count: {this.state.count}</p>
<button onClick={this.increment}>Increment</button>
</div>
);
}
}
// After: Functional component with hooks
function Counter() {
const [count, setCount] = useState(0);
const [name, setName] = useState("");
const increment = () => {
setCount(count + 1);
};
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</div>
);
}
Métodos de Ciclo de Vida para Hooks
// Before: Lifecycle methods
class DataFetcher extends React.Component {
state = { data: null, loading: true };
componentDidMount() {
this.fetchData();
}
componentDidUpdate(prevProps) {
if (prevProps.id !== this.props.id) {
this.fetchData();
}
}
componentWillUnmount() {
this.cancelRequest();
}
fetchData = async () => {
const data = await fetch(`/api/${this.props.id}`);
this.setState({ data, loading: false });
};
cancelRequest = () => {
// Cleanup
};
render() {
if (this.state.loading) return <div>Loading...</div>;
return <div>{this.state.data}</div>;
}
}
// After: useEffect hook
function DataFetcher({ id }) {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
let cancelled = false;
const fetchData = async () => {
try {
const response = await fetch(`/api/${id}`);
const result = await response.json();
if (!cancelled) {
setData(result);
setLoading(false);
}
} catch (error) {
if (!cancelled) {
console.error(error);
}
}
};
fetchData();
// Cleanup function
return () => {
cancelled = true;
};
}, [id]); // Re-run when id changes
if (loading) return <div>Loading...</div>;
return <div>{data}</div>;
}
Contexto e HOCs para Hooks
// Before: Context consumer and HOC
const ThemeContext = React.createContext();
class ThemedButton extends React.Component {
static contextType = ThemeContext;
render() {
return (
<button style={{ background: this.context.theme }}>
{this.props.children}
</button>
);
}
}
// After: useContext hook
function ThemedButton({ children }) {
const { theme } = useContext(ThemeContext);
return <button style={{ background: theme }}>{children}</button>;
}
// Before: HOC for data fetching
function withUser(Component) {
return class extends React.Component {
state = { user: null };
componentDidMount() {
fetchUser().then((user) => this.setState({ user }));
}
render() {
return <Component {...this.props} user={this.state.user} />;
}
};
}
// After: Custom hook
function useUser() {
const [user, setUser] = useState(null);
useEffect(() => {
fetchUser().then(setUser);
}, []);
return user;
}
function UserProfile() {
const user = useUser();
if (!user) return <div>Loading...</div>;
return <div>{user.name}</div>;
}
Recursos Concorrentes do React 18
Nova API de Root
// Antes: React 17
import ReactDOM from "react-dom";
ReactDOM.render(<App />, document.getElementById("root"));
// Depois: React 18
…
Perguntas frequentes
O que são 'hooks'?
'Hooks' são uma forma mais moderna e simples de usar recursos do React em componentes, substituindo a necessidade de usar classes em muitos casos.
O que são 'concurrent features'?
São novas funcionalidades do React (a partir da versão 18) que permitem que a interface do usuário responda melhor e mais rápido, mesmo quando está fazendo tarefas pesadas.
O que são 'codemods'?
'Codemods' são ferramentas que ajudam a transformar automaticamente o código de um formato para outro, como atualizar sintaxe ou migrar de classes para hooks.
Detalhes
Descrição original do autor
Upgrade React applications to latest versions, migrate from class components to hooks, and adopt concurrent features. Use when modernizing React codebases, migrating to React Hooks, or upgrading to latest React versions.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4865
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
angular-developer
Ajuda seu agente a criar código Angular e a dar conselhos sobre a estrutura do projeto. É útil para iniciar novos projetos, criar partes do código ou melhorar a performance e acessibilidade.
affaan-m/ECC
frontend-a11y
Ajuda seu agente a tornar interfaces web acessíveis para todos. Ele garante que sites e apps funcionem bem com leitores de tela e navegação por teclado.
affaan-m/ECC
frontend-patterns
Faz seu agente aplicar padrões modernos no desenvolvimento frontend. Ele otimiza performance, gerencia estado e segue boas práticas em React e Next.js.
affaan-m/ECC