Comment by bloomingkales

2 days ago

I just kinda looked around the Shopify app to get a feel for it. There are a few frameworks that tap into native view switching (transitioning between pages and tabs), which creates most of the native feeling (along with native view components like lists/menus/switches).

I don’t know why the quality of the app feels cheap, but it just feels so (the web views load in with zero ease, they just jank onto the screen. So while you have native screen transitioning, you still have this low quality feeling of a bad nypost article shitting out an ad popup on you. Hard to explain, but that’s my my general feeling).

Regardless, while not impressive, it’s in this non-impressiveness that informs my unwillingness to invest into native or something like Flutter. These apps are too simple to go through the hoops.

Shopify RN app is a good example of a mundane non-sexy tech decision.

Overall nothing beats CSS and JavaScript for UI, but even in 2025 we cannot reliably push 60fps.

I disagree with you on a few specifics, but I think the more general question does become what should the Shopify app be like? Non sexy is, as you say, probably the right call.

For mobile apps generally I cannot recall the last time I was actually impressed by one. The reverse is often true, such as with Sonos. Individual features (again Sonos, the calibration it can do) can be neat but experiences as a whole have gone off a cliff, React Native or not.

Flutter does 120fps no problems and has for some time now. Its also a lot nicer to work with Dart than Typescript.

  • Entirely subjective and I would disagree with dart. JSX is one of the most important things react ever popularised in the frontend space.

    • I suspect you maybe haven’t used Dart then because it’s genuinely not even close. I know in a philosophical sense everything is subjective when you squint hard enough but I’m also talking about very clear and concrete things.

      Just to give one simple example. Take the concept of a mixin where you want to essentially create a partial class interface and use it for basic composition. An incredibly straightforward 101 level OOP concept.

      Then take a look at how it works in Typescript here:

      https://www.typescriptlang.org/docs/handbook/mixins.html

      and contrast that with how you do the same thing in Dart here:

      https://dart.dev/language/mixins

      I’ve got extensive experience with both. I promise you Dart is much much much nicer to work with on every relevant metric I can think of.

    • Perfect world:

      JS and CSS compile to native, somehow.

      My ability to do this

      function App() () { const items = get(url); render(items) }

      Does not exist on native. It's 2025. Why is this?

      ----

      It's because we don't have literate programmers. They don't know how to speak CLEARLY.

      2 replies →