Skip to content

Modus-Logo-Long-BlackCreated with Sketch.

  • Services
  • Work
  • Blog
  • Resources

    OUR RESOURCES

    Innovation Podcast

    Explore transformative innovation with industry leaders.

    Guides & Playbooks

    Implement leading digital innovation with our strategic guides.

    Practical guide to building an effective AI strategy
  • Who we are

    Our story

    Learn about our values, vision, and commitment to client success.

    Open Source

    Discover how we contribute to and benefit from the global open source ecosystem.

    Careers

    Join our dynamic team and shape the future of digital transformation.

    How we built our unique culture
  • Let's talk
  • EN
  • FR

React Native Has Landed

Published on March 26, 2015
Last Updated on April 7, 2021
Application Development

Introduction

On January 28th, Facebook announced React Native, a bridge to its React JS framework and the two leading mobile operating systems, iOS and Android.  Modus Create has taken the last five weeks to dive into React Native to see what it is and how to leverage it and are happy to learn that it’s available for public consumption.

(New to React JS? Check out the videos from the React JS conference here.)

In this article, we’re going to walk you through some of the key features of React Native and why we think it’s a game changer.

First impressions:

Upon opening the proverbial box, React Native felt unlike anything we’ve experienced from a developer perspective.  Writing React JS ES6 implementation and seeing it translated into a native feel was extremely pleasant.  We’ve utilized technology like Appcelerator Titanium, but this felt different.  Perhaps because it’s new? Perhaps because it’s free?

We immediately opened up the UIExplorer project and ran in the iPhone simulator. It was clear from the get-go that speed was at the forefront of the React Native developer team’s mind.  Each interaction felt smooth and fluid. You’d never know that JavaScript was driving!

A quick look under the hood:

React Native works by binding React JS implementation code as native UIKit instances.  To see this in action, we need to do a quick deep dive into the Hello World example known as “SampleApp”

We’ll start with the JSX, then dive into the Objective C code that implements this.

I’ll do a play-by-play rundown of how this works from the 5,000 foot level.  We’ll explain some things about the ES6 / JSX code in case you’re not used to seeing this syntax.   We’ll post essential links that can be leveraged as supplemental reading if you’re new to this tech stack.

  • Line #7 requires the React Native library.
  • Line #8 is known as a “destructured assignment”. In short, this takes the properties from the React object (AppRegistry, StyleSheet, etc) and makes them lexically scoped references in the program.
  • Line #15 Creates asks React JS to generate a new react Component. An anonymous object is passed to createClass(), which you can think of as a generic JavaScript prototypal object.
  • This anonymous object simply has a render function, which returns a top-level View, with two child Text components. We’ll jump back to this in a bit.
  • Line #31 Describes an instance of a React Native StyleSheet. React JS implements an extremely light version of CSS, to allow us to leverage similar, but commonly known CSS vocabulary.
  • Note that the styles defined here are used in the render object above.
  • Line #49 causes the SampleApp component that was recently created to get instantiated by the React Native runtime environment.

Here’s what the app looks like running.

To truly grasp what’s going on, we’ll take a quick gander at the AppDelegate.m code.

Below is a truncated version for easier reading.

Here’s the play-by-play:

  • Line #11 imports the RCTRootView.h header file.  This includes the React Native Root View code, which is the top-most view for your React Native applications.  This header file also includes the ever-important RCTBridge module, which is what acts as the interface between Objective C and JavaScript.
  • We’re planning on doing a deep dive into this in a future blog post, as we’ve found the implementation of this bridge to be the best one, in comparing it to other technologies like PhoneGap! So be sure to follow @ModusCreate on twitter for the news about this article.
  • Line #16 declares the NSURL instance variable known as jsCodeLocation.
  • Line #17 actually sets the variable to an instance of NSURL, which points to a local host URL. This is actually quite important to discuss.
  • For development purposes, React Native relies on a Node JS library known as React Packager.  React Packager is what is responsible for reading your JSX code and bundling it together, along with React JS and the React Native JavaScript library code.
  • If you’re curious about what the bundle looks like, check out this gist,  but don’t be scared! This is the un-minified version, including comments, whitespace, and the like.  Your ES6 JSX code is transpiled by React Packager down to ES5.
  • Line #20 is another important piece to discuss.  Here is where the instance of RCTRootView is allocated, pointing to the NSURL that was created in line #17.  This is the moment that React Native is aware of your React JS application.
  • The rest of the code is where the top-level application UIWindow instance is created, with our RCTRootView instance being added and eventually displayed.

