The React Native (Expo) SDK provides React Native components and authentication for integrating Bible content into Expo apps on iOS and Android. See the source on GitHub.
Requirements
@youversion/platform-react-native-expo-uiand@youversion/platform-react-native-expo-core2.0.0.- Expo SDK 57 (Expo SDK 57, React Native 0.86). The published
expopeer is>=57.0.0 <58.0.0. YouVersion Platform React Native Expo 2.0.0 requires Expo57.0.23or later within that range (built against that patch for the iOS 27 lifecycle backport). - A development build — this SDK relies on native modules and does not run in Expo Go.
- A YouVersion Platform App Key — register your app to get one for free.
New to Expo? Scaffold an app with npx create-expo-app, then follow Expo's development builds guide to create a dev client. The steps below assume you are adding the SDK to an existing Expo app.
Getting Started
-
Get your App Key
Sign up at platform.youversion.com to get your free App Key. Expose it to your app, for example as an environment variable:
.env -
Install the SDK packages
@youversion/platform-react-native-expo-ui— styled components (BibleCard,BibleReader,BibleTextView,VerseOfTheDay) andYouVersionProvider@youversion/platform-react-native-expo-core— authentication (useYVAuth) and storage; install both so TypeScript resolves the auth APIs
expo -
Install the peer dependencies
Expo will pick versions compatible with your SDK version:
Peer dependenciesThese peers include native modules, so rebuild your development build after installing them (for example
npx expo run:iosornpx expo run:android, or a new EAS build). A JS-only reload is not enough.Upgrading from an earlier SDK version? Install
expo-fontand rebuild the native client.YouVersionProviderloads YouVersion's brand fonts viaexpo-font, which became a peer in@youversion/platform-react-native-expo-ui1.5.0. Reloading JS alone fails withCannot find native module.Expo, React, and React Native are also peer dependencies, but your Expo app already provides them. When integrating into an existing app, make sure these dependencies resolve to a single version. Duplicate or mismatched versions are the most common source of setup issues.
-
Add the
YouVersionProviderWrap your app's root with
YouVersionProvider, and wrap that inGestureHandlerRootView. The provider's built-in bottom sheets depend on React Native Gesture Handler, so the gesture root must be the outer wrapper.app/_layout.tsxCommon mistake: Forgetting
YouVersionProvider, or rendering it outsideGestureHandlerRootView, will cause the SDK components and hooks to throw errors that may not have an obvious solution. -
Display a Bible verse
app/(tabs)/index.tsxreferenceis a USFM reference (BOOK.CHAPTER.VERSE), andversionIdis the Bible version (3034is the Berean Standard Bible). These two identifiers show up across every component, so it's worth understanding them before you integrate further. See Components for the full component reference.
That's it! You now have Bible content in your Expo app.
Next steps
- Components. Every component and its props.
- Search. Reader Search and
useSearch. - Authentication. Sign in with YouVersion.
- Copyright & Attribution — display required Bible version copyright
- Sample app — a working Expo Router app with provider setup, auth, and every component