2
20 Comments

How do you build multi-platform applications?

I want to know what is the usual workflow for startups building apps for android, iOS, web, and windows. Do enterprises and startups prefer cross-platform development tools like Xamarin, Flutter or do they build separate apps for each.

Looking for places where we can upload our library specially meant for communication in these multiplatform apps.

  1. 2

    First of all please excuse me for my bad English. ☺️

    I have been working with Startup for 9+ years now, in the space of web, mobile applications ☺️. In 2012 - 2015 Most of the time its either Native or cordovo with jQuery mobile. These days clients request mostly React native or flutter, And rarely get requests to build native apps (Android , C#, swift etc). For web its mostly React, Vue or a React flavour.. Those who request Native apps frequently has performance concerns.

    What I normally would use is (For a startup with a mvp)

    React Native for mobile Apps.
    ReactJS / NextJS / Vue for Web apps
    AWS serverless (AWS CDK, serverless framework ) or Firebase with google and aws services. Or expressJS for backend.
    AWS Amplify and Firebase JS as support libs.

    These tools can be selected based on various factors such as budget, scope etc.

    I choose above technologies because they save money, time, easy to learn, less background magic, and the scalability. If you plan your workflow properly, you could reuse your code and components.

    I stay away from no code tools as much as possible, because even though its easier to get started and quickly lunch a products, They have caused more headaches than the advantages they provide.

    PS: I dont have that much experience with Desktop apps, or have not worked that much with the teams who built desktop apps. But I have seen people tend to build electron apps.

  2. 2

    I just listened to this podcast episode about Missive (http://missiveapp.com) which uses Electron for desktop apps and Cordova for mobile apps. The episode is from a couple years ago so I know Cordova isn't the hottest tech choice these days. But it seems to work well for them.

    See also:
    https://missiveapp.com/blog/how-we-built-1m-arr-email-client
    https://news.ycombinator.com/item?id=26713949

    1. 1

      Yeah, Cordova is pretty old now. Don't know if people still use it. We would need a place with active developers so that it justifies creating a plugin explicitly for that.

      1. 1

        Lot's of people still use Cordova. I do.

      2. 1

        I think the main benefit of Cordova is that it's just a wrapper around their PWA.

        So they have a web app that is fully responsive on mobile as a PWA, and then to get it into the app stores they use Cordova to wrap it up.

        The upside is that there is truly one code base for everything, no need for React Native code or Flutter or other technologies.

        The downside is that they spent a lot of time making the web app UI feel native (e.g. swiping animations etc.) so that mobile users feel like it's a native app. I think they have succeeded – the iOS app to me feels really good – I can tell it's not native because some of the UI is clearly not the standard iOS UI, but it still looks and feels really good.

        1. 1

          I have yet to find a non-native app that looks and feels great. And the amount of time/money you spend making it feel native could actually also go into writing a (or rather two) native app(s).
          The holy grail is to build a shared core and have native frontends on top of that. Unfortunately this isn't a totally easy thing either - yet.

          1. 1

            There are many non-native app out there, that you don't know are non-native app because they do look like that good. If you're building an app that is graphics intensive or cpu intensive then sure go native. But most apps will do quite alright with hybrid.

            1. 1

              So far I am pretty spot on with noticing. Especially getting the animations right is a lot of work. But I guess it depends what your standards are for "looking good".

              1. 1

                You're probably right, I'm terrible with UI and won't pick up on such things. I don't think it matters much if the app provides tremendous value, but I might be mistaken on that too.

  3. 2

    Massive fan of Kotlin. I know it's not perfectly stable or as adapted as Flutter, but easy workflow for someone with 5+ years of Java development experience.

    1. 1

      I also really love Kotlin! Being an android developer myself, it feels so refreshing with Kotlin.

      I was however looking for marketplaces to put the library on and advertise. We will put it on maven central but how do get it to developers to try

  4. 1

    I'm using React-Native for iOS, Android, and Web. It's really nice to have one code for those three platforms. There are a few small adjustments you need to do sometimes, but overall it works really well

  5. 1

    I'm using ASP.NET C# Blazor serverside + single page application for the website and Blazor mobile bindings to develop iOS/Android in a single project.

    I highly recommend this approach as you can create objects with data annotations, and pretty much all page logic can be directly copied between projects.

  6. 1

    Web: React
    Desktop: Electron shell for above website
    iOS+Android: React Native

    The code re-use is fantastic. Keep your logic out of your components (in util functions, a shared library, hooks or something similar) and you can re-use that logic across all platforms.

    1. 1

      You should try Quasar Framework (based on VueJS).
      This is the same, and even a lot better as you have the exact same code for all platforms, without the need to keep logic out of components.
      And more: you can build browser extensions too.

  7. 1

    I have started using Kotlin Multiplatform for my project Konfekt and I am very happy with it so far. Kotlin MP still has a way to go and is not what I would consider mainstream. But I think it’s a good time to jump ship if you are just starting out.

    You typically use Kotlin MP for writing shared functionality and business logic but generally don’t use it for building the UI. I personally like that approach, because you’ll maintain the look and feel of the native platform while doing the “heavy lifting” only once per platform. It is also very performant because it compiles to native binaries.

  8. 1

    Flutter for mobile (iOS + Android).
    Svelte for web.

    Haven't done much desktop yet, but exploring both Flutter Desktop and https://github.com/nodegui/svelte-nodegui (not Electron).

  9. 1

    I use Quasar Framework. It's a framework that helps to create android, iOS, web, and windows with single code base.

    On backend I use API Platform (Symfony) with GraphQL API.

    1. 1

      Didn't know about Quasar. Will check it out thanks!

Trending on Indie Hackers
How I grew a side project to 100k Unique Visitors in 7 days with 0 audience 47 comments Competing with Product Hunt: a month later 33 comments Why do you hate marketing? 27 comments $15k revenues in <4 months as a solopreneur 14 comments Use Your Product 13 comments How I Launched FrontendEase 13 comments