Switching to React Native from Ruby on Rails

Kamal P.
by Kamal P. 

Most of us programmers and software engineers are indeed always trying to learn more programming languages , pick up new tools etc. That is the way I came across ruby as well. Prior to it I was a happy java guy.

After few months working full time on ruby and ruby on rails building awesome stuffs with it. I finally realized why ruby was known as a language developed for programmers happiness.

Some of the noticeable advantages of Ruby on Rails I realized immediately were

  • The speed of development.
  • Best development practices like Representational State Transfer(REST) concepts, Don’t Repeat Yourself(DRY) concepts, Convention Over Configuration(COC) concepts, Model View Controller(MVC) concepts,
  • Plenty of fully tested ruby Gems already being used in thousands of rails powered websites
  • Testing tools inbuilt with frameworks other popular available testing gems like RSpec, Factory, Capybara, Database Cleaner,
  • Easy websockets integration through Actioncable to incorporate real time features,
  • CSRF protection by default,
  • SQL injection protection in bundled ActiveRecord by default, Encrypted secrets in Ruby on Rails
  • Database Migration functionality
  • Integration of Email, Jobs, Internationalization support
  • Easy way to create API for application using –api flag
  • Awesome guides and huge community

There is no doubt that Ruby on rails is most popular framework there are some things I want to see improved on Ruby on rails.

  • Ruby on Rails code tends to do too much “magic.”
  • Maintainability is not a great strength of the framework and the very weak typing of the language also makes the code increasingly difficult to maintain over time.
  • Shortage of flexibility: As RoR being opinionated framework what I struggle with most of the time was needed to adjust Ruby on Rails based on products needs as RoR comes with hard dependencies and modules.
  • Rails development is not as easy in windows environment as it is on linux and Mac.
  • Rails callbacks are good but I struggle with must of the time understanding and debugging as it makes things unexpected violating SRP.

Late integration of the webpacks with the latest version of rails shed some lights about on the javascript got me interested to learn more about ES6 officially, called ECMAScript2015 Fascinated by the new way of writing javascript I became familiar with some of the prominent features of ES6 like Template Literals, Multi-line Strings, destructuring assignment, enhanced object literals, arrow function, promises, block-scoped constructs Let and Const, class, modules. It is a declarative, efficient, and flexible JavaScript library for building user interfaces.

Having been familiar with the Es6 was a good start to try the new taste of React.js and  I started learning React and some fundamental concepts like components, states and props and how component communicates with each other through props and what benefit do one get using redux and other state management framework in large applications. Learning React was the turning point for me to learn React native as React native uses the same concepts, same lifecycle methods as React and focus on better UI using predefined Components.

So if you are moving to react native I suggest one to learn React although it is not necessary. Some of my suggestions for getting better at React native are:

  • Learning the flexbox layout as react native uses flexbox layout.
  • Learning the react navigation to handle the navigation
  • Learning how to make HTTP request or XMLHttpRequests.

If you are looking for a good team to help build a mobile app. Do get in touch with our team here

Some further References:

Gurzu is a Ruby on Rails company based in Nepal. Here at Gurzu we transform ideas into world-class products. Our professional team is fluent in 3Rs (Ruby on Rails, React and React Native). We’re ready to design, build and develop something that your users will love. We love building web applications and do so with extreme passion and craftsmanship.

Our services include following. Product Design. Web application development. Mobile application development. Technology trainings. Infrastructure setup and monitoring. Engineers/Designers leasing.