Advanced ExpoKit Topics

This guide goes deeper into a few ExpoKit topics that aren’t critical right out of the box, but that you may encounter down the road. If you’re not familiar with ExpoKit, you might want to read the ExpoKit guide first.

Verifying Bundles (iOS only)

When we serve your JS over-the-air to your ExpoKit project, we include a signature so that your project can verify that the JS actually came from our servers.

By default, projects that use ExpoKit have this feature disabled on iOS and enabled on Android. We encourage you to enable it on iOS so that your code is verified for all of your users.

To enable code verification in your native project with ExpoKit:

  • Fulfill one of these two requirements (you only need one):

    • Enable Keychain Sharing in your Xcode project settings under Capabilities. (faster to set up)

  • In ios/your-project/Supporting/EXShell.plist, set isManifestVerificationBypassed to NO (or delete this key entirely).

Disabling Expo Analytics

By default, apps using ExpoKit will track some Expo-specific usage statistics. This is covered in our privacy policy. You can disable Expo analytics in your app by following these steps:

On iOS, add the key EXAnalyticsDisabled to your app’s main Info.plist with the value YES.

Using DocumentPicker

In iOS Expokit projects, the DocumentPicker module requires the iCloud entitlement to work properly. If your app doesn’t have it already, you can add it by opening the project in Xcode and following these steps:

  • In the project go to the Capabilities tab.

  • Set the iCloud switch to on.

  • Check the iCloud Documents checkbox.

If everything worked properly your screen should look like this:

Still have questions? Ask on our forums!