NWACus / avy

Mobile-Native Viewing of NAC Avalanche Forecasts
MIT License
11 stars 6 forks source link

Determine Fate Of Custom Components #310

Open stevekuznetsov opened 1 year ago

stevekuznetsov commented 1 year ago

In the past we ditched NativeBase due to performance concerns (see https://github.com/stevekuznetsov/avalanche-forecast/issues/68 for more details). At the time we had looked at Tamagui as an option, but did not choose it due to immaturity.

Today, though, Tamagui seems to be very stable and well-loved by the community. Releases come daily so it's easy to pick up fixes. We added the root config for it already (https://github.com/stevekuznetsov/avalanche-forecast/pull/301) but need to migrate the in-house components over soon.

When we turned on strict: true in our TypeScript compiler, we found a litany of compile issues in the generic-ish components, and those seem really hard to fix, and it's likely in our best interest to simply use a well-known design system instead of rolling our own.

floatplane commented 9 months ago

Tamagui seems to be very stable and well-loved by the community

I don't know if the love is universal, there are comments out there that are concerning:

https://www.reddit.com/r/reactnative/comments/140j9g6/comment/jmybj2v/ https://www.reddit.com/r/reactnative/comments/16zwd9m/comment/k3jmqkc/

I did spend a day looking at dropping Tamagui in but it didn't feel like it was going to be that easy. I'm not sure the juice would be worth the squeeze, unless there's more clarity around what adopting Tamagui would enable. Someone would have to figure out how to translate all of our styles into their theming system.

Shopify Restyle looks like an interesting alternative if the goal is to enable better theming and make it easier to build consistent UI.

stevekuznetsov commented 9 months ago

That's unfortunate to hear. I think the goals would be something like:

  1. reduce the development and maintenance burden of a custom design system, at least as far as generic components like collapsible cards go
  2. make it easier and more robust to do theming and look-and-feel bits
  3. choose something that supports the Web

ReStyle looks like a great solution to the second part, and Shopify continue to push the envelope with React Native - recently saw them debut FlashList as a drop-in but better-in-every-way replacement to FlatList ... between their track record and corporate backing, ReStyle sounds like a good option.

I wish there were better options for 1, though.