Awesome
The official App for #ChainReact2023
This is the home for the official app of Chain React 2023, the only React Native focused conference in the USA, hosted by Infinite Red. This event happened May 17-19, 2023, in Portland, Oregon.
<img src="./assets/branding-banner.jpg" alt="branding-banner" /><br />
Download the App
<img alt="Download on the App Store" width="150" height="80" src="./assets/download-on-app-store.svg" /> <img alt="Get it on Google Play" width="200" height="80" src="./assets/google-play-badge.png" />
Building app
Pre-reqs
brew install fastlane
npm install -g eas-cli
oryarn global add eas-cli
(v3.1.1 is the latest as of this edit)
Note: The steps below will have to be run when either of the following happen:
- Fresh app checkout
- After pulling
main
, and eitherpackage.json
,app.json
, oreas.json
files have updates
iOS Simulator
yarn build:local:ios
- double click newly created
*.tar.gz
file inbuild\
directory of project - you'll now see a
ChainReactApp2023.app
file in the root of your project > drag and drop this file to your simulator yarn start
i
> app should now open and build
Android Emulator
yarn build:local:android
- APK will be generated in the
build\
directory of the project - Drag and drop this file to your emulator or sideload to Android device of choice
yarn start
a
> app will open on the emulator or connected device (useadb devices
to see if properly connected)
Running on devices
In order to run on an iOS device, you'll need to add your device to EAS.
- Run
eas device:create
and follow the prompts. - Enter your UDID or use the web URL option
- Make sure to give the device a descriptive name (e.g. Jamon's iPhone 12)
Development mode
Great for developing on device for testing features like screenreader support
Android
- Follow emulator directions above
- Instead of dragging build to emulator, use
adb install
to install on connected device
iOS
- Run
yarn build:dev:device
- Select iOS (you don't need to run the build through EAS server for Android, just follow the steps above)
- Make sure your device is included in the provisioning profile when asked.
- Wait for EAS build to complete. Find you build at https://expo.dev/accounts/infinitered/projects/ChainReactApp2023/builds
- Install via QR Code
- Run
yarn start
in your terminal. - Scan the QR code that comes up in the terminal output with your device. This should connect your phone app installation to the metro server running on your computer.
- Good to go!
If you'd prefer to do local builds rather than waiting for EAS servers, you can use the local option:
- Run
yarn build:dev:device:local
- Select platform
- Make sure your device is included in the provisioning provile (you will be prompted for this)
- Wait for the build to complete and locate it under
/build
. - Ensure your device is connected to your machine via USB cable
- Open XCode (no need to have any particular project open, just the landing screen is fine). Go to 'Window' > 'Devices and Simulators' and select your device.
- Drag the
.ipa
file from finder into the XCode window onto the "Installed Apps" section.
Internal Distribution (Release Mode)
This is for distributing the app to internal testers to run on their devices. The app is in release mode, so this isn't ideal for active development
- Run
yarn build:preview
- Choose "All" or a specific platform
- If iOS or All is chosen, make sure your iOS device is included in the provisioning profile when asked.
- Wait for EAS build to complete. Find you build at https://expo.dev/accounts/infinitered/projects/ChainReactApp2023/builds
- Install via QR Code (make sure you don't have any development builds already installed)
- You're good to go!
Moving to your own Expo account
If you'd like to fork this repo and use it on your own Expo account to be able to leverage builds on your own devices, you'll need to do the following:
- Fork this repo
yarn install
- Head to the
expo.dev
projects dashboard: https://expo.dev/accounts/{username}/projects (Be sure to update{username}
with your Expo username) - Click on
Create a Project
- In
/app.config.ts
update the following values from your newly generated project found at https://expo.dev/accounts/{username}/projects/{slug}:owner
plugins.expo-updates.username
(same asowner
)slug
extra.eas.projectId
ios.bundleIdentifier
(your Apple Bundle ID)android.package
(your Android Package Name)
- Follow above steps for building app on either simulator/emulator or device on your platform of choice
- Happy Coding!
E2E Tests
Maestro Installation
The easiest way to install Maestro is via homebrew:
brew install maestro
brew tap facebook/fb
brew install facebook/fb/idb-companion
See Maestro's documentation for other installation instructions.
Run flows
Flows currently run against an iOS 15.5 simulator dev client
- yarn start
- In a separate terminal, execute a flow
maestro test .maestro/
Publishing updates OTA
Pre-reqs
- A
preview
orproduction
build of the application on a device
Notes
- Only make JavaScript changes OTA
- Any native code changes,
app.config.ts
or Expo SDK update will require a store publish
Steps
- Make the necessary JavaScript changes<br/>
a. For a
preview
build, this can just be done locally (with uncommitted changes) or from another git branch<br/> b. For aproduction
, you'll likely be in some release candidate branch ormain
branch after things have been QA'd - Create the EAS update branch
eas update --branch [update branch name] --message "info about the update"
- This packages up the current project code and uploads it as a package to EAS as an update
- Determine the update channel where the update branch should be applied. By default, any build profile name in
eas.json
is created as a channel in addition to the specifiedchannel
property a. For apreview
build, you can use thepreview
channel - Point the update channel to the specific update branch
eas channel:edit [channel name] --branch [branch name]
- This tells a build on that update channel to now look for updates available on that branch name
- Restart the app twice to receive the update (on the first, the app will download any available updates - then apply it on the second)
Example
There is a preview
build of version 1.0 out in the wild, lacking a new feature or bug fix.
git checkout -b feat/my-new-feature
# make some changes to code
git commit -a -m "feature complete"
eas update --branch preview --message "added new feature"
# from a device with the preview build, open the app to grab the update, and reload it to use the new feature
Dev Testing
From an expo-dev-client, you can open the Extensions
tab and load any published update to QA the package that would be published OTA.