device-caching / fast REPL reconnect is in master
it was a doozy - so there's likely to be issues - that said on a larger project where N things might bork something - it makes the dev process a lot smoother
you can just RN refresh to get back to a good state and the REPL just reconnects and you keep going
no need to restart the REPL
if you change things via compile (no REPL) then the app will let you know when you connect a REPL
(this also means you can interact w/ an App after the first install via Krell w/o connecting a REPL at all)
I got Krell/CLJS running on macOS with Microsoft’s RN fork.
hey nice!
The only big change is react-native-tcp-socket
’s Podfile says it supports iOS, but it compiles fine on macOS if you change the Podfile.
REPL, reloading both work.
the above was all tested mainly with Android - so I didn't cut any corners wrt. to platforms
@joshmiller right that makes sense to me - super cool
Yeah, benefits of small lib that lets RN do most of the work.
I submitted a PR to add macOS support. Assuming they don’t balk at supporting it, then Krell will be able to run without changes.
https://github.com/Rapsssito/react-native-tcp-socket/pull/47
nice already merged 🙂
And released. @dnolen if you bump the dep for that to 3.6.0 we should be good to go.
@joshmiller bumped the dep
Awesome, I’ll write up instructions later today then.
huh realizing that with RN Refresh / REPL Reconnect support in Krell, we no longer need to quit the REPL session for changes to assets or arbitrary requires
Wow, that’s pretty cool
So we can now just npm install smthn...
, require it in the ns
declaration and we’d be able to just keep going uninterrupted?
https://increasinglyfunctional.com/2020/05/13/native-macos-apps-clojurescript.html
Thanks @joshmiller 🙂
@dotemacs you would need to refresh RN but you wouldn't need to restart the REPL
Thanks for the clarification, that’s great to hear!
I can easily add a screen like for the cache invalidation, "Asset change detected. Refresh the application"
Or maybe just refresh automatically
I didn't think there was really a supported way to refresh the entire React Native app automatically
though actually you would get a automatic refresh anyway so never mind 🙂
the asset support stuff is required by index.js
removed some broken stuff from the network handling, seems better especially on Android
yep
much better now regardless of REPL / app launch order
also tweak it so that we don't generate the support files if nothing changed
should make the experience of running the app first - then launching REPL via -c -r
more sensible
you'll only see one refresh
Awesome, thanks, that was a pain point especially when trying to diagnose broken dependencies.
yeah
painful, all the weird edge cases should be gone w/ the removal of ack stuff
I dropped all zeroconf stuff, https://github.com/vouch-opensource/krell
so now there are no Android permissions to set - just the cache size
Hi 👋 I'm new here. Looking at options for react native development with cljs. Seems like there are a lot of different tools to choose from. I'm curious if folks have any particular one you might point to for a newcomer to pick up?
The gist is this: - re-natal, the oldest option, but now a bit dated - shadow-cljs, stable & works, the maintainer is very prompt to provide support on #shadow-cljs if needed, but only as far as it’s shadow-cljs specific. He doesn’t use it himself for react-native as he doesn’t do much react-native development. - krell the newest arrival, looks super promising but it’s still alpha. Don’t let that put you off as its actively developed.
re-natal and shadow-cljs are the most mature for sure
re-natal does force you stay on RN 0.59.7 which is not ideal - since 0.6.X has autolinking which is a big simplification
pretty sure shadow-cljs doesn't have that problem
I work on krell - it's getting there especially now - but there some ways to go still
No, with shadow-cljs you’re not forced on react-native version
... the work on this project might not start for another 6 mos
FWIW I just tested react-native-windows and it just works too 😉
krell does sound promising for the reasons mentioned on the repo readme
i gave re-natal a try a little while back for a sideproject, but got turned off by the need for to run xcode. not sure if that's still an issue, but my team mostly runs linux
None of the solutions above will abstract the need for Xcode.
If you touch iOS, you’ll need to use Xcode for signing at least.
If you’re going to add some extensions, that are native, you might want to do something in Xcode.
Having said that, you can probably get very far and maybe even not touch any Swift or ObjC. But to release the app for iOS you’ll need Xcode.
that's ok, we can run xcode, but would prefer to develop in linux. sounds like that is possible?
Yes, see this: https://www.blog.nodrama.io/react-native-xcode-linux/
oh excellent! thx
glad to know its possible now
Can anyone comment on using the Metro bundler to serve up static js assets without transformation.
I'm speculating in this suggestion, it makes sense only of Metro is happy to not apply transformations to JS files. I think that's how it works but have never done it in anger.