All Projects → thheller → reagent-expo

thheller / reagent-expo

Licence: other
test using reagent with expo/react-native

Programming Languages

clojure
4091 projects
javascript
184084 projects - #8 most used programming language

Development

$ yarn
$ shadow-cljs watch app
;; wait for first compile to finish or expo gets confused
$ expo start

Building with EAS Build

There is a post-install hook in package.json that will automatically call shadow-cljs release app when building with EAS Build. Check the EAS Build documentation for the possibilities.

e.g.:

$ eas build --platform=all --profile=production --auto-submit

Web

You can also use expo start --web in order to run react native web.

Tests

You can find an example of using jest to test react-native apps here.

Notes

The :app build will create an 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. The shadow.expo/render-root takes care of registration and setup.

You should disable Fast Refresh in the Expo Go app and let shadow-cljs handle that instead as they will otherwise interfere with each other.

Source maps don't seem to work properly. metro propably doesn't read input source maps when converting sources as things are correctly mapped to the source .js files but not their sources.

Initial load in dev is quite slow since metro processes the generated .js files.

reagent.core loads reagent.dom which will load react-dom which we don't have or need. Including the src/main/reagent/dom.cljs to create an empty shell. Copied from re-natal.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].