Fork me on GitHub
#cljsrn
<
2017-11-02
>
luposlip11:11:28

Anyone using the Expo XDE when developing RN with cljs? https://github.com/seantempesta/expo-cljs-template https://docs.expo.io/versions/latest/guides/using-clojurescript.html And if so - what's your experience with it? Normally I use Emacs - would prefer to stay there as much as the time as possible 😉

danielneal11:11:06

I use the exp command line rather than the xde

luposlip12:11:26

OK @danieleneal, and you're happy with your dev. flow using Expo?

danielneal12:11:56

Yes, it's pretty good. It's nice to be able to distribute apps internally for feedback using the expo client, and using the command line expo client means I can publish from CI

danielneal12:11:50

also it's nice not having the whole xcode project (note that I've done any work with react native just in the traditional way, so not really got anything to compare it to)

luposlip14:11:37

Alright, could you describe your dev. setup briefly (lein templates, IDE/editor and plugins etc.)? I've been doing lots of cljs w/react, but I find React Native to be quite nimble, and would like to start with the right template/tools to spare myself lots of time 😉 Thanks!

luposlip14:11:52

Prefer re-frame, reagent BTW.

danielneal14:11:01

I started off with seantempesta/expo-cljs-template as a template

danielneal14:11:18

(well technically, the one before that when @tiensonqin was maintaining it)

danielneal14:11:33

I use re-frame and re-frisk for debugging

danielneal14:11:38

re-frisk has a remote mode

danielneal14:11:26

I use cljs-react-navigation for navigation, which @seantempesta wrote, it has some reframe hooks which is useful - I like to store the navigation state in the app state

danielneal14:11:39

I use emacs as an IDE, with clojure and clojurescript mode

danielneal14:11:07

We have gitlab ci, and I can publish to expo using the exp command line tool

danielneal14:11:17

I'm using sentry for error reporting (as recommended by expo) but I haven't got source maps to work yet unfortunately

danielneal14:11:10

I use re-frame-test for testing

luposlip14:11:17

Thanks! And then you start by testing locally with Expo (via LAN or similar), and publish to your peers and/or QA team when necessary? And then publish directly via exp to CI, and from there to App Store/Google Play?

danielneal15:11:20

I'm just experimenting with the true production builds now. You need to call exp build:ios (on ios at least); then the app gets built on expo's servers and they give you a link to the .ipa/.apk to download

danielneal15:11:45

I do testing locally with the ios simulator

danielneal15:11:55

exp start --ios --lan --dev

danielneal15:11:20

The main issue I ran into was timing out on the react native packager transformation in production builds

luposlip15:11:32

OK, is there no way to build for production locally, when using Expo (without involving their servers)?

danielneal15:11:44

that's correct

danielneal15:11:51

you can 'detach'

danielneal15:11:21

which as far as I know gives you the android/ios projects, with ExpoKit as a library, then you can use the relevant tools to build

danielneal15:11:08

"sed -i.bak 's/TRANSFORM_TIMEOUT_INTERVAL = 301000/TRANSFORM_TIMEOUT_INTERVAL = 901000/g' node_modules/metro-bundler/src/JSTransformer/index.js" <- I needed to do this to increase the timeout when using advanced builds

danielneal15:11:31

ah also I use figwheel for development - turn off hot reloading and live reloading in the expo app otherwise it gets in the way

luposlip15:11:06

Alright! 🙂 Do you have any idea how hard it is to get an app OUT of Expo?

danielneal15:11:08

figwheel is included in the expo template above

danielneal15:11:16

no I'm afraid not 😬

luposlip15:11:33

OK, I'll do a bit of investigation myself. Unfortunately I need background code execution.

luposlip15:11:42

Thanks a bunch for your input! 🙂

danielneal15:11:48

you're welcome