So, I'm going to start (another) side project. It's obvious that it should be available for web and mobile and I would like to know your opinions about the (as far as I know) three available options:<p>a) Going native. Android and iOS by the moment.<p>b) Going hybrid. SPA. Maybe Meteor/Ionic, Cordova.<p>c) Going responsive. Just one website.<p>I have experience with a) and c) but not with b).<p>Reasons to do this side project:<p>* Extend my portfolio<p>* Keep improving old technologies or learning new ones.<p>* Could be the next big thing! So naive :)<p>So, it would be great to see your pros and cons listed here. Thanks!
If you just want to create a MVP and figure out if people like the idea, then I'd say a responsive website might be your best bet. Otherwise you might end up wasting a lot of valuable developer time while figuring out too late if the project will be a success of failure.
Do you need App/Play Store distribution, or offline support? If so, you usually need to go native or use something like Cordova to package into a native app. From the GUI building side of things, responsive and Cordova can be considered the same technology, although with some special considerations when running under Cordova (webviews might be a bit different than bleeding edge browsers, native access etc). If you do decide to go responsive/Cordova, do yourself a favour and get to know CSS Flex (great for layout on screens etc). Responsive/Cordova also allow you to use other great stuff like React+Flux.<p>The one thing that will haunt you if you do not go native is the "feel" of you app, compared to the native apps on the same platforms. Most games solve this problem by having their own "immersive" GUI which often works because GUIs in games are fairly limited. Usually a responsive/Cordova type app will either select one of the native "styles" and mimic that, OR select to mimic a "website" type interaction, but regardless, it will never feel quite native on mobiles/tablets.<p>From another point of view, if you have to build everything yourself, going native means it's going to be a looong time until you cover all platforms (Android, iOS, responsive web). Depending on your app, doing cross platform first, THEN invest in native when you've got a hit under your belt.
Going native has the advantage of giving (potentially) the best performance on each platform. Things like infinite scroll, animation seem to be smoother using native code. The downside is having to know how to code in two languages and having to maintain two codebases.<p>Responsive site is the logical first step, since you want it on the Web anyway. You can use most of this to build your hybrid app. I've used Cordova and it works well for basic apps, so this is the direction I would take.
I've had experience building MeteorJS based (Cordova under the hood) mobile apps and they are dreadful. Wood advise against it. However, MeteorJS is a great framework and our app, Linkwok is built using MeteorJS.<p>If you do decide to go the MeteorJS route and need SEO take a look at this post I made here: <a href="https://hub.kadira.io/posts/sFWNi7ZdPoamaZF6x/" rel="nofollow">https://hub.kadira.io/posts/sFWNi7ZdPoamaZF6x/</a><p>If it is more of an app and has a strong web app use-case I would suggest a,b MeteorJS + Native Apps
If you know React, I'd suggest looking into ReactNative. It's a new tech but what I've tried and seen it's VERY promising. No Android support yet but it's coming soon.
If going native makes sense, then going hybrid or responsive seldom does. That is, if the app isn't about content, like a catalog, or other content-centric purpose, then go native.<p>Or you can look at it from the other side: The more rich the interaction, and the more direct manipulation, the more reason to go native. If it's just a few buttons and text fields, you can choose whatever implementation is easiest for you.
I think hybrid is a fine option if the user experience is good enough for the app you're doing. Writing two native apps plus a web app is a massive undertaking for a sole developer especially if you don't know if the app will be successful. Having to maintain three separate codebases will significantly reduce your ability to adapt quickly to feedback as well.
I suggest looking into ionic framework and building a hybrid app. They have put a lot into making the workflow amazing to work with. Ionic View will let you run your app natively on a phone without having to install from the App Store or drop money on the sdk. Just push from the command line!
Totally dependent on the scope. But if it functions well as a mobile (responsive) website, and your making that anyway, just wrap it in Cordova for App Store distribution. Easy peasy.
Author here. So many useful responses, thanks. I didn't mention the scope of the application. It is some kind of CRUD app: users, comments, posts, etc.