HomeGuidesReferenceLearn
ArchiveExpo SnackDiscord and ForumsNewsletter

Build server infrastructure

Learn about the current build server infrastructure when using EAS.


This document was last updated on April 8th, 2024.

Builder IP addresses

Here is the up-to-date list of builder IP addresses.

Configuring build environment

Images for each platform have one specific version of Node.js, yarn, CocoaPods, Xcode, Ruby, Fastlane, and so on. You can override some of the versions in eas.json. If there is no dedicated configuration option you are looking for, you can use npm hooks to install or update any system dependencies with apt-get or brew. Consider that those customizations are applied during the build and will increase your build times.

When selecting an image for the build you can use the full name provided below or one of the aliases: auto, latest, sdk-50 or sdk-49.

  • The use of a specific name guarantees a consistent environment with only minor updates.
  • When using the auto alias, the build image will be selected based on the project configuration, Expo SDK version, and React Native version. You can check what image is used for a build in the Spin up build environment build logs section.
  • The latest alias will be assigned to the image with the most up-to-date versions of the software.
  • The sdk-50 alias will be assigned to the image best suited for SDK 50 builds.
  • The sdk-49 alias will be assigned to the image best suited for SDK 49 builds.
  • SDK aliases will be updated with every new SDK release.
  • The latest alias will be updated with every new image release.
Note: If you do not provide image in eas.json, your build by default will use the auto alias.

Android build server configurations

Android builders run on virtual machines in an isolated environment. Every build gets its own dedicated VM instance.

  • Build resources:

    • medium: 4 vCPUs, 16 GB RAM (n2-standard-4 Google Cloud machine type)
    • large: 8 vCPUs, 32 GB RAM (n2-standard-8 Google Cloud machine type)
  • npm cache deployed with Kubernetes

  • Maven cache deployed with Kubernetes

  • Global Gradle configuration in ~/.gradle/gradle.properties:

    ~/.gradle/gradle.properties
    org.gradle.jvmargs=-Xmx14g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    org.gradle.parallel=true
    org.gradle.configureondemand=true
    org.gradle.daemon=false
    
  • Global npm configuration in ~/.npmrc:

    ~/.npmrc
    registry=http://npm-cache-service.worker-infra-production.svc.cluster.local:4873
    
  • Global Yarn configuration in ~/.yarnrc.yml:

    ~/.yarnrc.yml
    unsafeHttpWhitelist:
      - '*'
    npmRegistryServer: 'http://npm-cache-service.worker-infra-production.svc.cluster.local:4873'
    enableImmutableInstalls: false
    

Android server images

ubuntu-22.04-jdk-17-ndk-r21e (latest, sdk-50)

Details
  • Docker image: ubuntu:jammy-20220531
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.9.2
  • npm 9.8.1
  • Java 17
  • node-gyp 10.0.1

ubuntu-22.04-jdk-11-ndk-r21e (sdk-49)

Details
  • Docker image: ubuntu:jammy-20220531
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.7.5
  • npm 9.8.1
  • Java 11
  • node-gyp 10.0.1

ubuntu-22.04-jdk-8-ndk-r21e

Details
  • Docker image: ubuntu:jammy-20220531
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 8
  • node-gyp 10.0.1

ubuntu-20.04-jdk-11-ndk-r21e

Details
  • Docker image: ubuntu:focal-20210921
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 11
  • node-gyp 10.0.1

ubuntu-20.04-jdk-8-ndk-r21e

Details
  • Docker image: ubuntu:focal-20210921
  • NDK 21.4.7075529
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 8
  • node-gyp 10.0.1

ubuntu-20.04-jdk-11-ndk-r19c

Details
  • Docker image: ubuntu:focal-20210921
  • NDK 19.2.5345600
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 11
  • node-gyp 10.0.1

ubuntu-20.04-jdk-8-ndk-r19c

Details
  • Docker image: ubuntu:focal-20210921
  • NDK 19.2.5345600
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • Java 8
  • node-gyp 10.0.1

iOS build server configurations