Once fully bootstrapped, React Native code will make a call to the React Packager to obtain the bundled JSX contents, and with the internal binding of React Native, your application code is displayed.

The facebook team has done a fantastic job with the architecture of this framework.  To see changes to your JSX, simply make a change in your editor and hit CMD + R on your keyboard.

This causes a refresh of your application. React Native will destroy all of the views currently loaded in Memory, make a new call to React Packager, which in turn will include all of your new code in the bundle, and an update to your code is display immediately. This feature is powerful, as it does not require you to re-compile your application to look at changes.

A quick note on what we used to test React Native:

We opened this article with a statement that we’ve spent five weeks with React Native. We spent that time by pushing React Native to its limits and testing its extensibility.

We did this by working on a React Native video game music player, where we implemented a few custom React Native Objective C classes.  Some of these were utility classes, such as one to allow us to browse the project’s directory structure, and others were to implement a custom audio player using a C library known as Game Music Emu.  Lastly, we also experimented with including a custom audio visualizer known as EZAudio Plot.

We’ll dive into this in a future article and plan on making this an open-source example, but to give you a preview of the app, we’ve released a few videos.

For a 6 minute deep dive, you can watch this video:

What’s the verdict?:

Application developers who are familiar with web technologies will fall in love with React Native.  It’s extremely useful out of the box, and allows you to leverage well-known technologies to implement native views, affording you the speed of the full device right out of the box instead of being stuck inside of the WebView HTML5 sandbox, that we’ve all grown to love and hate.

Think about it for a moment:  Your View, Model and business logic all is developed inside of JavaScript.  The JavaScript you write ultimately implements native views, allowing you to write fast and responsive applications without the limitations of HTML5.  Organizations can, out of the gate, write applications that are rendered to native views using existing skillsets that lend themselves to the world of HTML5.

React Native won’t be the tool that will completely replace pure Objective C development (or Java for Android, for that matter). But, it gets pretty damn close!  And for a free, truly open source project, we see this as a winner.

What do I need to know to use it?:

Knowledge in ES6, React JS, JSX and some Objective C is required.  The only time you really need to go to Objective C is when you’re looking to do a custom UI component, which React Native lends itself to easily doing.

Closing comments:

In closing, we’re extremely excited to have React Native as an option for our customers.  As programmers, we find ourselves easily understanding the Facebook React ecosphere, which includes React Native.

If you’re interested in React Native, I’d say start by looking at the well-written documentation, specifically the Getting Started guide, then moving on to the Tutorial.

Posted in Application Development
Share this

Jay Garcia

Jay Garcia is co-founder of Modus Create. He is a veteran of the U.S. Air Force with 20-plus years of technology and consulting experience in leading RIA development for companies around the world. He is a co-organizer of the NoVa.JS and NYC.JS meetups, and is actively involved in the software communities that provide business frameworks and technologies, which enable rich mobile and desktop web experiences.
Follow

Related Posts

  • React Navigation and Redux in React Native Applications
    React Navigation and Redux in React Native Applications

    In React Native, the question of “how am I going to navigate from one screen…

  • React Native - React.js Goes Mobile
    React Native - React.js Goes Mobile

    <Hello World /> If you are plugged into the world of JavaScript development, no doubt…

Want more insights to fuel your innovation efforts?

Sign up to receive our monthly newsletter and exclusive content about digital transformation and product development.

What we do

Our services
AI and data
Product development
Design and UX
IT modernization
Platform and MLOps
Developer experience
Security

Our partners
Atlassian
AWS
GitHub
Other partners

Who we are

Our story
Careers
Open source

Our work

Our case studies

Our resources

Blog
Innovation podcast
Guides & playbooks

Connect with us

Get monthly insights on AI adoption

© 2025 Modus Create, LLC

Privacy PolicySitemap
Scroll To Top
  • Services
  • Work
  • Blog
  • Resources
    • Innovation Podcast
    • Guides & Playbooks
  • Who we are
    • Our story
    • Careers
  • Let’s talk
  • EN
  • FR