├── .expo-shared └── assets.json ├── .gitignore ├── App.tsx ├── README.md ├── app.json ├── assets ├── adaptive-icon.png ├── favicon.png ├── icon.png └── splash.png ├── babel.config.js ├── eas.json ├── package.json ├── tsconfig.json └── yarn.lock /.expo-shared/assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true, 3 | "40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true 4 | } 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .expo/ 3 | dist/ 4 | npm-debug.* 5 | *.jks 6 | *.p8 7 | *.p12 8 | *.key 9 | *.mobileprovision 10 | *.orig.* 11 | web-build/ 12 | 13 | # macOS 14 | .DS_Store 15 | -------------------------------------------------------------------------------- /App.tsx: -------------------------------------------------------------------------------- 1 | import { StatusBar } from 'expo-status-bar'; 2 | import { StyleSheet, Text, View } from 'react-native'; 3 | 4 | export default function App() { 5 | return ( 6 | 7 | Hello world 2 8 | 9 | 10 | ); 11 | } 12 | 13 | const styles = StyleSheet.create({ 14 | container: { 15 | flex: 1, 16 | backgroundColor: '#fff', 17 | alignItems: 'center', 18 | justifyContent: 'center', 19 | }, 20 | }); 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Testing expo-dev-client with EAS Update 2 | 3 | 1. Created a project with `expo init` (Expo CLI version 5.0.3). 4 | 2. Ran `expo install expo-dev-client`, which installed version 0.8.0. 5 | 3. Ran `expo install expo-updates`, which installed version 0.11.3. 6 | 4. Ran `eas build:configure` (EAS CLI version 0.43.0). 7 | 5. Ran `eas update:configure` (I am currently logged in with my personal account (`eas whoami`)). 8 | 6. Ran `eas device:create` to register my phone with this app so that i can make an internal distribution build of it. 9 | 7. Ran `eas build --profile development --platform ios`, since I have an iPhone. 10 | 8. Ran the build on my device to make sure it worked. 11 | 9. Then, changed the text in **App.tsx** to "Hello world 1". 12 | 10. Ran `eas update --branch test-branch --message "hello world 1"`. 13 | 11. Then manually constructed this URL: 14 | 15 | ``` 16 | exp+test-expo-dev-client-eas-update://expo-development-client/?url=https://u.expo.dev/4dae2e69-fde1-44e8-8dc7-8e1c2ea2af2d?channel-name=test-branch 17 | ``` 18 | 19 | 12. Created a QR code with https://www.qr-code-generator.com/, then scanned it with my phone. 20 | 13. Saw the "Hello world 1" appear inside the development build of the app. 21 | 14. To make sure this works with other channels/branches, I changed the text to "Hello world 2". 22 | 15. Then ran `eas update --branch test-branch-2 --message "update 2"` 23 | 16. Then updated the URL to: 24 | 25 | ``` 26 | exp+test-expo-dev-client-eas-update://expo-development-client/?url=https://u.expo.dev/4dae2e69-fde1-44e8-8dc7-8e1c2ea2af2d?channel-name=test-branch-2 27 | ``` 28 | 29 | 17. Made a QR code again and scanned it, then saw "Hello world 2". 30 | 31 | Here's a video of steps 9 - 17: 32 | 33 | https://user-images.githubusercontent.com/6455018/148657554-c150378c-4d84-4dd3-b64e-857584affe98.mp4 34 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "name": "test-expo-dev-client-eas-update", 4 | "slug": "test-expo-dev-client-eas-update", 5 | "version": "1.0.0", 6 | "orientation": "portrait", 7 | "icon": "./assets/icon.png", 8 | "splash": { 9 | "image": "./assets/splash.png", 10 | "resizeMode": "contain", 11 | "backgroundColor": "#ffffff" 12 | }, 13 | "updates": { 14 | "fallbackToCacheTimeout": 0, 15 | "url": "https://u.expo.dev/4dae2e69-fde1-44e8-8dc7-8e1c2ea2af2d" 16 | }, 17 | "assetBundlePatterns": [ 18 | "**/*" 19 | ], 20 | "ios": { 21 | "supportsTablet": true, 22 | "bundleIdentifier": "com.jonsamp.testexpodevclienteasupdate" 23 | }, 24 | "android": { 25 | "adaptiveIcon": { 26 | "foregroundImage": "./assets/adaptive-icon.png", 27 | "backgroundColor": "#FFFFFF" 28 | }, 29 | "package": "com.jonsamp.testexpodevclienteasupdate" 30 | }, 31 | "web": { 32 | "favicon": "./assets/favicon.png" 33 | }, 34 | "runtimeVersion": { 35 | "policy": "sdkVersion" 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /assets/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonsamp/test-expo-dev-client-eas-update/80e766123518e92ffbdb035716cf57cba9246747/assets/adaptive-icon.png -------------------------------------------------------------------------------- /assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonsamp/test-expo-dev-client-eas-update/80e766123518e92ffbdb035716cf57cba9246747/assets/favicon.png -------------------------------------------------------------------------------- /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonsamp/test-expo-dev-client-eas-update/80e766123518e92ffbdb035716cf57cba9246747/assets/icon.png -------------------------------------------------------------------------------- /assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonsamp/test-expo-dev-client-eas-update/80e766123518e92ffbdb035716cf57cba9246747/assets/splash.png -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /eas.json: -------------------------------------------------------------------------------- 1 | { 2 | "cli": { 3 | "version": ">= 0.43.0" 4 | }, 5 | "build": { 6 | "development": { 7 | "developmentClient": true, 8 | "distribution": "internal" 9 | }, 10 | "preview": { 11 | "distribution": "internal" 12 | }, 13 | "production": {} 14 | }, 15 | "submit": { 16 | "production": {} 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test-expo-dev-client-eas-update", 3 | "version": "1.0.0", 4 | "main": "node_modules/expo/AppEntry.js", 5 | "scripts": { 6 | "start": "expo start", 7 | "android": "expo start --android", 8 | "ios": "expo start --ios", 9 | "web": "expo start --web", 10 | "eject": "expo eject" 11 | }, 12 | "dependencies": { 13 | "expo": "~44.0.0", 14 | "expo-dev-client": "~0.8.0", 15 | "expo-status-bar": "~1.2.0", 16 | "expo-updates": "~0.11.3", 17 | "react": "17.0.1", 18 | "react-dom": "17.0.1", 19 | "react-native": "0.64.3", 20 | "react-native-web": "0.17.1" 21 | }, 22 | "devDependencies": { 23 | "@babel/core": "^7.12.9", 24 | "@types/react": "~17.0.21", 25 | "@types/react-native": "~0.64.12", 26 | "typescript": "~4.3.5" 27 | }, 28 | "private": true 29 | } 30 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "expo/tsconfig.base", 3 | "compilerOptions": { 4 | "strict": true 5 | } 6 | } 7 | --------------------------------------------------------------------------------