AsyncStorage

AsyncStorage — это асинхронное, неблокирующее хранилище данных «ключ-значение», встроенное в экосистему React Native через отдельный пакет. Оно предназначено для хранения небольших объёмов данных на устройстве пользователя между сессиями приложения. В отличие от браузерного localStorage, AsyncStorage работает на уровне нативного кода (через iOS UserDefaults и Android SharedPreferences), но предоставляет простой JavaScript-интерфейс.

Для использования необходимо установить пакет:

npm install @react-native-async-storage/async-storage

После установки основные операции выполняются через три метода:

  • setItem(key: string, value: string) — сохраняет строковое значение по указанному ключу.
  • getItem(key: string) — возвращает строку, сохранённую по ключу, или null, если ключ не найден.
  • removeItem(key: string) — удаляет значение по ключу.

Важно: AsyncStorage принимает только строки. Чтобы сохранить объект, его нужно сериализовать с помощью JSON.stringify(), а при чтении — десериализовать через JSON.parse().

Пример сохранения и чтения настроек темы:

import AsyncStorage from '@react-native-async-storage/async-storage';

const saveTheme = async (theme: 'light' | 'dark') => {
  await AsyncStorage.setItem('app_theme', theme);
};

const loadTheme = async (): Promise<'light' | 'dark' | null> => {
  const theme = await AsyncStorage.getItem('app_theme');
  return theme as 'light' | 'dark' | null;
};

Ограничения AsyncStorage:

  • Максимальный объём данных — около 6 МБ (зависит от платформы).
  • Нет поддержки запросов, индексов или транзакций.
  • Не подходит для хранения чувствительных данных (например, паролей) без дополнительного шифрования.

Несмотря на ограничения, AsyncStorage идеально подходит для хранения токенов авторизации, пользовательских предпочтений, флагов онбординга и других лёгких данных, необходимых для работы приложения в офлайн-режиме.