The industry-leading GraphQL client for TypeScript, JavaScript, React, Vue, Angular, and more. Apollo Client delivers powerful caching, intuitive APIs, and comprehensive developer tools to accelerate your app development.
19.8k
Stars
2.7k
Forks
406
Open issues
30
Contributors
AI Analysis
Apollo Client is a production-grade GraphQL client library for TypeScript and JavaScript that works across React, Vue, Angular, Svelte, and vanilla JavaScript environments. It provides intelligent caching, full type safety, and framework-agnostic data management, making it ideal for developers building modern web applications that consume GraphQL APIs. This is a general-purpose library for anyone building frontend applications with GraphQL backends, not a niche tool.
Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.
AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.
Apollo Client: the reference GraphQL client for JS/TS with normalized caching and broad framework support
Apollo Client is a full-featured GraphQL client for JavaScript and TypeScript applications, providing normalized in-memory caching, query/mutation/subscription management, optimistic UI updates, and deep React integration (including React 19 Suspense and RSC). It targets front-end developers building data-driven apps against GraphQL APIs, from small startups to large enterprises. With ~20K GitHub stars, over a decade of development, and NPM downloads in the tens of millions monthly, it is the most widely adopted GraphQL client in the JavaScript ecosystem.
Created in early 2016 by Meteor Development Group (later Apollo GraphQL), it grew alongside the GraphQL ecosystem and became the de facto standard client as GraphQL adoption accelerated from 2018 onward. Major version milestones (v2, v3) progressively improved caching, TypeScript support, and bundle size.
Growth was driven primarily by GraphQL's own rise and Apollo's first-mover advantage in building a cohesive client+server+tooling ecosystem. Enterprise adoption accelerated when v3 addressed bundle size and cache reliability complaints. React's dominance in frontend, combined with Apollo's tight React hooks integration, cemented its position. Recent growth is slower but steady, reflecting a mature, saturated market rather than decline.
NPM package @apollo/client consistently ranks among the most downloaded GraphQL-related packages, with evidence of tens of millions of monthly downloads. Used by companies including Airbnb, Expedia, and numerous mid-to-large enterprises running GraphQL APIs. Community forum and Discord activity is publicly visible. DevTools extensions have tens of thousands of installs. README explicitly states 'powers countless apps worldwide that serve millions of end users.'
Appears to be structured around a framework-agnostic ApolloClient core with a normalized InMemoryCache, link-based middleware pipeline for request/response transformation, and framework-specific view-layer bindings (React hooks, Vue composables, Angular services). Likely uses reactive variables and observables internally for cache reactivity. TypeScript-first with generated type support via companion tooling.
Not documented in README, but CircleCI CI badge is present indicating automated build and test pipelines. Given the project's maturity and enterprise usage, comprehensive test coverage is likely but cannot be confirmed from available metadata.
Extremely active: last push was 2026-07-08 (same day as evaluation date), indicating daily or near-daily commits. 54 stars gained in the last 7 days is modest but consistent with a mature project. Backed by Apollo GraphQL as a commercial entity, reducing bus-factor risk. README reflects React 19 compatibility, showing the team actively tracks ecosystem changes.
ADOPT IF: you are building a React (or Vue/Angular) application with a GraphQL API and need robust normalized caching, optimistic updates, real-time subscriptions, and comprehensive devtools out of the box. AVOID IF: your data requirements are simple, your bundle size budget is tight, or you are not using GraphQL — Apollo Client adds meaningful complexity and weight that lighter alternatives handle more efficiently in those cases. MONITOR IF: you are evaluating whether the ongoing shift toward RSC, server components, and edge-side data fetching may reduce the relevance of a client-side cache model over the next 1-2 years.
Independent dimensions
Mainstream potential
7/10
Technical importance
8/10
Adoption evidence
9/10
- Bundle size remains a concern for performance-sensitive apps; while v3 improved this, Apollo Client is heavier than alternatives like urql or SWR-based stacks.
- Normalized InMemoryCache, while powerful, has a steep learning curve and can produce subtle bugs when cache key or type policy configuration is incorrect.
- The rise of React Server Components and server-driven data fetching patterns may erode the value proposition of a client-side GraphQL cache over time.
- Apollo GraphQL as a company has pivoted focus toward its commercial GraphOS platform; there is a non-zero risk that open source client investment could be deprioritized if business pressures shift.
- GraphQL adoption itself faces headwinds from REST-resurgence narratives and tRPC-style type-safe RPC, which could slow new project adoption of the underlying technology.
Apollo Client will remain the dominant reference implementation for JavaScript GraphQL clients for at least 2-3 more years, but faces gradual erosion in new projects from lighter alternatives and server-component patterns. Likely to evolve toward tighter RSC and edge runtime integration.
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Website
- https://apollographql.com/client
- Language
- TypeScript
- License
- MIT
- Last updated
- 1d ago
- Created
- 126mo ago
- Analyzed with
- anthropic/claude-haiku-4-5
Stars over time
Contributors over time
Top 100 contributors only — repos with more will plateau at 100.
Open issues
Incomplete cache diffs eagerly build missing-field diagnostics (JSON.stringify of store objects + MissingFieldError construction) in production
Docs should cover links for `unique-names` anchor
`client.mutate` result `error` type widens to `ErrorLike | undefined` when `optimisticResponse` is provided (modern signatures)
Backport workflow-hardening fix (excessive-permissions) to `release-3.6`
Top contributors
Similar repos
apollographql/apollo-server
Apollo Server is a production-ready, spec-compliant GraphQL server for Node.js...
apollographql/apollo-ios
Apollo iOS is a strongly-typed GraphQL client for Swift that powers production...
apollographql/apollo-tooling
Apollo CLI was a GraphQL tooling suite for schema validation, operation...
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
19.8k | +24 | TypeScript | 9/10 | 1d ago |
|
|
13.9k | — | TypeScript | 9/10 | 16h ago |
|
|
6k | — | TypeScript | 7/10 | 4d ago |
|
|
4k | — | Swift | 8/10 | 20h ago |
|
|
3k | — | TypeScript | 4/10 | 3w ago |
|
|
6.1k | — | TypeScript | 8/10 | 2mo ago |
TanStack Query offers more generic async state management with lighter bundle footprint; lacks Apollo's normalized cache and native subscription support. Many teams migrating away from Apollo choose this stack for its simplicity and REST/GraphQL agnosticism.
urql is a leaner, more modular GraphQL client with a smaller bundle size and document-based caching by default. Appeals to teams who find Apollo's normalized cache overkill. Less ecosystem tooling and enterprise adoption than Apollo.
Meta's Relay enforces strict data colocation and compiler-driven optimizations for large-scale apps. Technically rigorous but has a steep learning curve and is primarily React-only. Apollo is more accessible and framework-flexible.
Graffle (6K stars) represents a newer, type-safe code-generation-first approach. Still maturing; adoption is not yet verified at scale. Targets developers wanting tighter TypeScript integration without a runtime cache overhead.
Some teams bypass dedicated GraphQL clients entirely, using generic data-fetching hooks with plain fetch or graphql-request. Trades cache normalization and subscriptions for simplicity. Valid for small apps with simple data graphs.