Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Apollo Client Setup
📖 Scenario: You are building a simple web app that fetches data from a GraphQL server. To do this, you need to set up Apollo Client, which helps your app talk to the GraphQL server easily.
🎯 Goal: Set up Apollo Client step-by-step to connect your app to a GraphQL endpoint and prepare it to fetch data.
📋 What You'll Learn
Create an Apollo Client instance with the correct URI
Set up an in-memory cache for Apollo Client
Configure Apollo Client with the cache and URI
Export the Apollo Client instance for use in the app
💡 Why This Matters
🌍 Real World
Apollo Client is widely used in web apps to connect to GraphQL servers, making data fetching easier and more efficient.
💼 Career
Knowing how to set up Apollo Client is essential for frontend developers working with GraphQL APIs in modern web development.
Progress0 / 4 steps
1
Import ApolloClient and InMemoryCache
Write the import statements to bring in ApolloClient and InMemoryCache from the @apollo/client package.
GraphQL
Hint
Use ES6 import syntax to import both ApolloClient and InMemoryCache from the @apollo/client package.
2
Create the Apollo Client URI variable
Create a constant variable called GRAPHQL_URI and set it to the string 'https://example.com/graphql' which is the GraphQL server endpoint.
GraphQL
Hint
Use const to create a variable named GRAPHQL_URI and assign the exact URL string.
3
Initialize Apollo Client with URI and cache
Create a constant called client and assign it a new ApolloClient instance. Pass an object with two properties: uri set to GRAPHQL_URI and cache set to a new InMemoryCache().
GraphQL
Hint
Use the new keyword to create an ApolloClient object with the correct uri and cache properties.
4
Export the Apollo Client instance
Add a line to export the client constant as the default export of the module.
GraphQL
Hint
Use export default client; to make the Apollo Client instance available to other parts of your app.
Practice
(1/5)
1. What is the main purpose of Apollo Client in a GraphQL application?
easy
A. To connect your app to a GraphQL server and manage data
B. To create a new GraphQL server
C. To style your app's user interface
D. To store data permanently on the server
Solution
Step 1: Understand Apollo Client's role
Apollo Client is designed to connect your app to a GraphQL server and handle data fetching and caching.
Step 2: Differentiate from other roles
Creating servers or styling UI are not responsibilities of Apollo Client.
Final Answer:
To connect your app to a GraphQL server and manage data -> Option A
Quick Check:
Apollo Client = Connect and manage data [OK]
Hint: Apollo Client connects app to server and manages data [OK]
Common Mistakes:
Confusing Apollo Client with server creation tools
Thinking Apollo Client styles the UI
Assuming Apollo Client stores data permanently on server
2. Which of the following is the correct way to create an Apollo Client instance with a server URL 'https://api.example.com/graphql'?
easy
A. const client = new ApolloClient({ endpoint: 'https://api.example.com/graphql' });
B. const client = ApolloClient({ url: 'https://api.example.com/graphql', cache: new Cache() });
C. const client = new ApolloClient({ uri: 'https://api.example.com/graphql', cache: new InMemoryCache() });
D. const client = new ApolloClient('https://api.example.com/graphql');
Solution
Step 1: Check Apollo Client constructor syntax
The correct syntax uses 'new ApolloClient' with an object containing 'uri' and 'cache' properties.
Step 2: Verify property names and cache setup
The property for the server URL is 'uri', and the cache should be an instance of 'InMemoryCache'.
Final Answer:
const client = new ApolloClient({ uri: 'https://api.example.com/graphql', cache: new InMemoryCache() }); -> Option C
Quick Check:
Use 'uri' and 'InMemoryCache' in ApolloClient setup [OK]
Hint: Use 'uri' and 'new InMemoryCache()' when creating Apollo Client [OK]
Common Mistakes:
Using 'url' or 'endpoint' instead of 'uri'
Not using 'new' keyword with ApolloClient
Omitting the cache property or using wrong cache class
3. Given this Apollo Client setup code, what will console.log(client.cache.extract()) output immediately after creation?
const client = new ApolloClient({
uri: 'https://api.example.com/graphql',
cache: new InMemoryCache()
});
console.log(client.cache.extract());
medium
A. A string with the server URL
B. null
C. An error because cache is not initialized
D. {} (an empty object)
Solution
Step 1: Understand InMemoryCache initial state
When a new InMemoryCache is created, it starts empty with no stored data.
Step 2: Check what extract() returns
The extract() method returns the current cache contents as an object. Since no queries ran yet, it returns an empty object {}.
Final Answer:
{} (an empty object) -> Option D
Quick Check:
New cache extract() = empty object {} [OK]
Hint: New cache is empty; extract() returns {} [OK]
Common Mistakes:
Expecting data before any query runs
Thinking extract() returns null or error
Confusing cache contents with server URL
4. Identify the error in this Apollo Client setup code:
const client = new ApolloClient({
url: 'https://api.example.com/graphql',
cache: new InMemoryCache()
});
medium
A. Missing 'new' keyword before InMemoryCache
B. Property 'url' should be 'uri'
C. ApolloClient should not be called with 'new'
D. Cache property should be a string, not an object
Solution
Step 1: Check property names in Apollo Client config
The correct property for the server address is 'uri', not 'url'.
Step 2: Verify cache instantiation
The cache is properly instantiated as new InMemoryCache(). The primary error is the incorrect property name.
Final Answer:
Property 'url' should be 'uri' -> Option B
Quick Check:
Use 'uri' property for server URL [OK]
Hint: Use 'uri' not 'url' for server address in Apollo Client [OK]
Common Mistakes:
Using 'url' instead of 'uri'
Forgetting 'new' before InMemoryCache()
Thinking ApolloClient is called without 'new'
5. You want to set up Apollo Client to connect to a GraphQL server and cache data efficiently. Which of the following code snippets correctly sets up the client and explains why this setup is best for performance?
hard
A. const client = new ApolloClient({ uri: 'https://api.example.com/graphql', cache: new InMemoryCache() }); // Efficient caching and server connection
B. const client = new ApolloClient({ uri: 'https://api.example.com/graphql' }); // No cache used, faster queries
C. const client = new ApolloClient({ cache: new InMemoryCache() }); // No server URI, so no connection
D. const client = ApolloClient({ uri: 'https://api.example.com/graphql', cache: new InMemoryCache() }); // Missing 'new' keyword
Solution
Step 1: Confirm correct Apollo Client instantiation
const client = new ApolloClient({ uri: 'https://api.example.com/graphql', cache: new InMemoryCache() }); // Efficient caching and server connection uses 'new ApolloClient' with both 'uri' and 'cache' properly set, which is required for connection and caching.
Using 'InMemoryCache' stores query results locally, reducing network requests and speeding up data access.
Final Answer:
const client = new ApolloClient({ uri: 'https://api.example.com/graphql', cache: new InMemoryCache() }); // Efficient caching and server connection -> Option A
Quick Check:
Use 'new ApolloClient' with 'uri' and 'InMemoryCache' for best performance [OK]
Hint: Always use 'new ApolloClient' with 'uri' and 'InMemoryCache' [OK]