Guides
Plan-enterprise-icon
Expo Application Services
API Reference

Caching dependencies

Learn how to speed up your builds by caching dependencies.


Before a build job can begin compiling your project, all project dependencies need to be available on disk. The longer it takes to acquire the dependencies, the more you need to wait for your build to complete — so caching dependencies is an important part of speeding up your builds.

Info-icon

We're actively working on improving caching and other aspects of the build process to make builds reliably fast.

Custom caching

The cache field on build profiles in eas.json can be used to configure caching for specific files and directories. Specified files will be saved to persistent storage after a successful build and restored on subsequent builds after the JavaScript dependencies are installed. Restoring does not overwrite existing files. Changing the cache.key value will invalidate the cache. Changing any other property of the cache object will also invalidate the cache.

The caching implementation is built on top of Amazon S3, and it's not fast enough to give you any benefit from caching node_modules or CocoaPods; it's intended only for files that require significant computation to generate, for example, compilation results (both final binaries and any intermediate files).

JavaScript dependencies

EAS Build runs an npm cache server that can speed up downloading JavaScript dependencies for your build jobs. Projects that are using npm or yarn v2 will use the cache by default, but yarn v1 will require that you apply this workaround.

It is not yet possible to save and restore node_modules between builds.

To disable using our npm cache server for your builds set EAS_BUILD_DISABLE_NPM_CACHE env variable value to "1" in eas.json.

eas.json
{
  "build": {
    "production": {
      "env": {
        "EAS_BUILD_DISABLE_NPM_CACHE": "1"
        %%placeholder-start%%... %%placeholder-end%%
      }
      %%placeholder-start%%... %%placeholder-end%%
    }
    %%placeholder-start%%... %%placeholder-end%%
  }
  %%placeholder-start%%... %%placeholder-end%%
}

Android dependencies

EAS Build runs a Maven cache server that can speed up downloading Android dependencies for your build jobs.

Currently, we are caching:

To disable using our Maven cache server for your builds set EAS_BUILD_DISABLE_MAVEN_CACHE env variable value to "1" in eas.json.

eas.json
{
  "build": {
    "production": {
      "env": {
        "EAS_BUILD_DISABLE_MAVEN_CACHE": "1"
        %%placeholder-start%%... %%placeholder-end%%
      }
      %%placeholder-start%%... %%placeholder-end%%
    }
    %%placeholder-start%%... %%placeholder-end%%
  }
  %%placeholder-start%%... %%placeholder-end%%
}

iOS dependencies

EAS Build caches the Podfile.lock file by default. This provides consistent results across managed app builds.

Additionally, EAS Build runs a CocoaPods cache server that can speed up downloading iOS dependencies for your build jobs in most cases. It also makes the service more resilient to CocoaPods CDN outages.

The cache server is configured to cache almost all the pods served from the official CocoaPods CDN, minus a few exceptions that our cache server can't handle. These exceptions can be found on the blacklist of our custom CocoaPods plugin. These are fetched directly from the CDN instead of being fetched through our cache server.

This is an experimental feature that requires explicit opt-in. You can enable it by setting the EAS_BUILD_ENABLE_COCOAPODS_CACHE env variable value to "1" in eas.json.

eas.json
{
  "build": {
    "production": {
      "env": {
        "EAS_BUILD_ENABLE_COCOAPODS_CACHE": "1"
        %%placeholder-start%%... %%placeholder-end%%
      }
      %%placeholder-start%%... %%placeholder-end%%
    }
    %%placeholder-start%%... %%placeholder-end%%
  }
  %%placeholder-start%%... %%placeholder-end%%
}

To explicitly disable using our CocoaPods cache server for your builds, set the EAS_BUILD_ENABLE_COCOAPODS_CACHE env variable value to "0" in eas.json.

eas.json
{
  "build": {
    "production": {
      "env": {
        "EAS_BUILD_ENABLE_COCOAPODS_CACHE": "0"
        %%placeholder-start%%... %%placeholder-end%%
      }
      %%placeholder-start%%... %%placeholder-end%%
    }
    %%placeholder-start%%... %%placeholder-end%%
  }
  %%placeholder-start%%... %%placeholder-end%%
}
  • Message-iconAsk a question on the forums
  • Edit-iconEdit this page

Was this doc helpful?