urql
urql is a free, self-hosted GraphQL client for React, Preact, Vue, Solid, Svelte, or plain JavaScript applications.
What urql is
urql is a free, self-hosted GraphQL client for React, Preact, Vue, Solid, Svelte, or plain JavaScript applications. It sends declarative queries and mutations, manages caching and state, and provides an extensible connection point for APIs. Exchanges let developers control fetching, caching, retries, authentication, subscriptions, request policies, persisted queries, server-side rendering, and developer tools. urql uses document caching by default. Developers can opt into normalized caching with the @urql/exchange-graphcache package, which can also persist and restore cache state for offline use; that offline capability is described as experimental. Solid bindings include a createSubscription primitive, while subscriptions generally need WebSocket support and a subscription exchange. Browser extensions are available for debugging. The project describes urql as suitable for both first GraphQL projects and more complex applications. Its first-party packages do not officially support batched queries. Framework bindings and API integrations are documented for web and extension use, and the repository lists an MIT license.
Good
- Free plan available
- Bindings for several JavaScript frameworks
- Configurable exchanges for request behavior
- Optional normalized caching with Graphcache
- Browser extensions for debugging
Watch out
- First-party packages lack official batched-query support
- Offline support is labeled experimental
- Normalized caching requires an optional package
Who it suits
It suits developers building GraphQL applications with React, Preact, Vue, Solid, Svelte, or JavaScript. It can serve both initial GraphQL projects and more complex apps needing configurable request behavior.
Verdict
urql provides a flexible GraphQL client with framework bindings, configurable exchanges, and document caching included by default. Its lack of first-party batched queries and optional status of normalized or offline features matter when matching it to an application.
The facts
Each one read from urql's own pages, with the date it was checked.
What it does
- Available exchanges
- Documented exchanges include retry, persisted queries, authentication, request policy, server-side rendering, and devtools exchanges.checked 7 Oct 2026
- Client operations
- urql supports declarative GraphQL queries and mutations, caching and state management, and extensions for integrating with an API.checked 7 Oct 2026
- Compatibility limit
- The comparison page says urql does not officially support batched queries in its first-party packages.checked 7 Oct 2026
- Core capabilities
- urql sends GraphQL queries and mutations, manages caching and state, and provides an extensible integration point for an API.checked 7 Oct 2026
- Customizable behavior
- Exchanges let developers customize how requests are fetched, cached, retried, authenticated, and handled.checked 7 Oct 2026
- Customization
- Exchanges let developers customize how the client fetches, caches, and subscribes to data.checked 7 Oct 2026
- Default cache
- The default cache uses document caching; normalized caching is available as an opt-in through Graphcache.checked 7 Oct 2026
- Default caching
- The client uses document caching by default, and normalized caching is available through Graphcache.checked 7 Oct 2026
- Developer tools
- The project lists browser extensions for debugging urql.checked 7 Oct 2026
- Framework integrations
- The documentation describes bindings for React, Preact, Vue, and Svelte, and the comparison page also lists Next.js integration.checked 7 Oct 2026
- Framework packages
- The project describes bindings for React, Preact, Vue, Solid, and Svelte.checked 7 Oct 2026
- Graphcache
- Normalized caching is an opt-in feature provided by the @urql/exchange-graphcache package.checked 7 Oct 2026
- GraphQL integrations
- Documented exchanges include support for persisted queries, authentication flows, retries, file uploads, and subscriptions.checked 7 Oct 2026
- Intended users
- The project describes urql as suitable for both first GraphQL projects and more complex apps.checked 7 Oct 2026
- License
- The repository lists an MIT license.checked 7 Oct 2026
- Notable limit
- The comparison page says urql does not support batched queries in its first-party packages.checked 7 Oct 2026
- Offline support
- Graphcache can persist and rehydrate cache state for offline use, and its documentation labels offline support experimental.checked 7 Oct 2026
- Project history
- The comparison page says urql's current architecture has existed since February 2019 and its normalized cache since September 2019.checked 7 Oct 2026
- Purpose
- urql is a customizable GraphQL client for React, Svelte, Vue, Solid, or plain JavaScript.checked 7 Oct 2026
- Subscriptions
- The Solid bindings provide a createSubscription primitive, and the guide says GraphQL subscriptions typically require WebSocket support and a subscription exchange.checked 7 Oct 2026
Alternatives to urql
- 1
Altair GraphQL Client
Free planWebExtensionLinuxmacOS7.4From $7.99 a month - 2

Apollo Client
Free planAndroidiOSWebAPI7.3From $5 a month - 3

Hasura
Free planWebAPILinuxSelf-hosted6.9Free plan - 4

GraphQL Hive
Free planWebAPISelf-hosted6.7From $20 a month - 5
PostGraphile
Free planWebAPISelf-hosted6.7From $25 a month - 6

WunderGraph Cosmo
Free planWebAPISelf-hosted6.7From $499 a month
