1---
2title: Advanced
3order: 4
4---
5
6# Advanced
7
8In this chapter we'll dive into various topics of "advanced" `urql` usage. This is admittedly a
9catch-all chapter of various use-cases that can only be covered after [the "Architecture"
10chapter.](../architecture.md)
11
12- [**Subscriptions**](./subscriptions.md) covers how to use `useSubscription` and how to set up GraphQL subscriptions with
13 `urql`.
14- [**Persistence & Uploads**](./persistence-and-uploads.md) teaches us how to set up Automatic
15 Persisted Queries and File Uploads using the two respective packages.
16- [**Server-side Rendering**](./server-side-rendering.md) guides us through how to set up server-side rendering and rehydration.
17- [**Debugging**](./debugging.md) shows us the [`urql`
18 devtools](https://github.com/urql-graphql/urql-devtools/) and how to add our own debug events
19 for its event view.
20- [**Retrying operations**](./retry-operations.md) shows the `retryExchange` which allows you to retry operations when they've failed.
21- [**Authentication**](./authentication.md) describes how to implement authentication using the `authExchange`
22- [**Testing**](./testing.md) covers how to test components that use `urql` particularly in React.
23- [**Authoring Exchanges**](./authoring-exchanges.md) describes how to implement exchanges from
24 scratch and how they work internally. This is a good basis to understanding how some
25 features in this section function.
26- [**Auto-populate Mutations**](./auto-populate-mutations.md) presents the `populateExchange` addon, which can make it easier to
27 update normalized data after mutations.