Bird
Raised Fist0
React Nativemobile~20 mins

AsyncStorage for key-value in React Native - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
AsyncStorage Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
2:00remaining
What is the output when saving and retrieving a value with AsyncStorage?
Consider this React Native code snippet using AsyncStorage. What will be displayed in the Text component after pressing the button?
React Native
import React, { useState } from 'react';
import { View, Text, Button } from 'react-native';
import AsyncStorage from '@react-native-async-storage/async-storage';

export default function App() {
  const [storedValue, setStoredValue] = useState('');

  const saveValue = async () => {
    await AsyncStorage.setItem('greeting', 'Hello!');
    const value = await AsyncStorage.getItem('greeting');
    setStoredValue(value || '');
  };

  return (
    <View>
      <Button title="Save and Load" onPress={saveValue} />
      <Text>{storedValue}</Text>
    </View>
  );
}
AThe Text component shows: undefined
BThe Text component shows: Hello!
CThe Text component shows: null
DThe Text component remains empty
Attempts:
2 left
💡 Hint
Remember AsyncStorage stores strings and getItem returns the stored string or null if not found.
❓ lifecycle
intermediate
1:30remaining
When should you load AsyncStorage data in a React Native component?
You want to load a saved username from AsyncStorage when your screen appears. Which React hook is best to use for this?
AuseEffect with no dependency array
BuseState to load data directly
CuseMemo to load data once
DuseEffect with an empty dependency array []
Attempts:
2 left
💡 Hint
Think about running code once when the component mounts.
🔧 Debug
advanced
1:30remaining
What error does this AsyncStorage code produce?
Look at this code snippet. What error will it cause when run?
React Native
import AsyncStorage from '@react-native-async-storage/async-storage';

async function getData() {
  const value = await AsyncStorage.getItem('key');
  console.log(value);
}

getData();
AIt logs a Promise object instead of the stored value
BSyntaxError due to missing await keyword
CTypeError because getItem is not a function
DIt logs null if the key does not exist
Attempts:
2 left
💡 Hint
Remember AsyncStorage.getItem returns a Promise.
🧠 Conceptual
advanced
1:30remaining
How does AsyncStorage handle data types?
Which statement about AsyncStorage data storage is true?
AAsyncStorage stores only strings; other types must be converted before saving
BAsyncStorage stores data in binary format for efficiency
CAsyncStorage automatically serializes objects and arrays
DAsyncStorage supports storing numbers directly without conversion
Attempts:
2 left
💡 Hint
Think about what happens if you try to save an object directly.
❓ navigation
expert
2:00remaining
What happens if you navigate away before AsyncStorage.setItem completes?
In a React Native app, you call AsyncStorage.setItem to save data, then immediately navigate to another screen. What is the likely outcome?
ANavigation waits automatically until setItem finishes saving
BThe data is always saved instantly before navigation happens
CThe data may not be saved because setItem is asynchronous and might be interrupted
DAn error is thrown if navigation happens before setItem completes
Attempts:
2 left
💡 Hint
AsyncStorage operations are asynchronous and do not block navigation.

Practice

(1/5)
1. What is the main purpose of AsyncStorage in React Native?
easy
A. To create complex animations in the app
B. To handle network requests and API calls
C. To store small amounts of data as key-value pairs on the device
D. To manage app navigation between screens

Solution

  1. Step 1: Understand AsyncStorage's role

    AsyncStorage is designed to save simple data like user preferences as key-value pairs on the device.
  2. Step 2: Compare with other options

    Animations, network requests, and navigation are handled by other libraries or APIs, not AsyncStorage.
  3. Final Answer:

    To store small amounts of data as key-value pairs on the device -> Option C
  4. Quick Check:

    AsyncStorage = key-value storage [OK]
Hint: AsyncStorage saves simple data locally as key-value pairs [OK]
Common Mistakes:
  • Confusing AsyncStorage with network or UI libraries
  • Thinking AsyncStorage manages navigation or animations
