A Flutter plugin for securely storing sensitive data using encrypted storage across all platforms.
flutter_secure_storage is a Flutter plugin that provides encrypted key-value storage for sensitive data across Android, iOS, macOS, Windows, Linux, and Web. It solves the problem of securely storing tokens, passwords, and other private information by leveraging platform-native secure storage systems like Android KeyStore and iOS Keychain.
Flutter developers building mobile, desktop, or web applications that need to securely store authentication tokens, user credentials, or any sensitive data locally on the device.
Developers choose flutter_secure_storage for its robust cross-platform security, ease of use, and flexibility—offering strong encryption defaults, optional biometric authentication, and fine-grained platform-specific configuration without requiring deep platform-specific security expertise.
A Flutter plugin for securely storing sensitive data using encrypted storage.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Utilizes platform-native secure storage like iOS Keychain and Android KeyStore with RSA OAEP + AES-GCM encryption, ensuring consistent protection across mobile and desktop as detailed in the README.
Offers optional biometric authentication with configurable enforcement, allowing apps to require or gracefully degrade based on device capabilities, as shown in AndroidOptions.biometric() for Android and AppleOptions for iOS/macOS.
Supports multiple encryption combinations, including RSA-wrapped AES and KeyStore-based AES, with detailed tables in the README for security tuning on Android.
Automatically migrates from older cipher implementations when updating, with migrateOnAlgorithmChange enabled by default, reducing upgrade friction as highlighted in the Android migration section.
The web version is experimental, only works on HTTPS or localhost, and requires strict security headers to prevent javascript hijacks, making it less reliable for production web apps without careful configuration.
Requires manual setup for each platform, such as disabling Android auto backup, adding Linux dependencies, and installing Windows C++ ATL, increasing development and maintenance effort beyond basic Flutter integration.
Major versions like 10.0.0 introduce significant changes, deprecating previous methods like encryptedSharedPreferences and requiring migration, which can break existing implementations if not handled carefully.