Registry / devops / expo-build-properties

expo-build-properties

JSON →
library55.0.13jsnpmunverified

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-properties
INSTALL
IMPORT
SIG · EXPO-BUILD-PROPERT
E
expo-build-properties
devopsjavascriptv55.0.13
Install
—
Import
—
Disk
—
Pass rate
0/ 6
Env Coverage0 / 6
glibc
18–22
musl
18–22
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18–226 runs
build_error
glibc
node 18–226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

withBuildProperties
✓ import { withBuildProperties } from 'expo-build-properties';
Primarily used by advanced users or plugin authors to compose custom config plugins programmatically. Most users configure this plugin declaratively in `app.json` or `app.config.js` by listing its package name in the `plugins` array.
BuildPropertiesOptions
✓ import { BuildPropertiesOptions } from 'expo-build-properties';
TypeScript type definition for the configuration object passed to the plugin, useful for type-checking when creating custom configuration logic.

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.

{ "expo": { "name": "MyAwesomeApp", "slug": "my-awesome-app", "version": "1.0.0", "sdkVersion": "55.0.0", "platforms": [ "ios", "android" ], "plugins": [ [ "expo-build-properties", { "android": { "minSdkVersion": 23, "compileSdkVersion": 34, "targetSdkVersion": 34, "buildToolsVersion": "34.0.0", "frescoImagePipeline": "auto" }, "ios": { "deploymentTarget": "13.4", "flipper": true, "targetDisplayName": "MyApp", "appStoreConnectTeamId": "ABCDEF123" } } ] ] } }
Debug
Known issues
gotchaProperties configured via `expo-build-properties` override settings found in your native project files (`android/build.gradle`, `ios/*.pbxproj`, `ios/*/Info.plist`). Be aware of potential conflicts or unexpected behavior if properties are also manually managed in native code.
fix
Centralize native build property configuration within your `app.json` or `app.config.js` to ensure a single source of truth and avoid conflicts.
affects: >=1.0.0
gotchaEnsuring specific `minSdkVersion`, `targetSdkVersion`, `compileSdkVersion`, or `deploymentTarget` can sometimes conflict with other Expo modules' requirements. Always consult the Expo SDK documentation for recommended values.
fix
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.
affects: >=1.0.0
breakingWith Expo SDK 49+, the `expo.android.buildToolsVersion` and `expo.ios.targetDisplayName` properties moved from top-level `expo` configuration to `expo-build-properties`. Older projects might need adjustment.
fix
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`).
affects: >=49.0.0
gotchaWhen using `frescoImagePipeline: 'auto'` on Android, ensure you have the `expo-image-picker` package installed and configured correctly, as it enables Fresco. Incorrect setup can lead to build errors related to missing dependencies.
fix
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.
affects: >=55.0.0
Errors
Common errors & fixes
Cannot read properties of undefined (reading 'plugins')
The `plugins` array is missing or incorrectly structured in your `app.json` or `app.config.js` file, preventing the Expo build system from finding the plugin.
fix
Ensure your `app.json` or `app.config.js` has an `expo.plugins` array and that `expo-build-properties` is correctly listed within it.
error: cannot find symbol import com.facebook.fresco.middleware.Middleware; symbol: class Middleware location: package com.facebook.fresco.middleware
This typically indicates that the Fresco image pipeline is enabled in your `expo-build-properties` (e.g., `frescoImagePipeline: true` or `'auto'`), but the necessary Fresco dependencies are not being resolved or are conflicting.
fix
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`).
Property 'someInvalidKey' does not exist on type 'BuildPropertiesOptions'
You are attempting to set a build property that is not recognized or supported by `expo-build-properties` for the specified platform.
fix
Consult the official `expo-build-properties` documentation for a list of supported build properties for Android and iOS. Remove or correct any unrecognized keys.
Upgrade
Version history
55.0.13latest on npm
Audit
Dependencies
exporequiredPeer dependency, required for Expo-related configuration and build processes.
Agent activity
14 hits · last 30 days
node
10
Amazon
1
OpenAI (training)
1
Resources
expo-build-properties — npm install expo-build-properties · libregistry