# Demystifying Cache Normalization

DevFeed: [Demystifying Cache Normalization](<https://devfeed.tech/articles/demystifying-cache-normalization-23267.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/demystifying-cache-normalization>)

Author: Khalil Stemmler

Published: 2020-07-17T10:55:32Z

Content type: tutorial

Language: en

Sources: [Apollo Blog](<https://devfeed.tech/sources/apollo-blog.md>)

Topics: [apollo-client](<https://devfeed.tech/topics/apollo-client.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [apollo-client](<https://devfeed.tech/tags/apollo-client.md>), [caching](<https://devfeed.tech/tags/caching.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [react](<https://devfeed.tech/tags/react.md>), [redux](<https://devfeed.tech/tags/redux.md>)

## AI overview

A tutorial on Apollo Client's cache normalization for interconnected GraphQL data. It explains how Apollo Client caches and normalizes query responses, deduplicates requests, decides between cached data and network requests, and updates the cache after mutations.

## Source excerpt

Apollo Client has a particularly challenging responsibility: to make interconnected GraphQL data easy to use on the client-side. In most rich client applications, we need the ability to cache data and pass it to components. We also need to know when to re-fetch data vs. when to return what's already cached; this helps to avoid making unnecessary network requests. This kind of caching logic can be hard to implement, even if you're not using GraphQL.