EAS Build will Default to M1/M2 for iOS Builds

Starting from late March, the default resource class for iOS builds will change from Intel to Apple silicon. EAS Build is also introducing M2-based workers.

James Ide
Exposition

--

At the beginning of this year, M1 builders became generally available on EAS Build. Thousands of developers have since adopted the new Apple silicon M1 resource class and on average have seen a 40% reduction in build times. The Apple silicon “m-medium” resource class will become the default for iOS builds near the end of this month. In this announcement post, we’ll explain the migration schedule, how to migrate to Apple silicon-based builders today, and how to keep using Intel-based workers if you need some more time to migrate. Additionally, we’ll share details about M2-based builders, coming soon to EAS Build.

Impact

We expect this change will mainly speed up iOS builds. Many developers have already successfully migrated with no changes to their projects. The speed improvement will vary by project as every app is different, and the average improvement is around 40%.

However, some projects may still depend on Intel-based builders. We expect this to be uncommon. Should a project that was successfully building on Intel-based builders begin to fail on Apple silicon-based builders, customers can opt in to using Intel-based builders by specifying the “intel-medium” resource class, explained later in this post.

This announcement affects only iOS builds of projects using SDK 47 or older. Projects using SDK 48 and newer already default to Apple silicon-based builders.

Migration schedule

The default resource class for iOS builds will first change for projects using SDK 47. Starting March 27, priority iOS builds for projects using SDK 47 will begin to default to the Apple silicon “m-medium” resource class. Non-priority (Free plan) builds will switch to “m-medium” shortly before this date. We will monitor the migration to ensure it goes smoothly for EAS customers and expect it will be successful given that half of all SDK 47 builds already opt in to Apple silicon-based builders.

After the default resource class for SDK 47 projects has successfully changed, the default resource class for SDK 46 projects will follow suit in April. Finally, after SDK 46 projects have successfully switched, SDK 45 and older will follow. We will communicate the exact dates of the migration for each SDK version here on blog.expo.dev and Twitter (follow @expo).

Planned migration schedule

As a reminder, iOS apps submitted to the Apple App Store in April will need to use SDK 46 or newer due to Xcode 14.1 becoming the minimum supported version. If your project uses SDK 45, be sure to plan for this upcoming requirement.

Opting in today

The “m-medium” resource class is available today. Install the latest version of EAS CLI (3.8.0 or greater) and use the "resourceClass" property in your eas.json file to specify “m-medium”:

{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": {
"resourceClass": "m-medium"
}
},
"production": {
"ios": {
"resourceClass": "m-medium"
}
}
}
}

If you’ve already opted in, you may notice the resource class name has changed from “m1-medium” to “m-medium”. Both names are supported. However, “m-medium” is now recommended because it more accurately reflects that the build will run on either an M1- or M2-based builder, explained later.

Opting out

Note (July 2023): Intel-based builders are being replaced with M2-based builders and the “intel-medium” resource class is deprecated now and will be unavailable in October of this year.

If your build depends on Intel-based builders, specify the “intel-medium” resource class in your eas.json file:

{
"build": {
"production": {
"ios": {
"resourceClass": "intel-medium"
}
}
}
}

We expect nearly all builds to be compatible with Apple silicon-based builders. However, should your project not yet build successfully on the new builders, eas.json’s "resourceClass" property will let you use the old builders. We will continue to offer Intel-based builders to On-demand, Production, and Enterprise customers for several months to ensure a smooth migration that’s accommodating of your roadmaps and schedules. iOS builders available under the Free plan use spare capacity and will move to Apple silicon-based builders sooner, especially as we add new M2 builders to EAS Build.

M2 with EAS Build

M2 builders are coming to EAS

Two months ago, we announced that M1 builders were generally available on EAS Build. Today, we’re announcing that M2 builders will be available in the next few weeks. Our testing has shown about a 10% improvement to a build’s compilation step compared to M1 builders. Of course, every app is different and may see a larger or smaller speed-up but we expect this to be an improvement for all apps.

All projects that specify the “m-medium” (or “m1-medium”) resource class or use SDK 48 or newer will automatically use M1 or M2 builders based on availability (”m1-medium” expresses a preference for M1 and “m-medium” expresses a preference for M2). We will gradually replace today’s M1 builders with M2 builders and all builds will enjoy improved performance from the new M2 processors.

Liking Expo and EAS? Star Expo on GitHub and follow us on Twitter!

--

--