Sep 1, 2022 by
Dominik Sokal
The autoIncrement
field in eas.json used to be based on local values only. Here’s how it worked: EAS CLI would read the version field, such as the iOS build number from Info.plist or app.json, then increment that value and write it back to the file it was read from. This only really works if you commit the incremented value every time, so it wasn’t a great fit for building on CI and it was a pain to keep in sync when building from different Git branches. We’ve introduced the concept of a “remote app version source” to solve for these limitations.
The appVersionSource field in eas.json allows you to switch between using local versions (as described above) or remote versions. Here’s how it works: the app version is stored on Expo’s servers rather than locally in files like Info.plist or app.json, and EAS CLI sends a request to increment the version before you run a build. If a build profile isn’t configured to increment the version, then it will only read it from Expo’s servers.
Currently the remote version source configuration is supported with buildNumber
and versionCode
properties. We prioritized these fields because developers typically use an automatic version scheme for them (monotonically increasing integers, commit count, and epoch time are all common). The version
field often serves a marketing purpose, or communicates information about the changes from the previous version (eg: semantic versioning).
appVersion
runtime version policy. Learn more.Builds and submissions can occasionally fail due to intermittent issues such as network timeouts and service outages. Another common source of build failures is invalid but not invalidated caches. We’ve added buttons on build and submissions details pages to make it easy to retry failed builds and submissions, and clear the cache for builds if needed. If a build is initiated with the --auto-submit
flag and it fails, then it will still be automatically submitted if the retried build succeeds.
You can now hook in to builds at the following points: pre-install, post-install, on success, on error, and on complete. Hooks can be used to install tooling (eg: a specific version of CMake), interact with external services (eg: upload sourcemaps), run tests, and anything else you might want to do.
Learn more in “Build lifecycle hooks”
End-to-end tests allow you to simulate a user interacting with your app to test the most important flows through your product. A popular tool for writing end-to-end tests in the React Native ecosystem is Detox. We’ve put together a guide to walk you through running E2E tests with Detox on EAS Build, currently only for iOS.
We plan to continue expand EAS Build to provide first-class support for testing frameworks and workflows. This is just the first small step in that direction.
Learn more in “Running E2E tests on EAS Build”
EAS Metadata helps you prepare your app for review by uploading most of the required app information using a simple JSON file. It also helps you prevent common pitfalls that may lead to a rejected app submission. This service integrates into EAS Submit and is now available in beta. Give it a try and let us know what you think!
Learn more in the EAS Metadata Introduction or skip ahead to the Getting Started guide.
If you’re new to EAS Build and you’ve already been building apps for iOS devices, you may already have a number of devices registered in the Apple Developer Portal. You can now import devices from the Apple Developer Portal to EAS Build for your internal distribution builds that use Ad Hoc provisioning.
Watch a demonstration video in the pull request that adds this feature.
App extensions let you extend custom functionality and content beyond your app and make it available to users while they’re interacting with other apps or iOS system functionality.
EAS Build is now to automatically handle app signing credentials in bare projects or through the extra.eas.build.experimental.ios.appExtensions
key in app.json / app.config.js if the project is generated on EAS Build with prebuild.
Learn more about iOS App Extensions on EAS Build.
Now able to sync all iOS Capabilities: EAS Build will automatically sync entitlements with Capabilities for your app on the Apple Developer Portal. Previously this worked for most capabilities, and it now supports all Capabilities that are available for iOS. Learn more in the “iOS Capabilities” reference.
In case you missed it: autocomplete and IntelliSense support for eas.json and store.config.json is now available in Expo extension for Visual Studio Code.
Join us on Discord to discuss this post.