If the server later returns an error, you should handle reverting the optimistic update.
Optimistic updates improve user experience by reducing waiting time.
Summary
Optimistic UI updates show changes instantly before server confirmation.
Use optimisticResponse to tell the client what to show.
Make sure to handle errors to keep UI consistent.
Practice
(1/5)
1. What is the main purpose of using optimisticResponse in GraphQL client updates?
easy
A. To show UI changes immediately before the server responds
B. To delay UI updates until the server confirms
C. To rollback UI changes after server response
D. To fetch data from the server without updating UI
Solution
Step 1: Understand optimisticResponse role
The optimisticResponse is used to update the UI instantly, assuming the server will succeed.
Step 2: Compare options with purpose
Only To show UI changes immediately before the server responds describes showing UI changes immediately before server confirmation, which matches the optimistic update concept.
Final Answer:
To show UI changes immediately before the server responds -> Option A
Quick Check:
optimisticResponse = immediate UI update [OK]
Hint: Think: optimistic means 'hopeful' update shown early [OK]
Common Mistakes:
Confusing optimisticResponse with delayed updates
Thinking it rolls back changes automatically
Assuming it fetches data without UI change
2. Which of the following is the correct syntax to provide an optimistic response in a GraphQL mutation using Apollo Client?
D. mutation({ variables, optimisticResponse: { id: 1 } })
Solution
Step 1: Recall optimisticResponse structure
The optimisticResponse must include the __typename field to match the GraphQL schema type.
Step 2: Check each option for __typename
Only mutation({ variables, optimisticResponse: { __typename: 'User', id: 1, name: 'Test' } }) includes __typename: 'User' along with id and name, making it syntactically correct.
5. You want to implement an optimistic UI update for a mutation that toggles a user's 'active' status. The server might reject the change. Which approach best ensures UI consistency?
hard
A. Use optimisticResponse to toggle status immediately and handle errors to revert if needed
B. Wait for server response before updating UI to avoid inconsistencies
C. Update UI without optimisticResponse and ignore server errors
D. Use optimisticResponse but do not handle errors, assuming success
Solution
Step 1: Understand optimistic UI with possible server rejection
Optimistic UI shows changes immediately but must handle errors to keep UI correct.
Step 2: Evaluate options for best practice
Use optimisticResponse to toggle status immediately and handle errors to revert if needed uses optimisticResponse for instant UI update and error handling to revert if server rejects, ensuring consistency.
Final Answer:
Use optimisticResponse to toggle status immediately and handle errors to revert if needed -> Option A