📄 expo/versions/v52.0.0/sdk/build-properties

File: build-properties.md | Updated: 11/15/2025

Source: https://docs.expo.dev/versions/v52.0.0/sdk/build-properties

Hide navigation

Search

Ctrl K

Home Guides EAS Reference Learn

Reference version

SDK 52

Archive Expo Snack Discord and Forums Newsletter

Expo BuildProperties

GitHub Changelog npm

A config plugin that allows customizing native build properties during prebuild.

GitHub Changelog npm

Android

iOS

tvOS

Bundled version:

~0.13.3

Copy page


expo-build-properties is a config plugin configuring the native build properties of your android/gradle.properties and ios/Podfile.properties.json directories during Prebuild .

This config plugin configures how Prebuild command generates the native android and ios directories and therefore cannot be used with projects that don't run npx expo prebuild (bare projects).

Installation


Terminal

Copy

- npx expo install expo-build-properties

If you are installing this in an existing React Native app , make sure to install expo in your project.

Usage


Example app.json with config plugin

app.json

app.config.js

app.json

Copy

{ "expo": { "plugins": [ [ "expo-build-properties", { "android": { "compileSdkVersion": 35, "targetSdkVersion": 35, "buildToolsVersion": "35.0.0" }, "ios": { "deploymentTarget": "15.1" } } ] ] } }

app.config.js

Copy

export default { expo: { plugins: [ [ 'expo-build-properties', { android: { compileSdkVersion: 35, targetSdkVersion: 35, buildToolsVersion: '35.0.0', }, ios: { deploymentTarget: '15.1', }, }, ], ], }, };

All configurable properties

PluginConfigType interface represents currently available configuration properties.

API


Methods


BuildProperties.withBuildProperties(config, props)

Android

iOS

tvOS

