Moving from Kendo to the Ionic Framework
Over the last few months I’ve been taking a very hard and long look at AngularJS and trying to utilize it for my JavaScript code. I was first introduced to Angular by my partner Jason Jarrett who is always on the cutting edge. At first it was extremely daunting, almost impenetrable, and I blew it off, but the seed was planted. As I worked more and more in JavaScript it realized what power a framework like Angular brings, in organization, tooling and composition.
At Resgrid our apps are built utilizing AppBuilder and Kendo Core from Telerik. Kendo does support Angular, but from reading about it and looking at the code I feel that Angular support was just bolted on to check a box and Kendo was not rewritten to be a first class citizen in the Angular universe. So after some research we decided that Ionic was our way to go.
Why use Ionic?
- First class Angular support. Ionic was designed from the ground up to utilize Angular and that makes the experience consistent.
- Speed. While Kendo is no slouch, from initial tests Ionic performs better on older Android versions. Transitions are less janky and scrolling if feels more fluid.
- Consistent look and feel. Ionic does some platform specific things (how transitions are utilized, alignment, etc) but they leave the rest open to you by utilizing SASS. So you can customize your look and feel per platform utilizing platform specific SCSS if you want.
Why use Kendo?
- Native platform look and feel. Kendo does a great job at changing the UI to look like a native app for iOS6, iOS7+, Android, WP8 and Blackberry. If you need that native look and feel Kendo can’t be beat.
- Advanced/complex controls and interactions models.
- Great support from Telerik.
So why not Xamarin?
Xamarin seems to be the buzzword de’jure in the mobile space lately, especially if you’re a .Net developer. At this point we’ve scratched Xamarin for a number of reasons:
- Standard Xamarin is not cross platform all the way down the stack, you still have to write native UI’s but your backend logic is all C#. Xamarin Forms is the solution to this but it’s still very nascent, doesn’t support all the platforms yet and constantly has breaking changes.
- No re-use. Our current app is hybrid utilizing JS/CSS/HTML. Not all the code we have is ‘bad’ and can be migrated.
- No good theming/styling story. Xamarin Forms still doesn’t have a good global Theming or styling story yet, unlike Ionic where we can utilize SASS.
At the same time we are versioning our back end services (v3) to match with new integration models. More on this in another post. So how are we proceeding:
- We are utilizing Telerik’s AppBuilder CLI, Sublime Text 3, Angular 1.2 and Ionic beta 13
- We will port our app over to Ionic and make it feature complete with the current version
- Then we will migrate to TypeScript, beta 14 of Ionic (or nightly/edge builds) and Angular 1.3
- We will layer in automation with grunt (auto generating TypeScript defs for API objects, unit testing, etc)
So why not go straight to TS, Angular 1.3, Ionic nightly, automation, etc? Well in creating a whole new app it’s silly to try and shoot for perfection straight out of the gate, especially when it’s with a new technology or implementations. We want to quickly get a good app into the hands of our customers and not worry about or waste time with technical minutiae that they don’t care about. At the same time we want to learn, grow and experiment.
Resgrid is a SaaS product deployed on Microsoft Azure, providing logistics and management tools to first responder organizations like volunteer fire, career fire, EMS, search and rescue, public safety, disaster relief organizations, etc. It was founded in late 2012 by myself and Jason Jarrett (staxmanade).