helix

https://github.com/Lokeh/helix
krzyz 2020-05-10T18:15:49.275300Z

I just wanted to say thanks for the interesting library @lilactown. I like your thinking around efficiency/compatibility with React as well as favoring JS interop over library magic. I got bitten a few times in Reagent and I just want something simple and predictable now, so I'm taking a look at using helix.

krzyz 2020-05-10T18:17:15.276200Z

Reagent is great, I was doing well with it when I was still in CLJS/re-frame land, but when I started to use react-navigation and had to rely on props, things got messy for me.

lilactown 2020-05-10T18:18:45.277400Z

thank you for the kind words! 😄 yeah, I have been using reagent/re-frame professionally for a couple years now. I currently help maintain a ~50k LOC re-frame app at work. a lot of that experience went into helix

lilactown 2020-05-10T18:19:41.278400Z

that being said, we're still learning and building so if you run into things that aren't working right / think could be better, please let me know!

krzyz 2020-05-10T18:20:21.278900Z

Awesome, thank you! I'm definitely just learning for now but if I find something I will bring it up.

krzyz 2020-05-10T18:22:31.279500Z

Oh to be clear, it was react native where I was having issues. Routing on mobile is not nearly as nice as on the web. 😞

lilactown 2020-05-10T18:23:52.280Z

yeah routing is something that my team and I really struggled with when I was doing a lot of react native stuff

lilactown 2020-05-10T18:25:24.281Z

we ended up doing a sort of hybrid where routing was native, and each screen was it's own fragment / viewcontroller that would mount a react native view inside of it

lilactown 2020-05-10T18:25:33.281300Z

it was awful. would not recommend

krzyz 2020-05-10T18:28:16.283300Z

Ooh ow. I went with react-navigation, which was fine once I learned how to translate it to CLJS. It forced to me to start using props to grab navigation state/methods though, and then I got tripped up by having to translate between JS and CLJS maps, knowing when I could destructure and when I couldn't, etc. Probably just the fact that I'm new to this, but the mental overhead of translating between CLJS and JS was too much on top of learning everything else.

krzyz 2020-05-10T18:31:11.284Z

Oh and adapt-react-class I think, knowing when I'm dealing with an actual react component vs my own.

lilactown 2020-05-10T18:34:52.284400Z

yeah, it's hard when all of that work is happening behind the scenes and isn't clearly documented

💯 1
lilactown 2020-05-10T18:35:23.285100Z

helix tries to be very clear about when it's converting to/from CLJS and JS, and tries to do the minimal amount of that as possible

krzyz 2020-05-10T18:36:14.285700Z

yeah that's what I like. Even if you have to do interop more than you would like, it's better to be clear what is going on imo.