| Parameter | Type | Description | | --- | --- | --- | | config | [ExpoConfig](https://github.com/expo/expo/blob/main/packages/%40expo/config-types/src/ExpoConfig.ts) | Expo config for application. | | props | [PluginConfigType](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#pluginconfigtype) | Configuration for the build properties plugin. |

Config plugin allowing customizing native Android and iOS build properties for managed apps.

Returns:

[ExpoConfig](https://github.com/expo/expo/blob/main/packages/%40expo/config-types/src/ExpoConfig.ts)

Interfaces


AndroidMavenRepository

Android

| Property | Type | Description | | --- | --- | --- | | authentication(optional) | 'basic' \| 'digest' \| 'header' | The authentication scheme to use when accessing the Maven repository. | | credentials(optional) | [AndroidMavenRepositoryCredentials](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#androidmavenrepositorycredentials) | The credentials to use when accessing the Maven repository. May be of type PasswordCredentials, HttpHeaderCredentials, or AWSCredentials.<br><br>> See: The authentication schemes section of Gradle documentation<br>> for more information. | | url | string | The URL of the Maven repository. |

AndroidMavenRepositoryAWSCredentials

Android

| Property | Type | Description | | --- | --- | --- | | accessKey | string | - | | secretKey | string | - | | sessionToken(optional) | string | - |

AndroidMavenRepositoryHttpHeaderCredentials

Android

| Property | Type | Description | | --- | --- | --- | | name | string | - | | value | string | - |

AndroidMavenRepositoryPasswordCredentials

Android

| Property | Type | Description | | --- | --- | --- | | password | string | - | | username | string | - |

ExtraIosPodDependency

iOS

Interface representing extra CocoaPods dependency.

See: Podfile syntax reference

| Property | Type | Description | | --- | --- | --- | | branch(optional) | string | The git branch to fetch. See the git property for more information. | | commit(optional) | string | The git commit to fetch. See the git property for more information. | | configurations(optional) | string[] | Build configurations for which the pod should be installed.<br><br>Example<br><br>['Debug', 'Release'] | | git(optional) | string | Use the bleeding edge version of a Pod.<br><br>Example<br><br>{ "name": "AFNetworking", "git": "https://github.com/gowalla/AFNetworking.git", "tag": "0.7.0" }<br><br>This acts like to add this pod dependency statement:<br><br>pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0' | | modular_headers(optional) | boolean | Whether this pod should use modular headers. | | name | string | Name of the pod. | | path(optional) | string | Custom local filesystem path to add the dependency.<br><br>Example<br><br>~/Documents/AFNetworking | | podspec(optional) | string | Custom podspec path.<br><br>Example<br><br>https://example.com/JSONKit.podspec | | source(optional) | string | Custom source to search for this dependency.<br><br>Example<br><br>https://github.com/CocoaPods/Specs.git | | tag(optional) | string | The git tag to fetch. See the git property for more information. | | testspecs(optional) | string[] | Test specs can be optionally included via the :testspecs option. By default, none of a Pod's test specs are included.<br><br>Example<br><br>['UnitTests', 'SomeOtherTests'] | | version(optional) | string | Version of the pod. CocoaPods supports various versioning options<br>.<br><br>Example<br><br>~> 0.1.2 |

PluginConfigType

Android

iOS

tvOS

Interface representing base build properties configuration.

| Property | Type | Description | | --- | --- | --- | | android(optional) | [PluginConfigTypeAndroid](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#pluginconfigtypeandroid) | Only for: <br><br>Android<br><br> <br><br>Interface representing available configuration for Android native build properties. | | ios(optional) | [PluginConfigTypeIos](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#pluginconfigtypeios) | Only for: <br><br>iOS<br><br> <br><br>Interface representing available configuration for iOS native build properties. |

PluginConfigTypeAndroid

Android

Interface representing available configuration for Android native build properties.

| Property | Type | Description | | --- | --- | --- | | buildToolsVersion(optional) | string | Override the default buildToolsVersion version number in build.gradle. | | compileSdkVersion(optional) | number | Override the default compileSdkVersion version number in build.gradle. | | enablePngCrunchInReleaseBuilds(optional) | boolean | Enable crunchPngs<br> in release builds to optimize PNG files. This property is enabled by default, but "might inflate PNG files that are already compressed", so you may want to disable it if you do your own PNG optimization.<br><br>Default:true | | enableProguardInReleaseBuilds(optional) | boolean | Enable Proguard or R8<br> in release builds to obfuscate Java code and reduce app size. | | enableShrinkResourcesInReleaseBuilds(optional) | boolean | Enable shrinkResources<br> in release builds to remove unused resources from the app. This property should be used in combination with enableProguardInReleaseBuilds. | | extraMavenRepos(optional) | (string \| [AndroidMavenRepository](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#androidmavenrepository) )[] | Add extra maven repositories to all gradle projects.<br><br>Takes an array of objects or strings. Strings are passed as the url property of the object with no credentials or authentication scheme.<br><br>This adds the following code to android/build.gradle:<br><br>allprojects { repositories { maven { url "https://foo.com/maven-releases" } }<br><br>By using an AndroidMavenRepository object, you can specify credentials and an authentication scheme.<br><br>allprojects { repositories { maven { url "https://foo.com/maven-releases" credentials { username = "bar" password = "baz" } authentication { basic(BasicAuthentication) } } } }<br><br>> See: Gradle documentation | | extraProguardRules(optional) | string | Append custom Proguard rules<br> to android/app/proguard-rules.pro. | | kotlinVersion(optional) | string | Override the Kotlin version used when building the app. | | manifestQueries(optional) | [PluginConfigTypeAndroidQueries](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#pluginconfigtypeandroidqueries) | Specifies the set of other apps that an app intends to interact with. These other apps are specified by package name, by intent signature, or by provider authority.<br><br>> See: Android documentation | | minSdkVersion(optional) | number | Override the default minSdkVersion version number in build.gradle. | | networkInspector(optional) | boolean | Enable the Network Inspector.<br><br>Default:true | | newArchEnabled(optional) | boolean | > Deprecated Use app config newArchEnabled<br>> instead. Enable React Native new architecture for Android platform. | | packagingOptions(optional) | [PluginConfigTypeAndroidPackagingOptions](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#pluginconfigtypeandroidpackagingoptions) | Interface representing available configuration for Android Gradle plugin PackagingOptions<br>. | | targetSdkVersion(optional) | number | Override the default targetSdkVersion version number in build.gradle. | | useLegacyPackaging(optional) | boolean | Instructs the Android Gradle plugin to compress native libraries in the APK using the legacy packaging system.<br><br>Default:false<br><br>> See: Android documentation | | usesCleartextTraffic(optional) | boolean | Indicates whether the app intends to use cleartext network traffic.<br><br>Default:false<br><br>> See: Android documentation |

PluginConfigTypeAndroidPackagingOptions

Android

Interface representing available configuration for Android Gradle plugin PackagingOptions .

| Property | Type | Description | | --- | --- | --- | | doNotStrip(optional) | string[] | Array of patterns for native libraries that should not be stripped of debug symbols. | | exclude(optional) | string[] | Array of patterns for native libraries that should be excluded from being packaged in the APK. | | merge(optional) | string[] | Array of patterns for native libraries where all occurrences are concatenated and packaged in the APK. | | pickFirst(optional) | string[] | Array of patterns for native libraries where only the first occurrence is packaged in the APK. |

PluginConfigTypeAndroidQueries

Android

| Property | Type | Description | | --- | --- | --- | | intent(optional) | [PluginConfigTypeAndroidQueriesIntent[]](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#pluginconfigtypeandroidqueriesintent) | Specifies an intent filter signature. Your app can discover other apps that have matching <intent-filter> elements. These intents have restrictions compared to typical intent filter signatures.<br><br>> See: Android documentation<br>> for details | | package(optional) | string[] | Specifies one or more apps that your app intends to access. These other apps might integrate with your app, or your app might use services that these other apps provide. | | provider(optional) | string[] | Specifies one or more content provider authorities. Your app can discover other apps whose content providers use the specified authorities. There are some restrictions on the options that you can include in this <provider> element, compared to a typical <provider> manifest element. You may only specify the android:authorities attribute. |

PluginConfigTypeAndroidQueriesData

Android

| Property | Type | Description | | --- | --- | --- | | host(optional) | string | Specify a URI authority host that is handled | | mimeType(optional) | string | Specify a MIME type that is handled | | scheme(optional) | string | Specify a URI scheme that is handled |

PluginConfigTypeAndroidQueriesIntent

Android

| Property | Type | Description | | --- | --- | --- | | action(optional) | string | A string naming the action to perform. Usually one of the platform-defined values, such as ACTION_SEND or ACTION_VIEW. | | category(optional) | string \| string[] | Provides an additional way to characterize the activity handling the intent, usually related to the user gesture or location from which it's started. | | data(optional) | [PluginConfigTypeAndroidQueriesData](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#pluginconfigtypeandroidqueriesdata) | A description of the data associated with the intent. |

PluginConfigTypeIos

iOS

Interface representing available configuration for iOS native build properties.

| Property | Type | Description | | --- | --- | --- | | ccacheEnabled(optional) | boolean | Enable C++ compiler cache for iOS builds.<br><br>This speeds up compiling C++ code by caching the results of previous compilations.<br><br>> See: React Native's documentation on local caches<br>> and Ccache documentation<br>> . | | deploymentTarget(optional) | string | Override the default iOS "Deployment Target" version in the following projects:<br><br>* in CocoaPods projects,<br>* PBXNativeTarget with "com.apple.product-type.application" productType in the app project. | | extraPods(optional) | [ExtraIosPodDependency[]](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#extraiospoddependency) | Add extra CocoaPods dependencies for all targets.<br><br>This configuration is responsible for adding the new Pod entries to ios/Podfile.<br><br>Example<br><br>Creating entry in the configuration like below:<br><br>[ { name: "Protobuf", version: "~> 3.14.0", } ]<br><br>Will produce the following entry in the generated ios/Podfile:<br><br>pod 'Protobuf', '~> 3.14.0' | | networkInspector(optional) | boolean | Enable the Network Inspector.<br><br>Default:true | | newArchEnabled(optional) | boolean | > Deprecated Use app config newArchEnabled<br>> instead. Enable React Native new architecture for iOS platform. | | privacyManifestAggregationEnabled(optional) | boolean | Enable aggregation of Privacy Manifests (PrivacyInfo.xcprivacy) from CocoaPods resource bundles. If enabled, the manifests will be merged into a single file. If not enabled, developers will need to manually aggregate them.<br><br>> See: Privacy manifests<br>> guide and Apple's documentation on Privacy manifest files<br>> . | | useFrameworks(optional) | 'static' \| 'dynamic' | Enable use_frameworks!<br> in Podfile to use frameworks instead of static libraries for Pods. |

Types


AndroidMavenRepositoryCredentials

Android

Literal Type: union

Acceptable values are: [AndroidMavenRepositoryPasswordCredentials](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#androidmavenrepositorypasswordcredentials) | [AndroidMavenRepositoryHttpHeaderCredentials](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#androidmavenrepositoryhttpheadercredentials) | [AndroidMavenRepositoryAWSCredentials](https://docs.expo.dev/versions/v52.0.0/sdk/build-properties#androidmavenrepositoryawscredentials)