React Native Demo Project
- Getting Started
- The Demo Code
React Native requires that you have Node and NPM installed and configured. This guide will assume that you have already completed that step and have a basic understanding of both Node and React. If you need a refresher, please check out the documentation for Node and React. For a presentation on the basics of React Native, please go here.
React Native is a node module that can be installed with NPM like any other. If you choose to go that route, you will have to configure everything for your project yourself which will require a thorough understanding of Node, iOS, and Android project configuration. If you already have this knowledge, you will be able to set up the project exactly how you see fit. However, if you would rather let a tool handle that initial setup for you, then there is the React Native CLI. There are other tools for creating new React Native projects, but for the purposes of this demo, we will be using React Native CLI.
React Native CLI comes bundled with React Native or you can install it on it's own using:
$ npm i -g react-native-cli
This now global version of the cli provides you with commands to create new React Native projects. It also ties into the local cli versions inside React Native projects and give you shortcuts for many of the basic tasks you will need to do. These include:
$ react-native init <ProjectName> [options] $ react-native run-ios [options] $ react-native run-android $ react-native log-ios $ react-native log-android $ react-native bundle [options]
Behind the scenes, these commands are doing a number of different things. We will cover some of them later, but more detail can be found in React Native's documentation.
A potential downside to developing iOS mobile applications, whether natively or with React Native, is that you have to be running OSX to do it. It is a hard requirement that you be working on a device (or VM) running OSX which has Xcode installed and configured. Once that is done, it should be as easy as typing
react-native run-ios to run your application on the iOS simulator. This will run your code on the default simulator. In order to run on a specific simulated device, you can add the
--simulator="<deviceName>" option to your run ios command. The device name has to match that of a device available in Xcode. Run
xcrun simctl list devices in the console to list the available devices.
Occasionally, your project may not be able to find Xcode by default. If that is the case, run
sudo xcode-select -s /Applications/Xcode.app and your problem should be fixed.
Setting your machine up to run your project on Android could take a bit of work. If you have never done any Android development and are installing everything fresh, you will have to do some configuration that installing Xcode seems to handle for you on the iOS side.
Android projects are written using the Java JDK, dependencies are handled with Yarn, and the project is built with Gradle. You will need to make sure that each of these are installed and up to date before continuing. Next you will have to install and configure the latest version of Android Studio.
The Android SDK is installed with Android Studio but you will want to make sure it is fully updated before continuing. At the time of writing this, the Android SDK version that is required is 23 but this might change. Refer to the React Native documentation for the most up to date version. If this is not already installed and configured, you will have do do so yourself. You can do this through Android Studio's GUI by navigating in the preferences to
Appearance & Behavior > System Settings > Android SDK and installing the appropriate platform and tools.
After the appropriate SDK is installed, you will also have to create an emulator to run your project on. To do this you will need to navigate to the Android Virtual Device Manager and create a new Virtual Device. Configure it with the settings you need, save it, and you are good to go.
Unlike when running iOS, React Native does not allow you to choose the emulator you would like to run from the command line and does not start one for you. Instead, you will have to choose and manually start the emulator you want before running the project. Once the emulator is running, simply enter
react-native run-android and watch it go.
Once you have the code running in the iOS simulator or the Android emulator, the real fun can begin. One of the biggest benefits to using React Native is its Hot Reloading ability. If you have ever done mobile development before, you have probably faced the immense irritation of waiting for your project to recompile before you can test the changes you just made. React Native fixes this issue by allowing you to reload the project and immediately see the changes like in the web. Even if there were no other benefits to using React Native, this would be a selling point. By press
cmd r in the iOS simulator or typing
cmd d in the iOS simulator or
cmd m in the Android emulator. This will bring up the developer menu where you can select
Enable Remote Debugging. Your app will then reload and the remote debugging window will appear. You can turn off remote debugging by following the same commands as above and selecting
Disable Remote Debugging. If you need to debug native code, you will have to fall back on the debugging capabilities in Xcode and Android Studio.
This demo application is making use of Redux for it's store management. However, it is not necessary to know Redux to understand the React Native specific parts of this code. If you would like to learn more about Redux and how it might help you in your future development, check out their documentation.