2. Which of the following is the correct way to save a value using AsyncStorage in React Native?
easy
A. await AsyncStorage.setItem('key', 'value');
B. AsyncStorage.save('key', 'value');
C. AsyncStorage.store('key', 'value');
D. await AsyncStorage.put('key', 'value');

Solution

  1. Step 1: Recall AsyncStorage method for saving data

    The correct method to save data is setItem, which returns a promise and requires await.
  2. Step 2: Check method names

    Methods like save, store, and put do not exist in AsyncStorage API.
  3. Final Answer:

    await AsyncStorage.setItem('key', 'value'); -> Option A
  4. Quick Check:

    Save data = setItem [OK]
Hint: Use setItem with await to save data [OK]
Common Mistakes:
  • Using incorrect method names like save or put
  • Forgetting to use await with async calls
3. What will be logged to the console after running this code?
import AsyncStorage from '@react-native-async-storage/async-storage';

async function test() {
  await AsyncStorage.setItem('name', 'Alice');
  const value = await AsyncStorage.getItem('name');
  console.log(value);
}
test();
medium
A. Alice
B. null
C. Error: AsyncStorage not found
D. undefined

Solution

  1. Step 1: Analyze setItem and getItem usage

    The code saves the string 'Alice' under the key 'name' and then retrieves it correctly using await.
  2. Step 2: Understand console output

    Since the value was saved and retrieved successfully, console.log prints 'Alice'.
  3. Final Answer:

    Alice -> Option A
  4. Quick Check:

    Saved value retrieved = Alice [OK]
Hint: getItem returns saved string or null if missing [OK]
Common Mistakes:
  • Expecting undefined instead of null or string
  • Not awaiting async calls causing errors
4. Identify the error in this AsyncStorage usage:
import AsyncStorage from '@react-native-async-storage/async-storage';

function saveData() {
  AsyncStorage.setItem('token', 'abc123');
  console.log('Token saved');
}
saveData();
medium
A. console.log should be inside a .then() callback
B. Wrong method name setItem should be saveItem
C. AsyncStorage must be imported from 'react-native' not '@react-native-async-storage/async-storage'
D. Missing await before AsyncStorage.setItem causing unhandled promise

Solution

  1. Step 1: Check async usage of setItem

    AsyncStorage.setItem returns a promise and should be awaited or handled with then to ensure completion.
  2. Step 2: Identify missing await

    The function saveData is not async and does not await setItem, so the promise is unhandled and may cause issues.
  3. Final Answer:

    Missing await before AsyncStorage.setItem causing unhandled promise -> Option D
  4. Quick Check:

    AsyncStorage.setItem needs await [OK]
Hint: Always await AsyncStorage async calls to avoid unhandled promises [OK]
Common Mistakes:
  • Forgetting to make function async and use await
  • Using wrong import source
  • Incorrect method names
5. You want to remove a saved user preference with key 'theme' and then confirm it is removed. Which code snippet correctly does this?
hard
A. await AsyncStorage.clear('theme'); const val = await AsyncStorage.getItem('theme'); console.log(val);
B. await AsyncStorage.removeItem('theme'); const val = await AsyncStorage.getItem('theme'); console.log(val);
C. AsyncStorage.delete('theme'); const val = AsyncStorage.get('theme'); console.log(val);
D. AsyncStorage.remove('theme'); const val = AsyncStorage.getItem('theme'); console.log(val);

Solution

  1. Step 1: Identify correct method to remove a key

    The correct method to remove a key is removeItem, which returns a promise and should be awaited.
  2. Step 2: Confirm removal by getting the key

    After removal, calling getItem returns null, confirming deletion.
  3. Final Answer:

    await AsyncStorage.removeItem('theme'); const val = await AsyncStorage.getItem('theme'); console.log(val); -> Option B
  4. Quick Check:

    Remove key = removeItem + await [OK]
Hint: Use removeItem with await to delete keys safely [OK]
Common Mistakes:
  • Using non-existent methods like delete or remove
  • Not awaiting async calls
  • Using clear which removes all keys, not one
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard