If needed, there is a guide depending on what you want to build/launch in the Expo documentation
node
v18+yarn
v3- Android Studio / Xcode
- The
Expo Go
application on your mobile phone
To install yarn
, run
npm install --global yarn
Run yarn
to install dependencies
- Run Expo
yarn start
- Open Expo Go or scan the QR code.
- You can also open the devtool console by typing
d
in the terminal
If you changed some environment variable, you might need to reset the cache:
npx expo start --reset-cache
- Run web, copy the lan IP e.g
192.168.x.y
- Update your
EXPO_PUBLIC_LOCAL_URI
in the .env with the related IP - Run the mobile app using this command (note the --reset-cache option, it's necessary for Metro to reload the .env file):
npx expo start --reset-cache
- Install Expo Go
- Launch ShapeShift by scanning the QR code
- Select the
localhost
environment in the settings - The hotreloading should work as expected
- There is an expo command to run the iOS app:
yarn ios
- If you are struggling launching the simulator, you might want to use the prebuild command which is updating native folders:
yarn prebuild
- There is an expo command to run the iOS app:
yarn android
- Install EAS:
npm install -g eas-cli
- Send both apps:
eas build
- Update the
version
field in theapp.json
file to the new version - run
npx expo prebuild
to build both android and ios bundles and update the versions - and then deploy a build to eas using
eas build
- Make sure you have android studio installed, with an emulator, same for iOS with xcode
- First run
npx expo prebuild
- Then
npx expo start
- Hit
i
ora
depending on which emulator you want to run
We can launch workflows to deploy an app without relying on the CI:
npx eas-cli@latest workflow:run .eas/workflows/build-and-deploy.yml
It can be useful if we want the operation team to test a specific version before we merge on main.
EAS supports auto incrementing builds. Every time we submit a build, the patch version will be automatically incremented.
- Update the
appVersion
andversion
fields of theapp.json
file - run
npx expo prebuild
to build both android and ios bundles and update the versions - and then deploy a build to eas using
eas build
If we add some native library, we will need to prevent the old applications from receiving the Over-The-Air (OTA) updates:
- The process is the same as updating to a major or minor version, but you also need to update the
runtimeVersion
, which is used by Expo to check if theruntimeVersion
of the update is the same as the current OTA. If it differs, the application will not accept the OTA to avoid crash issues due to missing native files.
The more practical way is to update the runtimeVersion
and push this particular build to android testing channels and flightests, but this will require a store update.
In the future, if we see that it would be more practical to have a dedicated channel, it would means that OPS team would need to keep the operations app on their phone, we could do a release channel build and update them as OTAs, then rebuild using the production channel, but as far as I know, iPhones can't install both apps at the same time...