March 7, 2019

Single Platform or Cross-platform App Development?

tldr: I have an existing Android app written in Java. I have solid experience with Java Android but should I re-write my existing app in Java (as I know how), in Kotlin or look at React Native (some experience in React) or Flutter to take advantage of being cross-platform?

I have an App in the Google Play Store (https://play.google.com/store/apps/details?id=com.este.jobcatcher&hl=en). It's had over a thousand downloads with no advertising (bar a post on my personal facebook page) and even a few purchasers. I've not really touched it for the past year or so but I'm now looking at going back to it.

Since I last developed it (roughly a year, maybe less) the mobile development landscape seems to have changed completely. I now have a store of ideas/features/bug fixes that I'd like to implement but I'm almost paralysed when it comes to how to do it.

Basically, I've narrowed it down to 3 options:

  1. Write in in Java for Android because that's what I know and progress will be quick. Then, if it becomes successful/there's enough demand write separate versions for iOS/web. However, it seems like every new Android app is written in Kotlin so if I do re-write/update JobCatcher in Java I'm basically just using an 'old' tech stack(?)

  2. Use React Native. It's similar to React which I've used before, but I didn't particularly like developing with it, and apps made with it don't feel as 'solid' as apps made like 1).

  3. Use Flutter. It's a new framework backed by Google to develop Apps for Android and iOS at the same time. It's still relatively new though and it uses a language I've never touched before and doesn't seem to be used many other places.

I'm open to learning new frameworks but I also have a limited amount of time to get things done outside of my 9-5. Any help would be greatly appreciated! I've been a member of Indiehackers for a while now and always been impressed with the insights people have been able to offer!

  1. 2

    Hey @este

    I'm an Android / IOS developer working in Java/Kotlin/Swift/learning Flutter.

    In your situation, given

    | that's what I know and progress will be quick.

    | have a limited amount of time

    I would stick with Java, until you have better traction and can accommodate more time to this project.

    Your motivation seems to be to push the product, not to learn new tech.

    A middle ground would be to write new code in Kotlin within existing Java codebase. But it will slow you down on the product.

    Good luck!

  2. 2

    I'm an Android dev too and I don't understand what has changed in one year. Maybe you have to update the minSDK supported inside the app or do some other updates, but that doesn't mean you have to rewrite the whole app unless you think of something else and you didn't mention it.

    Anyway, if you really want to rewrite it, then I would suggest you to go with the fastest solution ( The one that will allow you to have both Android and iOS ).

    Flutter might be close to a native app, but React Native has evolved a lot and it has a very big community.

    There is nothing that stops you from rewriting the apps later, but the technology you choose stops you from getting feedback from potential clients.

  3. 2

    Pardon my ignorance but I guess Kotlin was introduced pretty recently and has first class support. But that doesnt mean Java is going away. So your expertise is still useful. However if you want to learn a new stack that’s a different issue.

    As regards cross platform support, I would suggest you learn PWA. Recently Google announced PWA support as standalone apps. iOS is also following suit. (Iirc iOS was first to introduce PWA but Apple didn’t pursue it until recently).

    Also, very useful app. All the best!

  4. 2

    For the most part, it seems like you should avoid doing a re-write (in Java or another language/framework). You mentioned there's a couple of features you wanted to add, so that seems like it would take priority.

    Write in in Java for Android because that's what I know and progress will be quick.

    This alongside that you mentioned that you have a limited amount of time outside of 9-5 seems like #1 works best. If you want to expand to iOS in the future you can always choose to do that. There's likely little benefit to writing the app in Kotlin unless you wanted to learn Kotlin and use that in the future (users won't care what tech stack you have).

  5. 1

    Thanks for the advice everyone! Very much appreciated :)

    I does seem like the consensus is, and kind of what I was leaning towards is to continue with what I know and then, dependent on time/success of the app to then look towards developing for another platform.

    Thanks!