Não recomendo o Tailwind CSS
O Tailwind CSS polariza desenvolvedores de frontend: alguns veem suas classes utilitárias como uma forma elegante de domar folhas de estilo grandes e bagunçadas, além de tornar componentes autocontidos e fáceis de reutilizar em times grandes. Críticos argumentam que ele infla o markup, obscurece a semântica, enfraquece a separação entre estrutura e design e, no fim, apenas re-abstracta CSS enquanto ainda exige entender a linguagem subjacente. Muitos concluem que a escolha “certa” depende muito do contexto — tamanho do projeto, habilidades da equipe e ferramentas —, com alternativas como CSS moderno puro, CSS Modules, BEM ou bibliotecas de UI muitas vezes preferidas para manutenção de longo prazo.
Tom Geral
- A discussão é altamente polarizada e repetitiva de debates antigos sobre Tailwind; muitos chamam isso de bikeshedding.
- Vários apontam a popularidade contínua do Tailwind como prova de que ele resolve problemas reais; outros veem sua disseminação como sinal de liderança fraca em frontend ou “slop”.
Benefícios Percebidos do Tailwind
- Acelera a implementação, especialmente para devs que não querem projetar uma arquitetura de CSS ou um esquema de nomes.
- Classes utilitárias tornam componentes/páginas autocontidos; mudanças têm menos chance de causar regressões em cascata em outros lugares.
- Um sistema de design consistente pode ser centralizado na configuração do Tailwind (cores, espaçamento, bordas arredondadas, modo escuro etc.) e depois reutilizado via utilitários.
- Funciona bem em times grandes e codebases grandes, evitando convenções BEM divergentes e CSS “espaguete”.
- É fácil copiar e colar elementos entre projetos e fazê-los parecer idênticos.
- Autocomplete, ferramentas de IDE e assistência de IA tornam os nomes de classes fáceis de lembrar e aplicar.
Principais Críticas
- O markup fica barulhento e difícil de ler; os atributos
classcodificam uma mini-linguagem em vez de usar classes semânticas. - Quebra ou confunde a separação entre “estrutura vs estilo”; parece voltar aos estilos inline.
- Exige aprender o vocabulário do Tailwind além de CSS; devs experientes em CSS relatam que isso os deixa mais lentos.
- Problemas de cascata/prioridade (por exemplo, utilitários conflitantes) enfraquecem o “raciocínio local”, levando a complementos como
tailwind-merge. - O uso de
@applyé controverso: alguns o veem como necessário para manter a sanidade, outros dizem que ele frustra o propósito do Tailwind. - Incentiva valores ad hoc e pontuais (
p-[13px], escalas de cor misturadas), então a consistência ainda depende da disciplina do desenvolvedor.
CSS, Componentes e Alternativas
- Vários argumentam que o próprio CSS (e o modelo do HTML) é o problema de raiz; Tailwind é uma entre várias formas pragmáticas de lidar com isso.
- Outros preferem CSS moderno com variáveis, nesting, estilos escopados, CSS Modules ou BEM, muitas vezes combinado com frameworks de componentes.
- Alguns dividem responsabilidades: CSS ou sistemas de design para tokens e semântica; utilitários no estilo Tailwind apenas para layout/tipografia.
- Alguns observam que, com LLMs/agentes gerando CSS, a principal vantagem do Tailwind (autoria manual rápida) pode importar menos com o tempo.
Contexto e Visão de “Ferramenta Certa”
- Muitos concluem que a adequação depende do contexto: bom para times grandes, protótipos e UIs pesadas em utilitários; menos convincente para codebases pequenas, bem desenhadas e com CSS escopado por componente.