1---
2title: Overview
3order: 1
4---
5
6# Overview
7
8`urql` is a highly customizable and versatile GraphQL client with which you add on features like
9normalized caching as you grow. It's built to be both easy to use for newcomers to
10GraphQL, and extensible, to grow to support dynamic single-app applications and highly
11customized GraphQL infrastructure. In short, `urql` prioritizes usability and adaptability.
12
13As you're adopting GraphQL, `urql` becomes your primary data layer and can handle content-heavy
14pages through ["Document Caching"](./basics/document-caching.md) as well as dynamic and data-heavy
15apps through ["Normalized Caching"](./graphcache/normalized-caching.md).
16
17`urql` can be understood as a collection of connected parts and packages.
18When we only need to install a single package for our framework of choice. We're then able to
19declaratively send GraphQL requests to our API. All framework packages — like `urql` (for React),
20`@urql/preact`, `@urql/svelte`, and `@urql/vue` — wrap the [core package,
21`@urql/core`](./basics/core.md), which we can imagine as the brain
22of `urql` with most of its logic. As we progress with implementing `urql` into our application,
23we're later able to extend it by adding ["addon packages", which we call
24_Exchanges_](./advanced/authoring-exchanges.md)
25
26If at this point you're still unsure of whether to use `urql`, [have a look at the **Comparison**
27page](./comparison.md) and check whether `urql` supports all features you're looking for.
28
29## Where to start
30
31We have **Getting Started** guides for:
32
33- [**React/Preact**](./basics/react-preact.md) covers how to work with the bindings for React/Preact.
34- [**Vue**](./basics/vue.md) covers how to work with the bindings for Vue 3.
35- [**Svelte**](./basics/svelte.md) covers how to work with the bindings for Svelte.
36- [**Core Package**](./basics/core.md) covers the shared "core APIs" and how we can use them directly
37 in Node.js or imperatively.
38
39Each of these sections will walk you through the specific instructions for the framework bindings,
40including how to install and set them up, how to write queries, and how to send mutations.
41
42## Following the Documentation
43
44This documentation is split into groups or sections that cover different levels of usage or areas of
45interest.
46
47- **Basics** is the section where we'll want to start learning about `urql` as it contains "Getting
48 Started" guides for our framework of choice.
49- **Architecture** then explains more about how `urql` functions, what it's made up of, and covers
50 the main aspects of the `Client` and exchanges.
51- **Advanced** covers all more uncommon use-cases and contains guides that we won't need immediately
52 when we get started with `urql`.
53- **Graphcache** documents one of the most important addons to `urql`, which adds ["Normalized
54 Caching" support](./graphcache/normalized-caching.md) to the `Client` and enables more complex
55 use-cases, smarter caching, and more dynamic apps to function.
56- **Showcase** aims to list users of `urql`, third-party packages, and other helpful resources,
57 like tutorials and guides.
58- **API** contains a detailed documentation on each package's APIs. The documentation links to each
59 of these as appropriate, but if we're unsure of how to use a utility or package, we can go here
60 directly to look up how to use a specific API.
61
62We hope you grow to love `urql`!