react-native-encrypted-asyncstorage
Version:
AES-encrypted values on top of AsyncStorage for React Native (JavaScript layer).
28 lines (19 loc) • 1.72 kB
Markdown
# Changelog
## 2.4.0
- README refresh: centered layout, npm/GitHub badges (version, weekly downloads, stars, forks, last commit, CI), quick navigation, and a dedicated **Backward compatibility** section.
## 2.3.0
- **Security**: Optional **`storageFormat: "v2"`** on `Set_Encrypted_AsyncStorage` — PBKDF2-SHA256 (100k iterations), AES-256-CBC, HMAC-SHA256 integrity check. Reads auto-detect `ENC2$` payloads; legacy default unchanged.
- Replaced **`react-native-crypto-js`** with **`crypto-js`** so PBKDF2/HMAC are available (the old bundle omitted them).
- MAC is computed over **hex-encoded IV + ciphertext** to avoid `WordArray.concat` inconsistencies after Base64 round-trips.
## 2.2.0
- Documented actual behavior: JavaScript AES on top of AsyncStorage (README aligned with implementation).
- Added TypeScript declarations (`index.d.ts`).
- Added `Remove_Encrypted_AsyncStorage(key)` wrapper around `AsyncStorage.removeItem`.
- `Get_Encrypted_AsyncStorage` with `type === "object"` now returns `null` instead of throwing when decrypted bytes are not valid JSON (for example wrong key or corrupt data).
- Declared `peerDependencies` for `react-native` and `@react-native-async-storage/async-storage`; kept Async Storage as a **dependency** for backward-compatible installs.
- Added `exports` and `files` in `package.json` for cleaner publishing.
- Added Jest tests and GitHub Actions CI.
**Backward compatibility (valid usage)**
- `Set_Encrypted_AsyncStorage("text" | "object", ...)` still resolves to `true` on success.
- `Get_Encrypted_AsyncStorage` for missing keys still returns `null`.
- Invalid `type` still yields `undefined` from both set and get (unchanged from 2.1.x).