Async Storage is asynchronous, unencrypted, persistent, key-value storage for your React Native application.
It provides a simple API compatible with the Web Storage API, with a few extensions for batch operations and multi-database support.
- Android (SQLite backend via Room KMP)
 - iOS (SQLite backend via Room KMP)
 - Web (IndexedDB backend)
 - macOS (SQLite backend via Room KMP)
 - Windows (legacy fallback, single database only)
 
# using npm
npm install @react-native-async-storage/async-storage
# using yarn
yarn add @react-native-async-storage/async-storageOn iOS/macOS, don’t forget to install pods:
# inside macos/ios directory
pod installimport { createAsyncStorage } from "@react-native-async-storage/async-storage";
// Create a storage instance
const storage = createAsyncStorage("appDB");
async function demo() {
  // save value under "userToken" key
  await storage.setItem("userToken", "abc123");
  // read value stored at "userToken" key
  const token = await storage.getItem("userToken");
  console.log("Stored token:", token);
  // remove value from storage
  await storage.removeItem("userToken");
}Async Storage supports batch operations for efficiency:
async function demo() {
  // save multiple values at once
  await storage.setMany({
    theme: "dark",
    language: "en",
  });
  // Retrieve multiple values
  const values = await storage.getMany(["theme", "language", "different"]);
  console.log(values); // { theme: "dark", language: "en", different: null }
  // Remove multiple values
  await storage.removeMany(["theme", "language"]);
}Pull requests are welcome. Please open an issue first to discuss what you would like to change.
See the CONTRIBUTING file for more information.
MIT