HomeGuidesReferenceLearn

Expo BuildProperties

GitHub

npm

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


expo-build-properties is a config plugin configuring the native build properties of your ios/Podfile.properties.json and android/gradle.properties directories during Expo Prebuild. This config plugin configures how Expo Prebuild generates the native ios and android folders and therefore cannot be used with projects that don't run npx expo prebuild (bare projects).

Platform Compatibility

Android DeviceAndroid EmulatoriOS DeviceiOS SimulatorWeb

Installation

Terminal
npx expo install expo-build-properties

Configuration in app.json/app.config.js

Example app.json with config plugin

app.json
{
  "expo": {
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "compileSdkVersion": 31,
            "targetSdkVersion": 31,
            "buildToolsVersion": "31.0.0"
          },
          "ios": {
            "deploymentTarget": "13.0"
          }
        }
      ]
    ]
  }
}

Full configurable properties

Learn more from PluginConfigType.

API

Methods

BuildProperties.withBuildProperties(config, props)

NameTypeDescription
configExpoConfig

ExpoConfig

propsPluginConfigType

Configuration for the config plugin


Config plugin to customize native Android or iOS build properties for managed apps

Returns

  • ExpoConfig

Interfaces

PluginConfigType

Configuration for expo-build-properties

PluginConfigType Properties

NameTypeDescription
android
(optional)
PluginConfigTypeAndroid-
ios
(optional)
PluginConfigTypeIos-

PluginConfigTypeAndroid

Config for Android native build properties

PluginConfigTypeAndroid Properties

NameTypeDescription
buildToolsVersion
(optional)
string

Override the default buildToolsVersion version number in build.gradle

compileSdkVersion
(optional)
number

Override the default compileSdkVersion version number in build.gradle

enableProguardInReleaseBuilds
(optional)
boolean

Enable Proguard (R8) in release builds to obfuscate Java code and reduce app size

extraProguardRules
(optional)
string

Append custom Proguard rules to android/app/proguard-rules.pro

kotlinVersion
(optional)
string

Override the default Kotlin version when building the app

minSdkVersion
(optional)
number

Override the default minSdkVersion version number in build.gradle

packagingOptions
(optional)
PluginConfigTypeAndroidPackagingOptions

AGP PackagingOptions

targetSdkVersion
(optional)
number

Override the default targetSdkVersion version number in build.gradle


PluginConfigTypeAndroidPackagingOptions

AGP PackagingOptions

PluginConfigTypeAndroidPackagingOptions Properties

NameTypeDescription
doNotStrip
(optional)
string[]

Adds a doNotStrip pattern

exclude
(optional)
string[]

Adds an excluded pattern

merge
(optional)
string[]

Adds a merge pattern

pickFirst
(optional)
string[]

Adds a first-pick pattern


PluginConfigTypeIos

Config for iOS native build properties

PluginConfigTypeIos Properties

NameTypeDescription
deploymentTarget
(optional)
string

Override the default iOS Deployment Target version in the following projects:

  • in CocoaPods projects
  • PBXNativeTarget with com.apple.product-type.application productType in the app project
useFrameworks
(optional)
'static' | 'dynamic'

Enable use_frameworks! in Podfile