Mobile July 14, 2020

What mobile framework do you prefer?

René DeAnda @rene

I'm curious how people are building their mobile apps. I started with native Android programming but have since started using React Native more mainly because I can build for Android & iOS both quicker. Although, I think my native Android skills allow me to utilize the native Android APIs more easily if I want to - which can lead me to indecision sometimes. I've also come across instances that I want to learn a bit of Swift to take advantage of iOS features more easily.

I'll likely continue down the path of using React Native primarily for any new mobile projects I take on.

What mobile frameworks do you prefer to build with? What have you built with?

What mobile framework do you prefer to make apps?
  1. 6

    Flutter because it is really great in terms of performance and dev experience.

    1. 2

      Nice, yeah I've seen a lot of production apps that are performing well in the app stores that are done in Flutter.

  2. 3

    Started with native Android some years ago. But recently wanted to do cross-platform so looked into Flutter. Got hooked immediately.

    1. 1

      Nice @Cscythe, sounds like my story I just went the React Native route 😅. Maybe when there's time I will build a sample Flutter project. Any favorite open source Flutter projects that you've used as an example?

      1. 2

        I used this to learn how to implement the bloc pattern with Firebase. https://github.com/SAGARSURI/Goals
        There's also a medium post on this if I'm.not mistaken.

        1. 1

          Cool! Thanks for sharing 😄

  3. 3

    If I'm not going native I use Turbolinks and their respective native adapters. Most of my clients already have a mobile website built in Rails so converting that to Turbolinks and building the native shells isn't a lot of work. Related to the cost of rebuilding the entire app native, for example.

    Turbolinks embeds the mobile version of a website into the app wrapped in native navigation. You get all the "new screen" animations but are only serving HTML under the hood.

    The framework also lets me upgrade specific parts of a website/app when I want to. The first thing I usually do is make the landing/home screen native and link out to hybrid web pages.

    1. 2

      Nice @joemasilotti, sounds like a great way to build quick for proofs of concept off your existing web presence and like you said build for clients quicker if it meets their needs - especially I imagine B2B/Saas focused mobile apps.

    2. 2

      For my web projects I do Ruby on Rails. I always wanted to try this Basecamp approach and see how it works. What do you like about this way and what not ?

      1. 3

        Loves:

        1. Easy to set up if you already have a RoR and Turbolinks mobile web site
        2. Allows web developers to keep building their site while the mobile app gains features without any extra work
        3. Individual screens/flows and be progressively enhanced when you are ready to invest time

        Hates:

        1. The Android adapter is currently deprecated and the next version is "coming soon"
        2. Authentication can be a bit of a pain and Basecamp doesn't have a good recommendation

        Feel free to message/email me if you want to dive deeper or are interested in starting a project!

        1. 3

          Maybe you can sell authentication software or with open-source sponsorship for this niche then!

          Thank you for offering help. Currently there's no concrete plans. It's on the back of my mind for future things.

          1. 2

            That's a great idea, thank you!

  4. 3

    Generally speaking, cross platforms frameworks will always be a pain compared to the native frameworks. If you're building a serious app that aims to last a long time, I would strongly advised against it (or you will end up rewriting it natively at some point). If your app doesn't do much well... use what makes more sense in your context.

    Also, the line between iOS and Android native development is starting to get blurry with the advent of SwiftUI and Jetpack Compose.

    1. 1

      Yeah I can agree on that when the dev community for a specific framework isn't as active in building bridge libraries, since Apple doesn't care about other languages besides Swift/Obj-c it's also difficult to get good documentation to follow without some dev in the community to take upon themselves to help others.

      SwiftUI & Jetpack Compose are very interesting to me, I agree that I can see lots of concepts being shared now between native building & using other frameworks.

  5. 3

    Native. I know swift, never checked kotlin. My thought process was, if I build an app that profitable I could pay for the android one or since the backend is written it shouldn't be so hard to implement it into kotlin.

    You should keep sharpening your kotlin skills,
    https://kotlinlang.org/docs/tutorials/native/apple-framework.html

    1. 2

      Yeah I love native coding myself on Android, I love keeping up to date even though the Android changes move so quick lately.

      Kotlin is a fantastic language, I rewrote all my Android apps into Kotlin to learn it better. It would be cool to explore Kotlin multi-platform when I have more time to tinker 😄

  6. 2

    Quasar.js - it's lets me use my favorite vue.js and includes good lookin components.

    1. 1

      Interesting, that's a new one for me.

  7. 2

    Been working as an Android Developer for 6 years but recently started using Flutter for all my personal projects.

    For most cases Flutter is a great choice. I find a lot of stuff is easier / nicer to do on flutter than native Android. https://play.google.com/store/apps/details?id=com.twodimensions.timeline&hl=en_AU is a great example of how powerful flutter UIs can be.

    For other cases the plugin support isn't great yet, so you may run into issues with certain things.

    1. 1

      Very cool, yeah Flutter has really grown in population & I've seen it mentioned so much more lately when job hunting too. Thanks for sharing this, good to see more examples in the wild :)

  8. 2

    I have done both React Native and pure native iOS and Android development when it comes to maintenance pure native development wins as sometimes the react libraries can prove to be a living nightmare when doing code maintenance.

    1. 1

      I can agree with that, have been down the road of upgrading RN versions & spending hours figuring out random errors with node modules & other weird errors with linking libraries. Luckily with the latest versions of RN it's a little more seamless but yeah still some weird stuff pops up to get things to compile.

  9. 2

    If the poll would be multiple choice I'd vote for native and Flutter. I only have a few months of experience with Flutter, but some things are definitely better than native iOS in my opinion.

    1. 1

      Very cool, yeah as much crap Flutter gets sometimes in the Android dev community it clearly shows it can help devs deliver well-designed quality apps that are used by millions of people. I think it's perfect for businesses to explore Flutter. Of course, native iOS will always be better especially now with home screen widgets that would require you to use Swift to build them - maybe as @mbornemann mentions above we will see the lines blur even further because I don't think Flutter & RN are going anywhere. Maybe we will see the day that Apple finally embraces other frameworks & doesn't treat them like 2nd class citizens to native, with better documentation to use the Apple SDKs.

      1. 2

        As always it depends on the project. But for an UI heavy app, which will need many iterations and also support iOS 11/12 (no SwiftUI) without complex native features Flutter can be better in my opinion.

        I can't really comment on Flutter for Android vs native Android as I only have iOS experience.

        1. 1

          For sure 👍👍

  10. 2

    It really depends on the type of app and the quality level you want to hit. If you want a highly polished app and you want to take full advantage of new features, native is the way to go.

    On the iOS side, native development is getting easier and quicker with every new release due to frameworks like SwiftUI. So if you are building a new app and can afford to limit yourself to users with the latest OS, you have an added advantage.

    1. 1

      I agree with that, I've wanted to learn more Swift & things like SwiftUI but just haven't had the time & capacity to justify it yet. I am happy about Apple's device upgrade schedule so you can change your target to the latest OS version & still be confident you are still targeting most iOS users.

  11. 2

    Xamarin Forms - compiles down to native, with ultimate flexibility - 90% code reuse. Can dive into native implementation any time. And runs on Windows UWP / MacOS. Hot reload makes UI design quick and easy.
    Next iteration (MAUI) will have even better desktop support.

    Flutter is also very good. Although the ecosystem isn't as mature, it's growing quickly. Web platform support :) Definitely try if you come from a web background.

    1. 1

      Yeah I like frameworks like Flutter or React Native. Will hopefully try building in Flutter eventually, at least a sample project.

      I actually did it backwards, I started learning & building in React after I learned React Native haha. I love that I can learn new concepts with React that can be applied to web or mobile projects.