Ionic v1 to Ionic v3 upgrade necessary?


#1

Hi All

Our company built an e-commerce banking app with ionic v1 several years ago, and this app is going to be in use for the next few years at least. We have to maintain the app for changes like the new iOS version, which just came out, or updates to some plugins, but so far it’s been nothing too huge.
Ionic 1 is getting older and older though, and a few weeks ago we started discussing if we might even need to update the ionic version to 3.x. Right now we’re trying to prepare a list of reasons why or if an upgrade would make sense or not.

The reasons we’ve listed so far are

  • We’re concerned about support being cut in the upcoming 3-4 years for ionic 1.x (support for the new iOS and Android OS versions that come out)
  • Security issues being found with the old angular 1 version our app is built on.
  • Huge performance leaps of the app and build process
  • Access to the newest features that modern phones offer. (Although here we could just technically upgrade our cordova version?)

Do these reasons seem valid or are we missing something important? What are your thoughts?

So far even with mentioned reasons we’re not fully sure if an app upgrade from ionic 1 to ionic 3.x is necessary.


Ionic v1 support, long term support, support subscriptions
#2

iOS and Android support is only indirectly done by Ionic itself, but more by Cordova. You can package old Ionic v1 apps in current Cordova versions (cordova-android and cordova-ios), as this is controlled by the Ionic CLI whose current versions still support Ionic v1 just fine. I don’t expect this to change.

The HTML and JS of an Ionic v1 app is highly unlikely to brake by changes to the Webview offered in future iOS and Android versions - websites from 1994 also still work in modern browsers just fine.

So I think you are probably good on this point.

Ionic v1 indeed does not support the most recent AngularJS versions ("angular": "1.5.3" in Ionic v1, v1.6.6 is most recent stable of AngularJS on Github, v1.5.11 most recent 1.5.x release on Github) out of the box, but you can probably fix that yourself manually as AngularJS doesn’t really change that much any more as it is quite stable.

AngularJS versions of Ionci v1 were last updated “2 years ago”, but I expect if some really important update comes out, Ionic would still take care of these. Especially if someone else creates a PR, tests everything and they just have to merge it in.

The build process of Ionic v1 was pretty fast, not much to improve there, right?
For the app itself, the HTML and JS is of course different to what you would write today. Especially because of the build process, that doesn’t do that much (or any if I remember correctly) optimizations. On the other hand, devices have gotten much beefier than 2 years ago, so I am not sure if this really is a problem.

Do you have current problems in that area that need to be solved?

Yes, as with the Android and iOS versions this is mainly taken care by Cordova again via its plugins. ngCordova, the wrapper that made using Cordova plugins in Ionic v1 apps easier is deprecated, but that is not really a big problem as you can use the plugins directly, it’s just not as convenient. (I am not sure what the state of using Ionic Native in Ionic v1 projects is. Maybe this works as well).

So my personal conclusion is that if you have a working app that only has to be maintained, maybe sometimes gets a small new feature, staying with Ionic v1 definitely is fine. As soon as there is a redesign or major functionality change, I would start thinking about rewriting it though. Developing Ionic v1 apps definitely won’t get easier, and surely not sexier over time.


#3

Great answer! And kind of the train of thought we were having as well.

To answer your question about the build speed we’re happy with it, but are hauling a lot of custom plugins and code hacks with our code base right now which is costing us build time. With a rewrite we’d have a chance to optimise that.

Have a good one and some virtual chocolate :wink: :chocolate_bar::chocolate_bar::chocolate_bar: