Before judging ( which i knw you will 🤣), I’m new to mobile dev. Sooo “handle with care”?

  • HarryOru@lemm.ee
    link
    fedilink
    English
    arrow-up
    13
    ·
    edit-2
    5 months ago

    I can’t speak about Flutter or React Native, but what I can say is DON’T use Xamarin Forms/MAUI. As a native Android developer I had to start using Xamarin after changing jobs and it’s been one of the biggest regrets of my career, honestly. Literally nothing works like you would expect it to. I understand the idea of writing the same code twice is intimidating, but trust me, nothing beats native development. Nothing. I can say with 99.9% certainty, you will regret not going with native if (or when) your app requires any vaguely complex feature to be implemented into it. Swift and Kotlin are similar enough that you can literally write the same app natively for both platforms faster than it would take you to write them in any cross platform framework (or at least Xamarin/MAUI), unless you’re making an extremely simple app with no customizations whatsoever.

    • mihies@kbin.social
      link
      fedilink
      arrow-up
      4
      ·
      1 year ago

      Yep, I have been using Forms for a little while (I was invited to first beta, mind you), gave up. Not worth it in longer term, probably not even in short term. I guess MAUI is more or less similar. Perhaps the working compromise is Xamarin native, where you can share code between the two platforms and write native UI and interact with native libraries. It works as long as libraries have bindings (a lot of them have, if they don’t you can still create them yourself, but that’s not trivial), but you still have friction and additional problems, such as handling different application lifetimes. Also tried flutter, which suffers from similar problems, though bindings are done in different way, perhaps more natural.
      TL;DR; A lot has changed since I’ve tried crossplatform, Jetpack Compose/Kotlin and Swift/Swift UI happened. And they both have superior design time features and are great in many aspects. I’d go with native today.

    • Anoop@lemmy.world
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      I absolutely agree with this. I’ve used the former and the experience is exactly the same. Neither Flutter nor React Native support any remotely complex features from individual platforms. Breaking layouts and abysmal memory usage is a cherry on top.

    • smitty825@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      I mostly have the same experience. I did a Xamarin.Mac app to port some windows code to the Mac. In some senses, it was amazing, because most of the business logic just worked and that saved a bunch of time. The UI was app kit, but with c# to obj-c bindings. That also mostly worked, however, when something broke, it really broke and was incredibly difficult to debug.

      There are some use cases I’d recommend Xamarin for still, but the majority of cases are probably best solved by writing native code directly. (Or at least using a portable language such as C, C++ or Rust for cross platform business logic)

  • nyoooom@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    1 year ago

    Been using Flutter for a while, hybrid frameworks are great for small teams, as you only have to make one app.

    I think they’re good enough for most cases, just like with most tools it’s what you make out of it that will make it good or not, it’s easy to make a shitty native app.

    For Flutter I would only say that it’s finally starting to be mature for stuff like navigation and state management.

    Keep in mind that each solution has benefits and drawbacks, it’s all about tradeoffs.

  • jcg@halubilo.social
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    edit-2
    1 year ago

    I’m a react native and flutter dev. They’re very, very good for 90% of use cases. Even if you’re only developing for one platform, they’re actually quicker to get started on and be productive than native development, especially if you use something like Expo to get your app started as fast as possible. If you’re doing performance critical applications or need access to hardware other than the usual camera/Bluetooth/internet, then you probably are better off writing it natively but that describes a very small handful of real-world apps and you can always selectively write some parts in native code.

    EDIT: Also I didn’t think it had to be said cause I thought Xamarin was basically dead but yeah, Xamarin sucks major ass.

    • wellDuuh@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      1 year ago

      Thanks for the feedback

      need access to hardware other than the usual camera/Bluetooth/internet

      The app under design needs access to real-time GPS/Location services… can the platform handle this, or should i swallow the native pill

  • carbonara@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    1 year ago

    In my company we use Ionic, it uses a native WebView to render websites code.

    The fact I can use html/css/js to do everything I want is great. But having to rely on third-party Capacitor plugins to use native features really sucks. Ionic provides custom html components with native look, and this is great, exept for the fact it still uses MD2 for Android.

    Implementing MD3 all by myself has been a painful experience, only because default components style is so baked in, that you have to use ionic custom css variable to even change the background.

    Back in the days, we were just 2 developer for 2 apps and a Website, and Ionic build all 3 of them with just one codebase

    • LilDestructiveSheep@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      Vue in general is the most interesting for me. Still a learner.

      The way I can easily implement it like jQuery or code the whole thing for example. I like it.