Mirror: The highly customizable and versatile GraphQL client with which you add on features like normalized caching as you grow.
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.