iOS builder VMs run on Mac mini hosts in an isolated environment. Every build gets its own fresh macOS VM. For more information, see iOS-specific resource classes.

  • Hardware:

    • M1 3.2GHz 8-Core, 16 GB RAM
    • M2 3.9GHz 8-Core, 24 GB RAM
    • M2 Pro 3.9GHz 12-Core, 32 GB RAM
  • Build resources:

    • medium: 3 vCPUs, 8 GB RAM
    • large:
      • 6 vCPUs, 22 GB RAM if running on an M2 Mac
      • 5 vCPUs, 12 GB RAM if running on an M2 Pro Mac
  • npm cache

  • CocoaPods cache

  • cocoapods-nexus-plugin

  • Global npm configuration in ~/.npmrc:

    ~/.npmrc
    registry=http://10.254.24.9:4873
    
  • Global Yarn configuration in ~/.yarnrc.yml:

    ~/.yarnrc.yml
    unsafeHttpWhitelist:
      - '*'
    npmRegistryServer: 'registry=http://10.254.24.9:4873'
    enableImmutableInstalls: false
    

iOS server images

macos-sonoma-14.4-xcode-15.3 (latest)

Details
  • macOS Sonoma 14.4.1
  • Xcode 15.3 (15E204a)
  • Node.js 18.18.0
  • Bun 1.0.35
  • Yarn 1.22.21
  • pnpm 8.14.1
  • npm 9.8.1
  • fastlane 2.219.0
  • CocoaPods 1.14.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-ventura-13.6-xcode-15.2 (sdk-50, sdk-49)

Details
  • macOS Ventura 13.6
  • Xcode 15.2 (15C500b)
  • Node.js 18.18.0
  • Bun 1.0.23
  • Yarn 1.22.21
  • pnpm 8.14.1
  • npm 9.8.1
  • fastlane 2.219.0
  • CocoaPods 1.14.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-ventura-13.6-xcode-15.1

Details
  • macOS Ventura 13.6
  • Xcode 15.1 (15C65)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.12.1
  • npm 9.8.1
  • fastlane 2.217.0
  • CocoaPods 1.14.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-ventura-13.6-xcode-15.0

Details
  • macOS Ventura 13.6
  • Xcode 15.0 (15A240d)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.7.6
  • npm 9.8.1
  • fastlane 2.216.0
  • CocoaPods 1.13.0
  • Ruby 2.7
  • node-gyp 10.0.1

macos-ventura-13.4-xcode-14.3.1 (deprecated)

Details
  • macOS Ventura 13.4
  • Xcode 14.3.1 (14E300c)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.6.5
  • npm 9.8.1
  • fastlane 2.213.0
  • CocoaPods 1.12.1
  • Ruby 2.7
  • node-gyp 10.0.1

macos-ventura-13.3-xcode-14.3 (deprecated)

Details
  • macOS Ventura 13.3
  • Xcode 14.3 (14E222b)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 8.2.0
  • npm 9.8.1
  • fastlane 2.212.2
  • CocoaPods 1.12.0
  • Ruby 2.7
  • node-gyp 10.0.1

macos-monterey-12.6-xcode-14.2 (deprecated)

Details
  • macOS Monterey 12.6
  • Xcode 14.2 (14C18)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.27.0
  • npm 9.8.1
  • fastlane 2.211.0
  • CocoaPods 1.11.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-monterey-12.6-xcode-14.1 (deprecated)

Details
  • macOS Monterey 12.6
  • Xcode 14.1 (14B47b)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.15.0
  • npm 9.8.1
  • fastlane 2.210.1
  • CocoaPods 1.11.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-monterey-12.6-xcode-14.0 (deprecated)

Details
  • macOS Monterey 12.6
  • Xcode 14.0 (14A309)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.11.0
  • npm 9.8.1
  • fastlane 2.210.0
  • CocoaPods 1.11.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-monterey-12.4-xcode-13.4 (deprecated)

Details
  • macOS Monterey 12.4
  • Xcode 13.4 (13F17a)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • fastlane 2.205.2
  • CocoaPods 1.11.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-monterey-12.3-xcode-13.3 (deprecated)

Details
  • macOS Monterey 12.3.1
  • Xcode 13.3.1 (13E500a)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • fastlane 2.205.2
  • CocoaPods 1.11.3
  • Ruby 2.7
  • node-gyp 10.0.1

macos-monterey-12.1-xcode-13.2 (deprecated)

Details
  • macOS Monterey 12.1
  • Xcode 13.2.1 (13C100)
  • Node.js 18.18.0
  • Bun 1.0.14
  • Yarn 1.22.19
  • pnpm 7.0.0
  • npm 9.8.1
  • fastlane 2.201.0
  • CocoaPods 1.11.2
  • Ruby 2.7
  • node-gyp 10.0.1