HomeGuidesReferenceLearn

Expo BuildProperties

GitHub

npm


expo-build-properties is a config plugin for managed apps to override the default native build properties. During expo prebuild, the config plugin will populate build properties from given config to android/gradle.properties and ios/Podfile.properties.json.

Platform Compatibility

Android DeviceAndroid EmulatoriOS DeviceiOS SimulatorWeb

Installation

Note: To use this config plugin, your apps must be a managed app and build by either EAS Build or expo run:[android|ios]. This package has no effect on project's built with the classic expo build:android or expo build:ios commands, or when running in the Expo Go app.

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