Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

expo-secure-store

expo1.4mMIT14.2.3TypeScript support: included

Provides a way to encrypt and securely store key-value pairs locally on the device.

react-native, expo, expo-secure-store, secure, store

readme

Expo logo

Expo

Expo SDK version Chat or ask a question License: MIT Downloads

Try Expo in the Browser  •  Read the Documentation  •  Learn more on our blog  •  Request a feature

Follow us on

Expo on X   Expo on GitHub   Expo on Reddit   Expo on Bluesky   Expo on LinkedIn

Introduction

Expo is an open-source platform for making universal native apps that run on Android, iOS, and the web. It includes a universal runtime and libraries that let you build native apps by writing React and JavaScript.

This repository includes the Expo SDK, Modules API, Go app, CLI, Router, documentation, and various other supporting tools. Expo Application Services (EAS) is a platform of hosted services that are deeply integrated with Expo open source tools. EAS helps you build, ship, and iterate on your app as an individual or a team.

Read the Expo Community Guidelines before interacting in the repository. Thank you for helping keep the Expo community open and welcoming!

Table of contents

📚 Documentation

Learn about building and deploying universal apps in our official docs!

🗺 Project Layout

  • packages All the source code for Expo modules, if you want to edit a library or just see how it works this is where you'll find it.
  • apps This is where you can find Expo projects which are linked to the development modules. You'll do most of your testing in here.
  • apps/expo-go This is where you can find the source code for Expo Go.
  • apps/expo-go/ios/Exponent.xcworkspace is the Xcode workspace. When developing iOS, always open this instead of Exponent.xcodeproj because the workspace also loads the CocoaPods dependencies.
  • docs The source code for https://docs.expo.dev
  • templates The template projects you get when you run npx create-expo-app
  • react-native-lab This is our fork of react-native used to build Expo Go.
  • guides In-depth tutorials for advanced topics like contributing to the client.
  • tools contain build and configuration tools.
  • template-files contains templates for files that require private keys. They are populated using the keys in template-files/keys.json.
  • template-files/ios/dependencies.json specifies the CocoaPods dependencies of the app.

🏅 Badges

Let everyone know your app can be run instantly in the Expo Go app!

runs with Expo Go

runs with Expo Go

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-000.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-4630EB.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

👏 Contributing

If you like Expo and want to help make it better then check out our contributing guide! Check out the CLI package to work on the Expo CLI.

❓ FAQ

If you have questions about Expo and want answers, then check out our Frequently Asked Questions!

If you still have questions you can ask them on our Discord and Forums or X @expo.

💙 The Team

Curious about who makes Expo? Here are our team members!

License

The Expo source code is made available under the MIT license. Some of the dependencies are licensed differently, with the BSD license, for example.

Star the Expo repo on GitHub to support the project

changelog

Changelog

Unpublished

🛠 Breaking changes

🎉 New features

🐛 Bug fixes

💡 Others

14.2.3 — 2025-04-30

This version does not introduce any user-facing changes.

14.2.2 — 2025-04-25

This version does not introduce any user-facing changes.

14.2.1 — 2025-04-14

This version does not introduce any user-facing changes.

14.2.0 — 2025-04-11

🎉 New features

14.1.1 — 2025-04-09

This version does not introduce any user-facing changes.

14.1.0 — 2025-04-04

💡 Others

14.0.1 - 2025-01-10

This version does not introduce any user-facing changes.

14.0.0 — 2024-10-22

🛠 Breaking changes

🎉 New features

💡 Others

13.0.2 - 2024-06-27

