The React Native (Expo) SDK provides React Native components and authentication for integrating Bible content into Expo apps on iOS and Android. It is built on top of the React (web) SDK, wrapping those components as Expo DOM Components while adding native affordances (bottom sheets, secure storage, navigation). See the source on GitHub.
Requirements
- Expo SDK 56
- 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 dependenciesreact-native-workletsis required because Expo SDK 56 ships Reanimated 4, which splits worklets into a standalone package.react-native-webviewis an optional peer dependency — install it only if you opt a component out of the default@expo/dom-webviewwithdom={{ useExpoDOMWebView: false }}.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
- 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