Simple GraphQL Client for JavaScript. Minimal. Extensible. Type Safe. Runs everywhere.
6.1k
Stars
310
Forks
59
Open issues
30
Contributors
AI Analysis
Graffle is a minimal, type-safe GraphQL client for JavaScript that emphasizes extensibility and multi-transport support (HTTP and in-memory). It serves developers building GraphQL-powered applications who value lightweight, composable tooling with strong TypeScript inference. It is not a general-purpose HTTP client or a backend framework—it is purpose-built for GraphQL query consumption in JavaScript/TypeScript environments.
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.
graphql-request reborn as Graffle: a typed, extensible GraphQL client still finding its production footing
Graffle is a TypeScript GraphQL client for JavaScript environments, evolved from the widely-used graphql-request library. It targets developers who want a lightweight but type-safe alternative to Apollo Client — offering a document builder with full type inference, a plugin/extension system, multi-transport support (HTTP and in-memory), and custom scalar codecs. It appears aimed at TypeScript-first teams building applications that consume GraphQL APIs without needing a full client framework. The rename from graphql-request introduces significant rebranding overhead and the project is still in pre-release as of the README.
Originally created in 2017 as graphql-request, a minimal GraphQL HTTP client that became one of the most downloaded GraphQL clients on npm. Around 2023-2024 it was architecturally reimagined and rebranded as Graffle, shifting from a simple request utility to a more ambitious typed client framework.
Star growth is largely inherited from graphql-request's prior reputation. The 6,111 stars reflect the old package's community recognition. The rebranding to Graffle appears to have reset momentum — 0 stars in the last 7 days as of late June 2026 and pre-release status suggest the new identity has not yet achieved organic traction separate from the legacy name. The graphql-request npm package historically had millions of weekly downloads, but it is unclear how much of that traffic has migrated to the graffle package.
Adoption not verified for the Graffle brand specifically. The predecessor graphql-request had extensive documented production use (millions of npm downloads/week), but the graffle npm package adoption is not confirmed from available metadata. The transition period may mean some users remain on the legacy package.
Appears to be a layered client architecture with a core request engine, an extension/plugin middleware system, a document builder layer for type-safe query construction, and transport adapters (HTTP and in-memory). Likely uses TypeScript generics heavily for schema-aware type inference. The multi-transport design suggests a testability-first philosophy where the same client can run against a live HTTP endpoint or an in-process GraphQL schema.
Not documented in README, but CI badge is present pointing to a trunk workflow, suggesting automated testing exists. Extent and quality of coverage cannot be confirmed from available metadata.
Last push was May 11, 2026 — approximately 6 weeks before the evaluation date. This indicates active maintenance. The project has 309 forks and a dedicated documentation site (graffle.js.org), suggesting sustained investment. However, pre-release status after what appears to be a multi-year rewrite raises questions about release velocity.
ADOPT IF: you are building a TypeScript-first application that consumes a GraphQL API, want strong type inference without a heavy client framework, and are comfortable with pre-release software. AVOID IF: you need a production-stable, battle-tested client today or rely on normalized caching and reactive UI bindings — Apollo Client or urql are safer bets. MONITOR IF: you were a graphql-request user evaluating migration, or you want a lightweight typed client and are willing to wait for a stable 1.0 release.
Independent dimensions
Mainstream potential
4/10
Technical importance
7/10
Adoption evidence
3/10
- Still in pre-release as of the README — API surface may change before stable release, creating migration risk for early adopters.
- The graphql-request to Graffle rename fragments the existing community and npm download metrics, making it harder to gauge true adoption of the new package.
- Zero star growth in the last 7 days suggests the rebranding has not yet generated new organic interest beyond the legacy audience.
- The ambitious feature expansion (type-safe document builder, extension system, codecs) increases complexity compared to the original minimal library, potentially alienating users who valued graphql-request's simplicity.
- Single primary maintainer dependency appears likely based on sponsor page referencing an individual (jasonkuhrt), which introduces bus-factor risk for a project in active architectural transition.
Graffle will likely stabilize into a respected niche TypeScript GraphQL client once it reaches a stable release. It is unlikely to displace Apollo Client in mainstream adoption but may recapture the graphql-request audience that wants more type safety.
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Website
- http://graffle.js.org/
- Language
- TypeScript
- License
- MIT
- Last updated
- 2mo ago
- Created
- 112mo 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
ESM module resolution broken with Astro 7 (Rolldown bundler)
Add support for graphql v17
Regression: graphql-request 7.4.0 rejects relative endpoint URLs ("/graphql") due to URL parsing in runRequest
All configured HTTP headers are reset when using Upload extension
Top contributors
Recent releases
Similar repos
apollographql/apollo-client
Apollo Client is a production-grade GraphQL client library for TypeScript and...
MichalLytek/type-graphql
TypeGraphQL is a TypeScript library for building GraphQL APIs using TypeScript...
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
6.1k | +1 | TypeScript | 8/10 | 2mo ago |
|
|
20.4k | — | TypeScript | 9/10 | 1w ago |
|
|
19.8k | — | TypeScript | 9/10 | 1d ago |
|
|
1.6k | — | TypeScript | 8/10 | 14h ago |
|
|
8.1k | — | TypeScript | 8/10 | 1w ago |
|
|
5.4k | — | TypeScript | 8/10 | 2d ago |
Apollo Client is a full-featured client with caching, reactive state, and React integration. Graffle targets users who find Apollo too heavy — it offers no built-in normalized cache, trading power for simplicity and bundle size. Different audiences.
Graffle is the direct evolution of graphql-request. The old version remains available on a branch. Users of the original minimal, zero-dependency request helper must accept a larger API surface and pre-release stability to migrate.
urql is also positioned as a lighter, extensible alternative to Apollo. Both urql and Graffle offer extensibility via exchanges/extensions, but urql has a longer stable-release history and more documented production adoption in the React ecosystem.
graphql-yoga is a server, not a client — not a direct competitor. However, its in-memory transport support in Graffle (testing against a yoga server in-process) creates an interesting complementary pairing.
Some developers combine TanStack Query with raw fetch or graphql-request for a lighter stack. Graffle must compete with this DIY approach by demonstrating that its type-safety and extension system justify the added dependency.