🐛 Bug fixes

  • [iOS] Improve error message for unhandled errors (#29394 by @hassankhan)
  • [Android] Fix decryption errors after Android Auto Backup has restored expo-secure-store data. (#29943 by @behenate)

13.0.1 — 2024-04-23

This version does not introduce any user-facing changes.

13.0.0 — 2024-04-18

🎉 New features

  • Add ability to disable permissions in config plugin by passing false instead of permission messages. (#28107 by @EvanBacon)
  • Add canUseBiometricAuthentication function. (#26767 by @behenate)

💡 Others

12.8.1 - 2023-12-19

This version does not introduce any user-facing changes.

12.8.0 — 2023-12-12

🎉 New features

  • [iOS] Added possibility to store values that require authentication and ones that don't under the same keychainService. (#23841 by @behenate)
  • [iOS] Added synchronous functions for storing and retrieving values from the store. (#23841 by @behenate)

12.7.0 — 2023-11-14

🛠 Breaking changes

💡 Others

  • [Android] Enforce minimum authentication tag length for the AESEncryptor for improved security. (#25294 by @behenate)

12.6.0 — 2023-10-17

🛠 Breaking changes

🐛 Bug fixes

  • Fixed the 'WHEN_UNLOCKED_THIS_DEVICE_ONLY' constraint being incorrectly mapped to wrong secure store accessible (#24831 by @mmmguitar)

12.5.0 — 2023-09-04

🎉 New features

  • [Android] Migrated to Expo Modules API. (#23804 by @behenate)
  • [Android] It is now possible to store values that require authentication and ones that don't under the same keychainService. (#23804 by @behenate)
  • Added support for React Native 0.73. (#24018 by @kudo)

12.4.1 — 2023-08-02

This version does not introduce any user-facing changes.

12.4.0 — 2023-07-28

🎉 New features

  • Added a config plugin to automatically set NSFaceIDUsageDescription on iOS. (#23268 by @aleqsio)

12.3.1 - 2023-07-04

💡 Others

  • Added a check for the NSFaceIDUsageDescription key in the set function. (#23275 by @alanjhughes)

12.3.0 — 2023-06-13

🐛 Bug fixes

💡 Others

  • Added automatic invalidated key handling on Android. (#22716 by @behenate)

12.2.0 — 2023-05-08

🎉 New features

12.1.1 — 2023-02-09

This version does not introduce any user-facing changes.

12.1.0 — 2023-02-03

💡 Others

  • On Android bump compileSdkVersion and targetSdkVersion to 33. (#20721 by @lukmccall)

12.0.0 — 2022-10-25

🛠 Breaking changes

  • Bumped iOS deployment target to 13.0 and deprecated support for iOS 12. (#18873 by @tsapeta)

🐛 Bug fixes

  • Fixed missing code and message in promise errors. (#19555 by @tsapeta)

⚠️ Notices

  • Changed requireAuthentication option to also require biometrics on iOS (matches Android behavior) (#18591 by @stefan-schweiger)

11.3.0 — 2022-07-07

This version does not introduce any user-facing changes.

11.2.0 — 2022-04-18

⚠️ Notices

  • On Android bump compileSdkVersion to 31, targetSdkVersion to 31 and Java version to 11. (#16941 by @bbarthec)

11.1.1 - 2022-02-01

🐛 Bug fixes

  • Fix Plugin with id 'maven' not found build error from Android Gradle 7. (#16080 by @kudo)

11.1.0 — 2021-12-03

This version does not introduce any user-facing changes.

11.0.1 — 2021-10-01

This version does not introduce any user-facing changes.

11.0.0 — 2021-09-28

🛠 Breaking changes

🐛 Bug fixes

  • Fix building errors from use_frameworks! in Podfile. (#14523 by @kudo)

💡 Others

  • Migrated from @unimodules/core to expo-modules-core. (#13757 by @tsapeta)

10.2.0 — 2021-06-16

🐛 Bug fixes

💡 Others

  • Build Android code using Java 8 to fix Android instrumented test build error. (#12939 by @kudo)

10.1.0 — 2021-03-10

🎉 New features

  • Updated Android build configuration to target Android 11 (added support for Android SDK 30). (#11647 by @bbarthec)

🐛 Bug fixes

  • Data saved with expo-secure-store is no longer lost upon ejecting, if you first upgrade your app to SDK 41 before ejecting. (#11309 by @cruzach)

    On Android, all of your SecureStore data will be migrated on app start-up. On iOS, keys and their associated data will be migrated whenever you call getItemAsync on that key. This means that any keys you don't get while on SDK 41 will not be migrated.

10.0.0 — 2021-01-15

🛠 Breaking changes- Dropped support for iOS 10.0 (#11344 by @tsapeta)

9.3.0 — 2020-11-17

This version does not introduce any user-facing changes.

9.2.0 — 2020-08-11

🎉 New features

9.1.0 — 2020-07-27

🐛 Bug fixes

  • Fix incorrect security attribute applied when using the flag WHEN_UNLOCKED_THIS_DEVICE_ONLY on iOS (#9264 by @cjthompson)

9.0.1 — 2020-05-29

This version does not introduce any user-facing changes.

9.0.0 — 2020-05-27

🛠 Breaking changes

  • The base64 output will no longer contain newline and special character (\n, \r) on Android. (#7841 by @jarvisluong)