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

Package detail

expo-contacts

expo196.1kMIT14.2.4TypeScript support: included

Provides access to the phone's system contacts.

react-native, expo, contacts

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.4 — 2025-05-08

🐛 Bug fixes

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

  • [iOS] Disambiguated limited permission status from granted. (#35772 by @clarkg)

14.1.1 — 2025-04-09

This version does not introduce any user-facing changes.

14.1.0 — 2025-04-04

  • Fixed an issue on iOS where social profile urls were badly stored. (#31771 by @mlecoq)

🎉 New features

  • added the ability to change isFavorite property of contacts on Android (using updateContactAsync) (#34483 by @NorseGaud)
  • Add presentAccessPickerAsync function that presents the iOS 18.0+ picker for limited contacts access. (#33771 by @tsapeta)
  • [iOS] Exposed ContactAccessButton from SwiftUI. (#33782 by @tsapeta)

🐛 Bug fixes

  • Fixed the native view manager required by name (ExpoContactAccessButton) from NativeViewManagerAdapter isn't exported warning. (#33993 by @lukmccall)

💡 Others

14.0.5 - 2025-01-31

🐛 Bug fixes

14.0.4 - 2025-01-27

🎉 New features

  • added the ability to read and write starred property (as "isFavorite") of contacts on Android (#33208 by @NorseGaud)

14.0.3 - 2025-01-10

This version does not introduce any user-facing changes.

14.0.2 — 2024-11-07

🐛 Bug fixes

  • [Android] Fix ContactQuery id field not accepting arrays. (#32651 by @behenate)

14.0.1 — 2024-10-22

This version does not introduce any user-facing changes.

14.0.0 — 2024-10-22

🛠 Breaking changes

🐛 Bug fixes

  • Fixed an issue on iOS with presentFormAsync where dates were not displayed. (#31780 by @mlecoq)
  • Fixed an iOS issue where the contact's birthday isn't displayed when the year is set. (#31948 by @chrfalch)
  • Fixed an Android issue where creating a contact with a birthday was not saved. (#30131 by @Eric013)
  • Fixed an issue on android where phone number and email labels were ignored on contact creation. (#31309 by @mlecoq)
  • Fixed an issue where the requestPermissionsAsync promise throws when denying access to contacts on iOS. (#29529 by @jp1987)
  • Fixed an issue where the presentFormAsync promise doesn't resolve when the form is closed on Android. (#29201 by @jp1987)
  • Fixed an issue where the presentContactPickerAsync promise doesn't resolve when using the Android back button. (#29202 by @jp1987)
  • Fixed an issue where only paths of urls were stored in contacts and social profiles were only stored when all fields were filled. (#29199 by @mlecoq)
  • Fixed an iOS issue where the Cancel button is not visible on the unknown contact form. (#29555 by @Tug)
  • Add missing react-native peer dependencies for isolated modules. (#30465 by @byCedric)

13.0.5 - 2024-07-22

💡 Others

13.0.4 - 2024-06-10

This version does not introduce any user-facing changes.

13.0.3 — 2024-05-01

This version does not introduce any user-facing changes.

13.0.2 — 2024-04-26

This version does not introduce any user-facing changes.

13.0.1 — 2024-04-23

This version does not introduce any user-facing changes.

13.0.0 — 2024-04-18

🎉 New features

  • It is now possible to select contacts using OS-provided native contact pickers. (#27541 by @fobos531)

🐛 Bug fixes

  • Fixed an issue where contacts could not be edited on either platform. (#27703 by @alanjhughes)

💡 Others

  • Prevent config plugin from writing permissions until prebuild. (#28107 by @EvanBacon)
  • drop unused web name property. (#27437 by @EvanBacon)
  • Reuse React Native ShareOptions type for shareContactAsync parameter typing. (#26208 by @Simek)
  • [iOS] Migrate to Expo Modules. (#25696 by @alanjhughes)
  • Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)

12.8.2 - 2023-12-19

This version does not introduce any user-facing changes.

12.8.1 — 2023-12-13

This version does not introduce any user-facing changes.

12.8.0 — 2023-12-12

This version does not introduce any user-facing changes.

12.7.0 — 2023-11-14

🛠 Breaking changes

💡 Others

12.6.0 — 2023-10-17

🛠 Breaking changes

12.5.1 — 2023-09-18

This version does not introduce any user-facing changes.

12.5.0 — 2023-09-15

This version does not introduce any user-facing changes.

12.4.0 — 2023-09-04

🎉 New features

  • Added support for React Native 0.73. (#24018 by @kudo)

🐛 Bug fixes

  • [Android] Fix addContactAsync failing when an e-mail or a phone number is provided with an id. (#23877 by @behenate)

12.3.1 — 2023-08-02

This version does not introduce any user-facing changes.

12.3.0 — 2023-07-28

💡 Others

12.2.0 — 2023-06-21

🐛 Bug fixes

12.1.0 — 2023-05-08

This version does not introduce any user-facing changes.

12.0.1 — 2023-02-09

This version does not introduce any user-facing changes.

12.0.0 — 2023-02-03

🛠 Breaking changes

  • Remove deprecated and legacy contact fields constants. (#20269 by @Simek)

💡 Others

11.0.1 — 2022-10-28

This version does not introduce any user-facing changes.

11.0.0 — 2022-10-25

🛠 Breaking changes

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

💡 Others

  • [plugin] Migrate import from @expo/config-plugins to expo/config-plugins and @expo/config-types to expo/config. (#18855 by @brentvatne)
  • Drop @expo/config-plugins dependency in favor of peer dependency on expo. (#18595 by @EvanBacon)

10.3.0 — 2022-07-07

This version does not introduce any user-facing changes.

10.2.0 — 2022-04-18

💡 Others

⚠️ Notices

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

10.1.1 - 2022-02-01

🐛 Bug fixes

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

10.1.0 — 2021-12-03

This version does not introduce any user-facing changes.

10.0.1 — 2021-10-01

This version does not introduce any user-facing changes.

10.0.0 — 2021-09-28

🛠 Breaking changes

  • Added AndroidManifest.xml queries for intent handling. (#13388 by @EvanBacon)
  • Contacts.presentFormAsync now resolves when the native form closes. (#13699 by @dsokal)
  • Dropped support for iOS 11.0 (#14383 by @cruzach)

🐛 Bug fixes

  • Fixed Android intent XML parsing issues. (#13401 by @quicksnap)
  • Fix building errors from use_frameworks! in Podfile. (#14523 by @kudo)

💡 Others

9.2.0 — 2021-06-16

🐛 Bug fixes

💡 Others

  • Migrated from unimodules-file-system-interface and unimodules-permissions-interface to expo-modules-core. (#12961 by @tsapeta)
  • Build Android code using Java 8 to fix Android instrumented test build error. (#12939 by @kudo)
  • Refactored uuid imports to v7 style. (#13037 by @giautm)

9.1.2 — 2021-04-13

This version does not introduce any user-facing changes.

9.1.1 — 2021-03-31

This version does not introduce any user-facing changes.

9.1.0 — 2021-03-10

🎉 New features

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

🐛 Bug fixes

  • Remove peerDependencies and unimodulePeerDependencies from Expo modules. (#11980 by @brentvatne)

9.0.0 — 2021-01-15

⚠️ Notices

🛠 Breaking changes

🎉 New features

8.6.0 — 2020-09-14

🐛 Bug fixes

  • getContactsAsync no longer requires an exact match when providing the name query on Android. (#10127 by @cruzach)

8.5.0 — 2020-08-18

🎉 New features

8.4.0 — 2020-08-11

🎉 New features

  • Added isAvailableAsync() method for guarding against web usage. (#9640 by @EvanBacon)

🐛 Bug fixes

  • Fixed bug, where sorting contacts by firstName or lastName could cause crash on Android. (#9582 by @barthap)

8.3.0 — 2020-07-27

🐛 Bug fixes

  • Fixed getContactById not resolving promise when contact with provided id doesn't exist on Android. (#8976 by @lukmccall)
  • Fixed addContactAsync returning incorrect id on Android. (#8980 by @lukmccall)
  • Fixed updateContactAsync creating a new contact on Android. (#9031 by @lukmccall)
  • Fixed updateContactAsync not returning a contact id on iOS. (#9031 by @lukmccall)

8.2.1 — 2020-05-29

This version does not introduce any user-facing changes.

8.2.0 — 2020-05-27

🐛 Bug fixes