expo-build-properties is an Expo config plugin that allows developers to customize native build properties for iOS and Android directly from their `app.json` or `app.config.js` files. This eliminates the need for manual edits to native project files (e.g., `build.gradle`, `Info.plist`) or custom scripts, streamlining the prebuild process within the Expo managed workflow. The package is currently stable at version `55.0.13` and is released as part of the broader Expo SDK, with major versions typically aligning with new SDK releases every 3-4 months. Its primary differentiator is deep integration into the Expo ecosystem, providing a declarative and cross-platform way to configure native build settings without requiring an ejected workflow or bare React Native setup.
npm install expo-build-propertiesVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates how to configure `expo-build-properties` within your `app.json` to customize Android and iOS native build settings, such as SDK versions, Flipper enablement, and team IDs.
Centralize native build property configuration within your `app.json` or `app.config.js` to ensure a single source of truth and avoid conflicts.
Refer to the official Expo SDK documentation for your current SDK version to understand default and recommended native build property values. Adjust custom settings cautiously.
Migrate any top-level `android.buildToolsVersion` or `ios.targetDisplayName` settings from `app.json` directly into the `expo-build-properties` plugin configuration under their respective platform keys (`android` or `ios`).
If experiencing build issues with `frescoImagePipeline: 'auto'`, verify that `expo-image-picker` is installed. If not using `expo-image-picker`, set `frescoImagePipeline: false` or explicitly define another value if Fresco is needed independently.
Ensure your `app.json` or `app.config.js` has an `expo.plugins` array and that `expo-build-properties` is correctly listed within it.
If you don't explicitly need Fresco, set `android.frescoImagePipeline: false` in your `expo-build-properties` configuration. If you do need it, ensure your project setup (especially related to `expo-image-picker`) is correct and try cleaning the build cache (`expo prebuild --clean`).
Consult the official `expo-build-properties` documentation for a list of supported build properties for Android and iOS. Remove or correct any unrecognized keys.