cljsrn

https://github.com/drapanjanas/re-natal | https://github.com/drapanjanas/re-natal/wiki/FAQ | https://github.com/condense/mercury-app/wiki | https://github.com/seantempesta/expo-cljs-template/ https://www.npmjs.com/package/create-expo-cljs-app
Niclas 2020-09-29T06:56:19.022200Z

@zackteo This project is a good starting point imo https://github.com/PEZ/rn-rf-shadow

1
zackteo 2020-09-29T11:38:07.045300Z

I had issues with this the other day cause there's issues with the expo app(?) on android

2020-09-29T08:26:38.023200Z

@zackteo krell works out of the box https://github.com/vouch-opensource/krell

2020-09-29T08:26:49.023500Z

without shadowcljs

dotemacs 2020-09-29T08:56:16.024700Z

But it’s alpha software if the author of it is to be believed @danieltanfh95

dotemacs 2020-09-29T08:57:51.026300Z

The odd thing is that on http://cljsrn.org site we still have outdated info about how to start, with projects that are a bit long in the tooth. The next thing is, whichever approach you choose, you still have the fork in the road: - doing it via react-native “native” - or doing it react-native via expo

Oliver George 2020-09-29T09:24:03.027200Z

I wonder if we could run a survey to give insight into which approaches are common / proven effective.

👍 1
dotemacs 2020-09-29T09:25:03.028Z

Sounds like a good idea. Maybe we can just throw some questions here and then create a public form that we’d let people to fill in

Oliver George 2020-09-29T10:07:25.028600Z

Sure

dotemacs 2020-09-29T10:07:59.029400Z

The list of questions (Please add them in thread)

👀 2
💪 1
djanus 2020-10-05T12:31:25.058700Z

* Are you using any native/JS libraries that you've found difficult to interop with from CLJS?

djanus 2020-10-05T12:31:46.059100Z

• Are you targetting iOS, Android, or both?

dotemacs 2020-09-29T10:08:24.029600Z

* What stack do you use for your cljsrn app?

dotemacs 2020-09-29T10:09:06.030200Z

* Did you compose this stack yourself or did you use some template? If you used a template, which one did you use?

dotemacs 2020-09-29T10:09:41.030400Z

* What is your app, if published in App/Play store?

Oliver George 2020-09-29T10:09:57.030600Z

* how complex is the app UX?

dotemacs 2020-09-29T10:10:59.030900Z

* What testing approach do you use? Unit tests, end to end tests? And what libraries/tools do you use for it?

Oliver George 2020-09-29T10:11:45.031200Z

* do you have a one step deployment process? If so, which one? (e.g. fastlane)

Oliver George 2020-09-29T10:13:46.031400Z

* do you design UX in CLJS or JS (e.g. as a own component library)?

dotemacs 2020-09-29T10:14:10.031600Z

* What build tool do you use and why? (e.g. Leiningen, Krell, shadow-cljs, Boot…)

dotemacs 2020-09-29T10:14:58.031800Z

* What do you use react-native Expo or just “plain” react-native? And why did you go down this route?

Oliver George 2020-09-29T10:15:08.032Z

* what tooling do you use to improve the development experience? (e.g. StorybookJS, re-frame-10x, re-frisk, Chrome debugger console...)

Oliver George 2020-09-29T10:16:12.032200Z

* Would you recommend your approach? What use cases is it good for?

dotemacs 2020-09-29T10:16:45.032500Z

* What UI toolkit did you asses and what UI toolkit did you settle on? What were the pros/cons of each?

Oliver George 2020-09-29T10:19:01.032800Z

* What does CLJS give you that you'd miss doing the app in JS?

Oliver George 2020-09-29T10:24:07.033200Z

Pretty sure step two is we start a podcast and use those as interview questions.

❤️ 1
😉 1
dotemacs 2020-09-29T10:24:31.033500Z

Haha

dotemacs 2020-09-29T10:27:06.033700Z

* Are there any parts of your app that use JavaScript for? Why did you take this approach? And what is your setup to share the code with ClojureScript?

pez 2020-09-29T10:51:51.034100Z

Sounds like a logical next step! 😃

Niclas 2020-09-29T11:06:11.038100Z

* Have you had to write your own native modules?

Niclas 2020-09-29T11:06:33.038300Z

* Have you made any hacks to make the cljs compile output compatible with the RN bundler?

ullrich 2020-09-29T11:37:50.044900Z

At Pitch we started with re-natal and then moved over to shadow (https://github.com/PEZ/rn-rf-shadow was a big inspiration). We took a quick look into Krell but it didn’t solve the main problems we still have (Sourcemaps and hot reloading vs fast refresh). So we’re still on shadow and really happy with it.

👍 1
ullrich 2020-09-29T11:40:00.047300Z

We haven’t gotten around sharing much details about our stack yet, but I hope we find time to do so later this year. Here’s are some corner points though: The mobile app is build on a classic stack using react-navigation et al. There’s a lot of code reuse with our web app: API/Sync client, Authentication logic, Domain logic, re-frame utils. Also we do use re-frame in both apps, but use a different DB structure and different handlers/subs because the apps differ quite a bit. In our handlers and subs we try to rely on as much common domain logic as we can.

ullrich 2020-09-29T11:41:00.048200Z

I’m happy to share more. Please ping me as I’m not hanging out on Clojurians nearly enough. Also something I want to change 😄

2020-09-29T17:16:17.048400Z

* What performance bottlenecks have you hit - either in CLJS or RN?

joshmiller 2020-09-29T18:01:08.048800Z

* What editor/IDE setup do you use for development?

joshmiller 2020-09-29T18:02:26.049Z

* Did you choose RN in order to be cross-platform, or just to be able to use Clojure?

joshmiller 2020-09-29T18:05:52.049900Z

http://cljsrn.org accepts pull requests, so maybe some updated info could be added there

joshmiller 2020-09-29T18:06:44.050300Z

Someone should definitely add a paragraph up top on Shadow, that seems pretty popular.

👍 5
☝️ 1
joshmiller 2020-09-29T18:07:09.050800Z

I’m not sure that re-natal is the most popular solution anymore, and it’s definitely not the most actively developed.

joshmiller 2020-09-29T19:09:18.051300Z

I added a re-natal PR: https://github.com/cljsrn/cljsrn-org/pull/42

👍 2
joshmiller 2020-09-29T19:09:39.051900Z

Someone with more shadow-cljs experience than I have should add a quick PR for that

dotemacs 2020-09-29T19:11:29.052600Z

If nobody does it tonight, I’ll do it tomorrow