Apollo vs urql: qual cliente GraphQL?
Apollo Client é um cliente GraphQL rico em recursos com um poderoso cache normalizado; urql é um cliente mais leve, composável e baseado em exchanges.
O Apollo Client oferece um cache normalizado sofisticado, estado local, subscriptions e um grande ecossistema, tornando-se o padrão para apps GraphQL complexos, mas com um bundle maior e mais configuração. O urql é menor e construído em torno de exchanges composáveis, com um cache padrão mais simples (document caching) e o graphcache opcional para normalização. Apollo vence em poder de cache e ecossistema; urql vence em tamanho, simplicidade e composabilidade.
| Apollo | urql | |
|---|---|---|
| Cache | Normalizado (poderoso) | Document (graphcache opcional) |
| Tamanho de bundle | Maior | Menor |
| Extensibilidade | Plugins, links | Exchanges composáveis |
| Ecossistema | Grande | Menor, crescendo |
| Melhor para | Apps GraphQL complexos | Clientes enxutos e composáveis |
Caso de uso e cache
Apollo serve a apps GraphQL grandes que precisam de um cache normalizado poderoso, estado local e um amplo ecossistema. urql serve a equipes que querem um cliente mais leve, exchanges composáveis e padrões mais simples, adicionando cache normalizado apenas quando necessário. A divisão é entre profundidade de recursos vs tamanho de bundle e simplicidade.
Testes e CI
Ambos oferecem utilitários de mocking para operações GraphQL em testes. Qualquer um roda em runners gerenciados, onde runners mais rápidos encurtam as suítes de testes de integração GraphQL.
O veredito
Precisa de um cache normalizado poderoso, estado local e um grande ecossistema: Apollo Client. Quer um cliente enxuto e composável com padrões mais simples: urql. Apollo vence em profundidade de cache; urql vence em tamanho e composabilidade.