
Announcing Ionic 2 Final - jthoms1
http://blog.ionic.io/announcing-ionic-2-0-0-final/
======
MaxLegroom
We used Ionic 1.x for a few projects. We found that for relatively basic,
brochure-ware apps, it worked just fine. However, for some of the more complex
apps, we really fought the lack of support/options in the Cordova plugin
space. This, of course, is not the fault of the Ionic team, but it does create
a frustrating development experience that played a large part in us abandoning
it as an option.

This was also our first experience with Angular. I really wanted to like
Angular, but after more than a year of development, we left it for greener
pastures. I understand that Angular 2/Ionic 2 are touted as being
significantly better, but while all those improvements were being made, we
invested our efforts in learning and building with Swift. I can say that we
are delighted with the outcome and have no real inclination to leave it for an
alternative.

~~~
nvahalik
About to embark on a potentially large Ionic project. What were some of the
issues that you had?

~~~
WayneBro
I am about to release my largest Ionic project to date. It is a highly dynamic
data entry and reporting system for field workers. My client is able to create
and publish new data entry forms and reports from the private back and angular
web app that I built for them.

The lack of any kind of commercial support is real and frankly that is the
largest issue that you will have to deal with. I have searched high and low
for any kind of commercial support that I can offer my customer. I am it. Or
somebody like me.

However, I will say that in two years of using Ionic I have never had to
modify one Cordova plug-in or any native code in order to release my apps. I
do mess around with the native code sometimes but usually on an exploratory
mission. Other than that, my biggest issue so far has been with how quickly
ionic and Cordova get updated and how quickly my code gets out of date because
of that. Then when I have to update I have to make sure that nothing breaks by
writing all sorts of tests or doing manual testing yada yada yada. Also
getting answers from support or anybody qualified is sometimes difficult and
you have to wait days or just figure out your own work around.

------
danbucholtz
Disclosure: I work on Ionic

Ionic 2 is much more performant and scales much better for app development
than Ionic 1. I have yet to meet anyone who has not really enjoyed developing
Ionic 2 apps. We take a tremendous amount of pride in the developer
experience!

Native apps will always be a little faster but if you can get 60FPS either
way, who cares? Ionic is easier to build apps with, and developing in the
browser is a joy.

A huge advantage of Ionic is being able to deploy the same code base to the
web as a PWA and to a phone natively as a cordova app. Soon Ionic Native will
expand to support PWA and Electron, too, so it will truly be a write once run
anywhere experience.

~~~
jbmorgado
I was really very well impressed by the small size of ionic apps. It's in the
order of ~3MB which is great.

But the startup times are somewhat big. I'm talking, for the simplest of
applications a startup time of ~5.5 seconds in ionic 2 (the beta) vs ~2
seconds in React Native in Android.

For me, that detail has a significant impact in usability.

Any plans to work on those startup times?

~~~
jgw96
Disclosure: I also work at Ionic

So start up time is something that we are very focused on at the moment.
Especially on the PWA side of things, TTI (time to interactive) is exceedingly
important to ensure a good user experience. We are working on a few things at
the moment but most likely the first one to hit is gonna be code splitting. So
with code splitting, instead of shipping just one big bundle you will be
shipping smaller bundles that are lazy loaded based on routes. This means that
when the app first loads only the first bundle for the first view in your app
will have to be loaded, parsed etc and then the other bundles will be lazy
loaded. With this setup the browser (or webview) will never have to parse and
load a huge bundle all in once, it will instead only have to deal with smaller
bundles. This should give a pretty big improvement as parsing javascript is
slow in every browser. From my testing on a moto g each MB of JavaScript in an
ideal situation takes about 2 seconds to be parsed, so reducing the amount of
JavaScript the browser has to deal with is a very fast way to get better load
times.

~~~
jbmorgado
Well, these are good news. Any timeline to expect the results from this to be
suitable to apply in production?

