GuidesExpo Application ServicesAPI Reference
ArchiveExpo SnackDiscordForumsChangelog

Using Git Submodules

Learn how to configure EAS Build to use git submodules.

When using the default Version Control Systems (VCS) workflow, the content of your working directory is uploaded to EAS Build as it is, including the content of Git submodules. However, if you are building on CI or have cli.requireCommit set to true in eas.json or have a submodule in a private repository, you will need to initialize it to avoid uploading empty directories.

Submodules initialization

To initialize a submodule on EAS Build worker:


Create a secret with a base64 encoded private SSH key that has permission to access submodule repositories.


Add an eas-build-pre-install npm hook to check out those submodules, for example:

#!/usr/bin/env bash

mkdir -p ~/.ssh

# Real origin URL is lost during the packaging process, so if your
# submodules are defined using relative urls in .gitmodules then
# you need to restore it with:
# git remote set-url origin

# restore private key from env variable and generate public key
echo "$SSH_KEY_BASE64" | base64 -d > ~/.ssh/id_rsa
chmod 0600 ~/.ssh/id_rsa
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/

# add your git provider to the list of known hosts
ssh-keyscan >> ~/.ssh/known_hosts

git submodule update --init