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 (existing React Native projects).
Enable R8 in release builds to obfuscate Java code and reduce app size.
enablePngCrunchInReleaseBuilds(optional)
boolean
Enable crunchPngs 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.
Default:true
enableShrinkResourcesInReleaseBuilds(optional)
boolean
Enable shrinkResources in release builds to remove unused resources from the app.
This property should be used in combination with enableMinifyInReleaseBuilds.
exclusiveMavenMirror(optional)
string
Specifies a single Maven repository to be used as an exclusive mirror for all dependency resolution.
When set, all other Maven repositories will be ignored and only this repository will be used to fetch dependencies.
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.
Enable precompiled headers (PCH) for Android native builds.
When enabled, creates a custom CMakeLists.txt with PCH support for all autolinked
native libraries, significantly speeding up C++ compilation by pre-compiling
commonly used React Native headers.
Can also be enabled by setting the EXPO_USE_ANDROID_PRECOMPILED_HEADERS=1 environment variable.
Note: This feature is experimental and might not work with all native libraries.
Default:false
usesCleartextTraffic(optional)
boolean
Indicates whether the app intends to use cleartext network traffic.
For Android 8 and below, the default platform-specific value is true.
For Android 9 and above, the default platform-specific value is false.
Enable animated WebP support in React Native's <Image> component. Requires webpEnabled
to also be true. iOS does not support animated WebP via React Native's <Image>.
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.
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 SEND or VIEW.
This configuration is responsible for adding the new Pod entries to ios/Podfile.
Example
Creating entry in the configuration like below:
[{
name:"Protobuf",
version:"~> 3.14.0",}]
Will produce the following entry in the generated ios/Podfile:
pod 'Protobuf','~> 3.14.0'
forceStaticLinking(optional)
string[]
List of CocoaPods that should be linked statically instead of as frameworks.
This is only relevant when use_frameworks! is enabled. Some pods—
especially React Native prebuilt binaries—can fail due to modular header
issues when built as dynamic frameworks. Declaring them here ensures they
are linked statically, avoiding those compatibility problems.
This property is consumed by the use_expo_modules function in
expo-modules-autolinking.
networkInspector(optional)
boolean
Enable the Network Inspector.
Default:true
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.
Enable use_frameworks!
in Podfile to use frameworks instead of static libraries for Pods.
usePrecompiledModules(optional)
boolean
Enable using precompiled Expo modules (XCFrameworks) instead of building from source.
When enabled, sets the EXPO_USE_PRECOMPILED_MODULES environment variable to 1
during pod install, which causes matching modules to be linked as vendored frameworks.
Default:true
SharedBuildConfigFields
Android
iOS
tvOS
Shared build configuration fields that can be set at the top level
or overridden per-platform. Platform-specific values take precedence.
Property
Type
Description
buildReactNativeFromSource(optional)
boolean
Enable building React Native from source. Turning this on will significantly increase the build times.
On iOS, this controls support for precompiled React Native iOS dependencies (ReactNativeDependencies.xcframework).
Setting this value to true will enable building React Native from source and disable the use of precompiled xcframeworks.
This feature is available from React Native 0.80 and later when using the new architecture.
From React Native 0.81, this setting will also control the use of a precompiled React Native Core (React.xcframework).
The React Native release level to use for the project.
This can be used to enable different sets of internal React Native feature flags.
Default:'stable'
useHermesV1(optional)
boolean
Enable Hermes V1 engine. Turning on will provide faster startup times, improved runtime
performance, and reduced memory usage.
Hermes V1 is the default JavaScript engine starting in React Native 0.84.
Set this to false to use the legacy Hermes engine instead, which also
requires setting buildReactNativeFromSource to true.