~~~
jgw96
The timeline on this stuff is asap haha (:

------
joeyspn
Not long ago I was an Ionic believer, but not anymore... the lack of support
for their cloud services [0] has turned many people off and signals that they
don't mind leaving their users "locked".

Devs are migrating en masse to react native. I have friends in several
startups leaving their jobs because they've been tasked with maintaining
legacy Ionic 1.x/Angular projects, while the codebases are migrated to react
native...

For hacking quick MVPs is not bad, it was even cool 2 years ago, but for
serious projects starting from zero, react native is a smarter choice.

[0] [https://github.com/driftyco/ionic-
cloud/issues](https://github.com/driftyco/ionic-cloud/issues)

~~~
jordache
why use the cloud though? just build on premise and use existing MDM, or App
Store

~~~
jawarner
Right, AFAIK the framework itself functions independently of the services, so
you can drop in whatever solution you want for push notifs / analytics / MDM.

~~~
dante_dev
that is what we do in our organization, we don't see value on their cloud
services, we see value on their framework

~~~
jordache
Bingo! for hybrid development, I don't see anything better out there than
ionic.

Key point - for hybrid development. There are a lot of use cases where hybrid
mobile apps are appropriate (CRUD). With ever more powerful devices, the
argument for hybrid increases.

------
devdad
Way to much hate here. I run an app with ~30k users and I never get any
complaints about lag or comments on the stores that reflect negative on the
performance. All criticism I've received has been by my own missteps.

Ionic 2 has given me two platforms and a great development experience. The few
times I've had problems they have an amazing responsive team on Slack that's
helped me out right away.

~~~
cyberferret
I've built many apps using Ionic, and usually with good results. I think the
problem is that people don't really look at their 'use case' when designing
their apps. There are apps where a hybrid solution works great, and apps where
is doesn't.

If you are going to build an app that requires you to display 1000 items in a
scrolling list, then yeah, forget any sort of Hybrid or Cordova based app - go
full native.

Similarly if you want to have complex background geo-location tracking that
doesn't suck your battery dry. You can't optimise that using Cordova as the
'go between', but you have to go native.

Outside of that, Ionic/Cordova will cover you bases and let you get apps to
market 20x quicker without your users realising that it is not a native app.

------
samkite
I'm always afraid of investing a lot of time into this type of frameworks and
then having the rug pulled from under me. Most of the time I spent learning
angular ended up being a waste of time and I'm still scarred from then.

Also that logo looks familiar?

~~~
alexkavon
You're not wrong. I've worked with Ionic v1 a fair amount. The framework is
good for mockups and prototypes but nothing more. What ends up happening, as
you app grows to include notifications, deep linking, etc, is you need to rely
on more and more hacky thirdparty solutions. These days I either code natively
or use Xamarin.

~~~
EugeneOZ
You are wrong. I have few mobile apps, made with Ionic and Ionic 2, some have
been used on warehouse as part of huge WMS (to scan items and manage whole
business process of warehouse worker), some were apps for business as part of
CRM (with geolocation, maps and handwritten signatures). And every time
product owners were very satisfied with the result and with speed of
development.

Ionic 1 had too hacky API and not great performance, but Ionic 2 is much more
mature in both of these fields.

~~~
alexkavon
I don't believe I ever mentioned ionic v2... I don't doubt v2 brought many
improvements. However you just can't beat the power of not operating in a
Webview.

~~~
timrichard
However, Webviews do give you a very predictable container to target. If you
use something like Intel Crosswalk [1] as part of your project for Android,
you can bundle a recent Chromium webview to much older devices. And Flexbox is
very well suited to solve phone/phablet/tablet layout problems.

[1] [https://crosswalk-project.org/](https://crosswalk-project.org/)

~~~
pikzen
Because people seemed to love 80MB Chrome runtimes being bundled with terrible
Electron applications on the desktop, Crosswalk allows you to bundle 40MB of
chromium for your terrible application on Android.

------
erikpukinskis
"complex" and "object oriented" does not describe any future of JavaScript
that I am excited about.

~~~
79d697i6fdif
I think it's around 5 years too late to prevent the complexity explosion :)

JS has been object oriented since the beginning it just has an insane
prototype based inheritance hierarchy that they're increasingly trying to
hide/pave over.

~~~
treehau5
> just has an insane prototype based inheritance hierarchy that they're
> increasingly trying to hide/pave over.

Can you elaborate more on why you think it is insane? I think it is quite
elegant, and in my experience they only try to hide or pave over it because
_just so many damn people_ can't get over the fact that it isn't classical
object oriented

Also, for those who haven't read:
[http://javascript.crockford.com/inheritance.html](http://javascript.crockford.com/inheritance.html)

~~~
79d697i6fdif
the way inheritance works in JS leads to a ton of inelegant design patterns
that need to be remembered and very inefficient handling of many casts because
the prototype chain is literally just a linked list.

It also prevents sound encapsulation of class local variables and methods, the
main point of object oriented programming in the first place.

~~~
treehau5
There are many other languages that do not have multiple inheritance, or do
not handle it the way you typically see in C++ or Java type languages, go
being one of them, ruby another. Composition is more favored, and arguably a
far better pattern regardless. I disagree with your assessment that it
prevents sound encapsulation, and regardless, a better argument made against
it is the fact that it is a dynamic language. In any way, there are patterns
to achieve classical OO-style encapsulation, but that is not the main point of
object oriented programming in any case.

~~~
79d697i6fdif
My argument doesn't have anything to do with multiple inheritance. C is the
only one I know of that supports multiple inheritance and it's largely
considered a historical mistake (see deadly diamond of death). Javascript uses
something called the prototype chain to determine InstanceOf(). It's literally
a linked list, and a ton of disadvantages come with the object system being a
re-purposed linked list. It's possible (and easy) to break the type of an
object by corrupting the prototype chain. It's the reason you have to do hacky
stuff like Array.Prototype.ForEach to make sure your code actually works in
larger JS applications. It's also slow and a big reason why javascript runs
around 10x slower than most JIT'ed languages. The crazy object system prevents
a ton of optimizations from working.

Encapsulation isn't the "classic version" of OO. It's literally the main
reason OO was created. Javascript fails to encapsulate because it doesn't
support true private data members. There's patterns to achieve some sort of
data safety (see
[http://speakingjs.com/es5/ch17.html#private_data_for_objects](http://speakingjs.com/es5/ch17.html#private_data_for_objects))
but they all have disadvantages because it isn't built into the language, it's
another hack.

Composition can be easily achieved using interfaces in most languages, another
thing javascript doesn't support.

Excusing these faults to being dynamic language is like saying the model T is
a nice car because "it was good for its time". Many languages before JS
(including perl even) supported a more sound and convenient type system.

JS was badly designed in many ways and we are still paying the price for it
today. ES6 and transpiling have made it finally worthwhile to try to develop
anything significant using it which has led to the recent explosion of
javascript development. I pray that EMCA continue to remedy what can be fixed
in future and that Typescript catches on since it mows over much of the
insanity.

------
cseelus
At the moment we are in the process of evaluating different
frameworks/solutions to build a simple native App for iOS and Android. Its
mostly some basic forms to build simple objects that eventually get posted to
a JSON API.

What astounded me most was that nearly none of the established solutions
offers a simple way to just cache these requests until when the device is
online or any other simple ways to get such basic stuff working when
offline/the connection is bad.

Generally speaking: In early 2017 its still way to hard to get very basic
stuff on native (let alone web based) mobile apps working offline. The whole
offline-first movement still has a lot of educational work to do.

~~~
ChicagoBoy11
I'm not sure I agree with this 100%. About two years ago I had to have
shoulder surgery and so couldn't go golfing with my buddies -- I ended up
making a mobile app to mimick the one used by the PGA Tour where I could track
all of their scores online as they played so I could still participate in the
banter with my golf buddies. A big issue was the fact that I wanted the live
updates but had to deal with pretty spotty connection around the course.

I ended up using Firebase and it handled that case just BEAUTIFULLY right out
of the box; the data updates optimistically on the player's own device, and
once a connection is established Firebase syncs it with the datastore and all
other phones update accordingly.

I would say that this is some pretty sophisticated behavior that I, the
developer, just used right out the box following documentation.

------
jadbox
I've been using react-native for the last year and can't say I have much
positive to say about it. Honestly, just about every day we hit a sharp pain
point in component layouts, broken build scripts due to RN bugs, and runtime
crashes. While Ionic 2 is young, I welcome another option to the JS native
space. I'm also hoping Flutter.io will get to a stable release.

~~~
jbverschoor
Check out nativescript. It has 2 versions, one of which is angular2 based.
It's pretty neat

~~~
jadbox
I've looked at nativescript- it's pretty neat... although still very young.
Imho, there's no native JS platform that I'd recommend for a production app
yet.

------
paradite
I think it is pretty _ironic_ that Ionic 2 has a complete set of components
for both iOS and Material Design:

[http://ionicframework.com/docs/v2/components/#overview](http://ionicframework.com/docs/v2/components/#overview)

,while Angular 2's official material design components are still in the pre-
release stage:

[https://github.com/angular/material2](https://github.com/angular/material2)

Good job on filling the gap for Angular 2.

------
jrm2k6
Stupid question, but Ionic is not native, or was not at least. But react-
native is actually using only native APIs through Javascript. So if you want
to have a native look and feel, why not go with react-native?

~~~
jdormit
I don't think that's a stupid question at all. Ionic uses Cordova [1], which
basically launches a browser that runs your web page as an "app". That said,
Cordova does give you access to native APIs, so you still have access to
Bluetooth/camera/whatever. Phone processors and browsers are getting
increasingly powerful, so it's totally possible to achieve native or near-
native performance in a web view-based app - assuming you properly optimize
your JS and HTML. I believe Ionic provides consistent styling, so it's
definitely possible to make your app look and feel like a native one.

The real win using something like Ionic is that you can build your app using
web tech that works equally well on the phone or in the browser, and that your
developers already know. The trade-off is that it becomes more difficult (but
certainly possible) to make your app look and feel native.

React Native gives you many of those benefits, but since it compiles to actual
native code you can't reuse your code for a browser app.

[1] [https://cordova.apache.com](https://cordova.apache.com)

~~~
jrm2k6
With react-native, if you isolate your components from your logic enough,
(example: use Redux), you can reuse all the logic in a react-native app, and
just change the components part, which is usually not that hard, at least on
the simple apps I worked on. Another advantage that react-native would have
would also be to be able to have native code and react-native code in the same
app.

------
sjclemmy
I've got an app that I started way back in February 2016 using ionic 2, so
I've followed the alpha and beta, it's been a long slog, but even back when I
started I could tell it was worth it. I'm currently using Angular 2 for
another project - it's awesome.

------
fifafu
Thank you Ionic team!

I have already built tons of business apps with Ionic 2 (beta) and really like
how easy it is and how well it scales. I also really like your ionic-app-
scripts which make things like AOT a breeze.

I have developed native iOS since Apple introduced apps on the iPhone and I
have created some very big macOS and also Android applications natively. I
think there will always be use cases that you need to do natively. However for
>90% of the apps I developed (and use) Ionic 2 is perfect and has saved me a
lot of time.

The beta phase has been a bit though to keep up with because of how many
changes where introduced by Angular and the build infrastructure, however
since RC1 or so Ionic 2 is really really nice.

I came to the realization that native development is not feasible for many
business contexts when I was tasked to build an application for iOS and
Android simultaneously a few years ago. It was so much work and pain to keep
both apps in sync that I have decided I never want to do this again. Luckily
Ionic came to the rescue :-) You will still find platform specific problems,
but so far it has been relatively easy to resolve them.

Congrats!

------
janwillemb
We've been developing an app since the last beta and are happy to see Ionic
come of age now. Congratulations, and thanks for all the effort.

------
ausjke
it's really just for Angular2? which is overly complex for many. I'm using vue
which has different similar frameworks.

~~~
danbucholtz
No, Ionic 2 is a complete rewrite of the framework with all of the lessons
learned from Ionic 1. Writing apps with Ionic 2 is an insanely great
experience!

------
bbayer
No body mentioned but Ionic Creator[1] still supports Ionic 1. I think it is
great tool to start an app from scratch but it doesn't look cool when your own
tool doesn't support your own latest product.

[1]: [https://creator.ionic.io/](https://creator.ionic.io/)

~~~
rch
Not familiar with Creator, but I'd be frustrated if I had to wait for a drag-
n-drop gui editor to catch up before seeing a release in any core framework.

------
bdcravens
I like Ionic, but not a fan of the name of "Ionic Native". I think that might
confuse people with regard to parity with React Native, when it's really much
different (it's a Cordova plugin wrapper)

------
techwizrd
This is actually something I'm excited about. I remember trying Ionic v1 and
not really enjoying it. I built some MVPs and some apps using Ionic v2 about
six months ago and I found it to be a pretty great experience. It was also my
first experience with TypeScript and Angular 2 and I enjoyed the experience
(especially versus traditional Android development). It's a neat product and
I'm excited to see how the v2 final release compares.

------
replicatorblog
We're huge fans (and investors in Ionic) and we recently interviewed Max Lynch
about how the project went from idea to the upper echelons of the Github
leaderboard [https://hackernoon.com/step-by-step-advice-how-ionic-
became-...](https://hackernoon.com/step-by-step-advice-how-ionic-became-a-
top-50-github-project-and-you-can-too-65088a250068)

------
rbritton
I'm a big fan of the icon font released by this project too[0]. It's similar
in concept to Font Awesome, but I've sometimes found it fits my needs better.

[0]: [http://ionicons.com](http://ionicons.com)

------
hatsix
I don't understand the 'final'... they're not stopping development in any way.

So, isn't it just.. Ionic 2? or maybe Ionic 2.0?

~~~
squeaky-clean
> So, isn't it just.. Ionic 2? or maybe Ionic 2.0?

Final is how they signify a version is ready for production and they'll stop
modifying it. Up until now they've have 6 upgrades as Ionic 2.0.0-alpha, then
11 as Ionic 2.0.0-beta, 6 as release candidate, and finally, Ionic 2.0.0.

------
lima
What's the equivalent for desktop site development?

~~~
lignux
That would be electron.

[http://electron.atom.io/](http://electron.atom.io/)

~~~
fgpwd
Electron would be analogous to Cordova, which is what ionic is based on.
Something like Microsoft fabric or similar, or even bootstrap would be the
analogous thing for desktop.

