Aug 03, 2017

First steps in RubyMotion

blogpost cover image
RubyMotion is a technology that allows to create cross-platform applications using the Ruby programming language. Target operating systems are Android, iOS, OS X, as well as Watch OS and tvOS. 


There are three forms of license available, one free and two paid subscriptions. The free plan only includes creating apps for the latest stable version of Android and iOS. To create applications for older versions or for other operating systems, a paid India subscription must be purchased. This plan costs 199 $/year (or alternatively 20$/month). The third and most expensive license – Professional – supports prioritizing bugs and incidents.


Numerous sample applications, which are provided by the official RubyMotion site, are a great help for beginners. You can find most of the popular and widely used technologies in today's applications – e.g. camera, OpenGL rendering, touch-screen gestures, timer, communication with external APIs. Available applications are written for Android, iOS and OS X systems.


Documentation of the framework is quite poor. The above-mentioned examples, which are shared and described on GitHub, are intended to be the main help for the developer. To find details about the functioning of the mechanisms and assumptions of RubyMotion you need to strongly search and most often there are just community comments.


The community is focused around the official forum and chat on Slack. The particularly second place is very convenient, as you can quickly consult more experienced programmers and dispel many of your initial doubts. However, watching the chat archive on Slack it is noticeable that over time the presence of people is getting smaller, so it is probably a dangerous signal for the development of this framework. As in the classic Ruby language and its frameworks (i.e. Ruby on Rails), the community can implement its own libraries (gems), reuse of which is very convenient.

Subjective feeling

When I started working with RubyMotion I thought that one application would be able to be deployed on many devices with different operating systems. My hopes quickly collided with reality. RubyMotion allows you to write applications on many systems using Ruby, but in fact, you need to write a different application for Android and a different one for iOS. In addition, you need to know the basic behavior and concepts of these operating systems, and the code in Ruby in its structure must reflect native code that differs for these two technologies.

On the other hand, this aspect is referred to as cross-platform. You can pass some parts of the code in Ruby between platforms, for example, services or classes – that is application logic. However, a significant part (most) of the application, i.e. the User Interface, is dedicated to the particular platform. The worrying fact is that there is no large and widely used application written entirely in RubyMotion.

Conclusions (also subjective)

If you have never had contact with native writing applications on a given platform, RubyMotion is not a good choice. It requires you to be familiar with the structure of the system and the conventions adopted in its written software.

If you want to write one application and then use it on multiple operating systems, RubyMotion is not a good choice. There are many environments and technologies where one application can be deployed on a variety of devices - Xamarine, Appcelerator, Sencha, etc. RubyMotion only allows to write dedicated applications using standardized Ruby language.

If you want to write a relatively simple application to a platform you know using Ruby language and Ruby gems, RubyMotion is a good choice. In this case, after creating the logic, you will be able to share it with other platforms, however, creating separate applications.

If you have ever had a little contact with mobile applications, but for a long time you know Ruby language and would like to create a quick application for your own needs, this is a great choice.

The best way to write mobile apps is native – Java/Kotlin for Android and Objective-C/Swift for iOS ;)


I hope that my review will be helpful to you when making your choice.

Good luck!