Easiest way to make a mobile app with Phoenix on the backend?

mobile
#1

I haven’t done a mobile app yet and fancy giving it a go at some point - so just wondering what everyone’s thoughts are on the easiest route to making an iOS and Android app that people can download via the respective app stores.

There’s a list of options here:

But which is the quickest/easiest for a relatively simple app - say something like a chat or location based app?

#2

If easyness is the criteria, I would say React Native. I have done one simple with Phoenix Backend…

But now I would probably have a look at Flutter/Dart.

2 Likes
#3

I’m not a fan of FB so would probably give React a miss :lol: anything other than that that might be worth a look?

How much ‘harder’ is Flutter/Dart, and why are you looking at it over the other options?

1 Like
#4

You should go with Flutter. I think that is the best option now

3 Likes
#5

Most bang for your buck and return on the learning investment I’d say stick to the browser and go PWA unless you have a real requirement for access to native features.

There is browser support of geolocation, push and notification.

And people aren’t in a habit of installing apps anyway:

Aside: Right now I’m grinding through Building Progressive Web Apps: Bringing the Power of Native to the Browser (ebooks.com).

I know it’s not a popular opinion with the ES-averse (go ahead, transpile from another language as you’ll be using Babel anyway) but it is what it is.

Also while PWA may seem Google-centric, I view Addy Osmani as one of the driving forces - and he has consistently shown that he knows what he is doing (The Cost of JavaScript in 2018).

8 Likes
#6

Personally I’d look into Flutter as well. I’d really like to propose PWA, but in my opinion the support under iOS is just not good enough to be a real option. You can’t even switch to another app and come back without effectively restarting the whole app.

3 Likes
#7

I’ve always found browser based geolocation has been a bit hit and miss :confused: I also heard PWAs and push notifications on iOS isn’t great? Unfortunately both of those are something I wanted to make use of (and some of the greatest benefits of mobile apps imo).

That’s another good aspect of mobile apps! It’s a shame you can’t do that with PWAs.

1 Like
#8

If the stats can be believed Android already has 75.9% on the global market and 48.3% of the US market. So Apple better get their act together if they want to remain relevant.

Progressive Web Apps on iOS are here

I wonder if those apps don’t manage their cache properly - technically switching between PWAs means switching browser tabs.

2 Likes
split this topic #9

4 posts were split to a new topic: Quasar Framework - front end, mobile and desktop apps in a single framework!

Quasar Framework - front end, mobile and desktop apps in a single framework!
#10

I think those might be a bit misleading, as I think a large percentage are on old versions or old (less useful) ‘smart’ phones?

Most iOS devices are on fairly recent versions of the OS from what I remember?

I get the same thing with the forum - every time I click on it from my home screen it opens in a new tab and back to the homepage, argh! :lol:

Do you have a list of PWA apps btw? I’d love to check a few out :smiley:

2 Likes
#11

Ionic works well and I found it very friendly as a web developer. I think it’s largely overlooked.

2 Likes
#12

If you want something less bleeding edge (Flutter) but not React Native, there are some other options out there:

At my last company I had to pick one of these to build the companies mobile solution on. I dismissed PWA immediately due to lack of push notifications (and, with our clientele being doctors, over 90% used iOS) plus lack of app store availability (hospitals trust app stores more than random websites). We dismissed Xamarin just because we all developed on Ubuntu. Flutter and Native Script had too small of a user base to feel confident in finding answers or ready made solutions to common problems; so we went with React Native. I do hope both Flutter and Native Script continue growing and maturing to the point that they are viable for more risk adverse projects, as they both intrigue me.

I’d also like to hear more from anyone that has made something from any of these.

2 Likes
#13

Biggest question: only online stuff or offline too?

Online (mobile site? / if not, simple skeleton and a web view):

  • Do you need an app or does is a mobile site enough?
  • Very basic (VERY) - flutter. You can learn the language, concept very fast and build an app, but if you use 1 call a little different than expected -> framework crash, spending weeks to find out what’s going on, … - then build a web view as soon as possible and use the mobile site :slight_smile:
  • Use a native sample app and use web views after that - much less trouble than flutter at the moment (will probably change in 1-3 years)

Nice thing with web views -> you can start with almost nothing, update frequently (all on the server), use new technics like LiveView, use 1 for everything or as many as you like, mix them with native views and use everything from the OS via JavaScript calls to your application. You just need a little skeleton app and the knowledge for that (native, flutter, …).

Offline (traditional app + api at the backend):

  • Check React Native, if not sufficient, check NativeScript, if not sufficient check flutter (same as above)
  • If you come from web/css development, try ionic - for some apps it’s a nice solution (simple chat, … - like you mentioned) where you can get results very fast
1 Like
#14

Do you mean create a skeleton app in the native language and use/insert a webview layer into it and then do the bulk of the app in that? That sounds like a good compromise actually - do you have any links to guides, tuts or screencasts on this?

Do you know any good video courses on Ionic? I looked at their forum and it looks quite active which is always a good sign :smiley:

#15

iOS developer here. Used the Phoenix Swift client which was a bit abandoned when I started using it but a few guys picked up development and I’ve added a few patches to it as well and it’s pretty solid so far. Works about the same as the standard JS client, code I copied over from JS almost compiled even. Didn’t hear complaints from the Android dev so that library should be solid as well.

Swift and Kotlin complement each other pretty well the Android dev could copy over basically all of the functional patterns to the Android app.

I can’t advise you to use native or not but a lot of hybrid or cross-platform solutions can force you to get dirty with native libraries and code after all to get the last 10% of your app done. Depends on the level of polish you’re looking for.

1 Like
#16

And sometimes (not always, I know), the hard bits are the ones that can be cross-platform naturally in a common language–C++ in the past, considering Rust these days.

1 Like
#17

Exactly. You can generate a simple app with 1 view for Android with Android Studio. Then google for a webview example. Each of this tasks should not take longer than about 1 day. After that you can work like delivering in a browser. Just google for your first “hello world” app and for a web view example. If you need to call native stuff from the webview: https://www.tanelikorri.com/tutorial/android/communication-between-application-and-webview/ (Android).

Worked with ionic some years ago, there should be plenty of material to find and the community was very helpful. Hope they still are :slight_smile:

1 Like
#18

I’m working on a mobile app for my Phoenix-base messaging server. Here are some of the tech’s i’m using:

  • REST APIs to fetch data
  • Coherence and Phoenix tokens for authentication
  • Phoenix channels for real-time events to the client
  • BirdSong for the swift socket/channels
  • RealmSwift for data persistence

Seems to be working pretty well so far.

2 Likes
split this topic #19

5 posts were split to a new topic: An iOS / Android - Phoenix tutorial (WIP)

#20

Try ionicframework. I am personally giving flutter a go for a learning project.

1 Like