Voltar ao blog
ReactVuefrontendJavaScriptTypeScript

React ou Vue para painel administrativo: o que eu levo em conta de verdade

Toda vez que essa pergunta aparece, “React ou Vue para o painel?”, eu respiro fundo antes de responder. Não porque seja difícil. Porque quem pergunta normalmente quer uma resposta que eu não vou dar.

Os dois funcionam. Os dois têm suporte ativo, ecossistema maduro, TypeScript decente. Você consegue construir um painel administrativo completo com qualquer um deles sem nenhum drama técnico real. A questão não é qual tecnologia é melhor.

É quem vai sentar e escrever esse código.

O peso do ecossistema React

React tem mais bibliotecas. Muito mais. Isso parece vantagem e às vezes é, mas também significa que a primeira decisão já é difícil: qual biblioteca de componentes? Ant Design, Material UI, Shadcn, Radix, Mantine. Cada uma com filosofia diferente, tamanho de bundle diferente, curva de adoção diferente.

Já vi projeto onde o time passou duas semanas debatendo biblioteca de componentes e não escreveu uma tela sequer. Duas semanas. Não estou inventando.

Depois de decidir a biblioteca, vem o gerenciamento de estado. Zustand, Jotai, Redux, Context puro, React Query pra estado de servidor. São decisões reais que precisam de alguém experiente pra tomar. Se você tem um time de React sênior, isso não é problema. Se tem desenvolvedor que aprendeu React há seis meses, é problema sério.

A flexibilidade do React é real. E o preço dessa flexibilidade também.

Vue é mais opinado, e isso tem valor

O Vue 3 com Composition API ficou muito bom. Sinceramente, se eu fosse ensinar frontend pra alguém com background de HTML e CSS, começaria por Vue. A curva de adoção é menor, a estrutura de componente é mais legível pra quem vem do mundo de templates, e o ecossistema oficial, Pinia pra estado, Vue Router pra roteamento, é bem amarrado. Você não precisa tomar decisão nenhuma sobre isso.

Para time que é majoritariamente PHP e precisa entregar um painel sem depender de especialista frontend caro, Vue é o melhor caminho que já vi funcionar. Já aconteceu de um desenvolvedor com foco em backend entrar no código Vue e conseguir fazer manutenção em horas. Isso não é trivial.

O problema do Vue no Brasil é contratação. Quando você precisa contratar desenvolvedor frontend, o pool de candidatos com React é três vezes maior que o de Vue. Não é julgamento de valor, é mercado. Se o sistema vai crescer e o time vai escalar com contratações futuras, isso pesa na decisão mais do que qualquer benchmark técnico.

A variável que muda tudo quando o backend é Laravel

Se o backend é Laravel, tem uma terceira opção que entra na conversa.

Inertia.js é um adapter que conecta Laravel direto ao React ou Vue, sem precisar construir API separada. Você escreve controllers Laravel normais, retorna props pro front, e o Inertia renderiza os componentes com esses dados. Sem JSON, sem autenticação de API, sem documentação de endpoints pra manter sincronizada com o frontend.

Já usei isso em projeto de painel interno e foi a decisão mais produtiva do projeto. O time de backend entregava tela completa sozinho. Sem negociar contrato de API com ninguém, sem esperar o frontend especificar o que precisava.

Aliás, tem uma opção ainda mais radical que frequentemente ignoro mais do que deveria: Filament. É um framework de painel administrativo pra Laravel, feito em PHP com Livewire, sem React nem Vue no caminho. Para painéis com CRUD pesado, relatórios, gestão de usuário, fluxos de aprovação, o Filament entrega mais em dois dias do que React entregaria em duas semanas. Não é exagero.

Não uso Filament quando preciso de interatividade muito específica ou UI completamente customizada fora dos padrões dele. Mas quando o requisito é administração de dados, gestão de cadastros, relatórios operacionais, ele ganha na velocidade de entrega de um jeito que é difícil de justificar ignorar.

O que eu faço quando chego num projeto

Três perguntas antes de qualquer decisão de stack.

Quem vai manter isso daqui a um ano? Se a resposta é o mesmo time que vai construir agora e esse time é full stack com foco em Laravel, Vue com Inertia ou Filament ganham a discussão. Se a resposta é “vamos contratar frontend”, React. Não porque React seja melhor, mas porque a contratação vai ser mais fácil e o candidato vai chegar com mais contexto de mercado.

O sistema vai ter UI muito customizada ou vai ser CRUD com formulários, tabelas e relatórios? CRUD padrão, Vue ou Filament resolvem mais rápido. Dashboard interativo com gráficos em tempo real, drag and drop, estado complexo que precisa de sincronização entre várias partes da tela, aí o ecossistema do React é mais robusto.

O time tem alguém que conhece React de verdade, não só que usou React uma vez num tutorial? Porque React sem alguém que entenda o modelo de renderização, os problemas de re-render desnecessário, o hook que cria memory leak quando não é limpo corretamente, vai gerar dívida técnica que aparece depois de seis meses em produção. E aí você vai me ligar.

Minha preferência honesta

Prefiro React em times que já têm cultura de frontend forte. O ecossistema é maduro, a contratação é mais fácil no Brasil hoje, e TypeScript no React está muito sólido.

Prefiro Vue quando o time é full stack e precisa de um frontend que todos consigam tocar sem especialização profunda em framework.

E prefiro Filament quando o painel é pra administração interna de um sistema Laravel e o prazo é real. Que em projeto real, o prazo é sempre real.

A pergunta “React ou Vue” parece técnica mas não é. A tecnologia você aprende. A falta da pessoa certa pra manter o código você não resolve mudando de framework depois que o projeto entrou em produção.


Trabalho com projetos de software sob medida e consultorias de arquitetura. Se você está no início de um projeto e quer estruturar a stack antes de comprometer o time, entra em contato pelo gabriels.dev.br.

Falar no WhatsApp