Back to blog home page

The Hybrid Framework Battle is On: Ionic vs Famo.us

Posted by on Apr 28, 2015

Overview

As hybrid mobile development has accelerated over the past few years, many developers have had to solve the same problems repeatedly. As any competent developer will do, these developers began looking for ways to reduce the number of times they had to reinvent the wheel, as well as ways to speed up their general development process by abstracting away common components. Out of this desire, hybrid frameworks were born. Below we will look at two common frameworks – Ionic and Famo.us – and examine what they provide developers, as well as where they fall short.

Ionic

Ionic is a framework that has been around since early 2014. It was originally developed to ease the process of creating a native-seeming UI on mobile devices, allowing developers to get a basic UI up and running quickly. It wraps AngularJS, and as such works very well with the AngularJS ecosystem. It adds a number of common UI elements on top of AngularJS, making development much more rapid than a straight AngularJS-based hybrid application would need. It has a highly active development community, and offers a number of plugins that enhance the development experience with the framework.

Famo.us

Famo.us is a web UI framework developed with a single goal: rendering speed. Where many applications are stymied by the slow render times inherent in plain HTML apps, Famo.us uses a custom implementation of the HTML rendering tree that greatly increases the performance. It also supports more complex transforms of displayed HTML elements, providing a full 3D experience in the browser through this custom rendering tree implementation. It can be used to output HTML, WebGL, or even a mixed mode that combines the DOM with WebGL code. It also has an active development community, and a newer project – Famo.us/Angular – offers integration with AngularJS.

Comparing the Two

Each framework started with a different goal in mind, and that is obvious when you look at the end result. As Ionic was focused on getting UI components with a consistent look and feel across multiple platforms, performance was often a secondary consideration – and this shows in the relative performance of Ionic applications versus Famo.us applications. Conversely, Famo.us started with a focus on performance – particularly when it comes to graphics and presentation – and as a result fell behind in implementing common UI components. Both frameworks are under active development though, meaning any apparent issues may ultimately be resolved before long.

Choosing a Framework

Choosing a framework for your application relies upon knowing what aspects of your application are most important. Is your application going to involve a lot of animations and transitions, or 3D rendering? If so, then Famo.us is the obvious choice, as its performance-oriented rendering will resolve a lot of potential issues. On the other hand, if you are instead looking for a common UI experience in an environment that isn’t performance-critical, then Ionic’s multitude of UI elements and common look-and-feel implementation is probably the right choice for you. The simple breakdown is as follows:

  • UI-heavy application where performance isn’t a major concern (within reason)? Ionic is likely the better option.
  • Speed-intensive application using either advanced graphics or emphasizing responsiveness? Famo.us is likely the better option.

Note the use of the word “likely” in each assertion above. Both of these frameworks are under constant development, and what is an issue now may not always be so. For instance, the Ionic team is working hard at the moment to address performance issues in the framework, while the Famo.us team is turning towards UI implementation. Before long the features of each framework may converge and change the above assumptions.

Conclusion

Framework selection is an important decision that has far-ranging implications for the development of your application. Choosing a framework focused on graphics rendering, for example, may mean that you need to implement a lot of data handling and UI components yourself. On the other hand, choosing a UI framework for a high-performance environment may lead to frustrations when you aren’t given the appropriate freedom to modify the application’s canvas, or when performance becomes critical. Ultimately, Famo.us and Ionic have distinct goals that should be fully understood prior to implementing one in your application.

Sign up and start creating your app today.