$ npm install && cd react-native && yarn install $ shadow-cljs watch app ;; wait for first compile to finish or metro gets confused $ cd react-native $ npm start ;; and $ npm run android ;; production build $ shadow-cljs release app ;; Create Android release $ cd react-native/android $ ./gradlew assembleRelease ;; APK should appear at android/app/build/outputs/apk/release ;; installs in Android as "AwesomeProject" $ adb install -r react-native/android/app/build/outputs/apk/release/app-release.apk The react-native folder was generated by calling react-native init AwesomeProject and renaming the folder.
The :app build will create an react-native/app/index.js. In release mode that is the only file needed. In dev mode the app directory will contain many more .js files.
:init-fn is called after all files are loaded and in the case of expo must render something synchronously as it will otherwise complain about a missing root component.