In this course, you will learn to build scalable and performant apps with React Native, from a Product perspective.
What You Will Learn
How to build real world apps using React Native
How to build a Design System for your app
How to do state management in React Native
Storyboarding - Build apps from a Product perspective
Understand the React Native ecosystem, the right way
Jumpstart using a template that has ~200 github stars
Architecture that separates design and development
Learn UX best practices and troubleshoot performance bottlenecks
With React Native, the most important thing is to understand the ecosystem and how it comes together to create an app. By understanding the overall architecture, we will be able to take the full of advantage the platform.
The course will start by covering the fundamentals like setting up the navigation, setting up the screens, styles, and the UI elements, before moving on to more advanced topics such as state management, crash/error reporting, setting up analytics and middlewares, debugging, and performance optimizations. We will also learn how to avoid/fix frame drops - possibly the most watched parameter of any UI application.
We will also build a Design System and will follow the Atomic Design Pattern of building layouts. A Design System primarily consists of three parts:
- UI Inventory and Patterns
- Spacing and Styles
We will cover these in detail through the modules of the course. We will also learn about the React Native best practices, how to avoid rabbit holes, and focus on building a performant app.
This is an opinionated way of building apps with React Native. The fundamentals discussed in the course, like Atomic Design Pattern and Design System, can be applied to building any UI application, not just ones using React Native.
One Complete App
The course comes with one complete eCommerce sample app that is discussed through the modules of the course.
The course builds on an open-source boilerplate template and is kept up to date with React, React Native and dependent library versions. It is also updated with the latest APIs and libraries that are introduced, like Hooks, hermes, flipper etc.
Why this course
We will take a Product based development approach to building apps. React Native abstracts out a lot of platform specific nuances, so wouldn't focusing on building the app as an experience make the most sense. The design pattern will help us exactly with that, and we will put together a structure that is both scalable and extensible. This architecture also helps keep the design separate from the development.
At the end of this course, you will not only be able to build real-world apps with React Native, but also have the fundamentals of building any enterprise UI application.
About this Course
Where does React Native fall within app categories? Should you invest in it?
Once you get the hang of the ecosystem around React Native, building apps will be the easy part. We need to consider storyboarding - the art of the right way to build apps.
Starting from the ground up? We'll look at the structure of the boilerplate code. An opinionated way to build apps, inspired by several apps in production.
Jumpstart App - Build and Run
Set up, build and run the boilerplate code, with a battle-hardened template and all the necessary tools already integrated.
Navigation and Screens
Stacked app or tabbed navigation, drawer menus and modals, and what's the best place to load user sessions, and other application data.
Icons and Badges
Set the app's launch screen and icons. Learn what image to put in native and what to bundle with React Native. Set the tab bar icons.
Learn about the screen lifecycle, and customize the app bar and the back button. We will also look at perceived load time and how to manage it.
Atomic Design Pattern
Atomic design is a mental model of how the UI should be built and laid out. It is at the core of how we are going to build our apps.
To build a design system we need to start by defining a typography; defining the fonts, colors and icons of the app.
Global styles help lay the design structure the app should follow. We'll extend our typography from the previous lesson to define styles, mainly for atoms, molecules and organisms.
Images and SVGs
Should we use images or SVGs? Should we be putting them in the React Native bundle, or on native and save OTA bandwidth? Let's look at the best practices.
We'll look at the Atomic design pattern's atoms and molecules; what they are and how they help build the design system of the app.
Built using atoms and molecules, Organisms are the complex components that deliver specific features. They are at the core of an app that delivers a consistent UX.
What happens when we press a button on an app vs when we press a button on a web page? That difference is User Experience.
API calls and Middlewares
Making API calls
The very reliable "fetch". Learn the best practices for structuring the app's services and APIs to make them resilient to change.
Middleware allows for side-effects to be executed without blocking state updates. Logger and Analytics make for perfect use cases.
AsyncStorage is an asynchronous, unencrypted, persistent, key-value storage system for React Native.
How to debug a React Native app and a look at a working combination of tools and techniques. Remote Debugger, DevTools and error boundaries.
React Native Debugger
React Native Debugger and Flipper; the evolution of debugging options at React Native.
Running on a Real Device
Running on a real device is imperative to testing how the app will actually perform.
Does your app have lot of images or tabs? Thousands of items or an endless scroll? Let's look at how to handle it best in React Native.
CodePush and Error Reporting
The one-stop solution for micro-animations in a React Native app.
React Native SVG
Look no further than React Native SVG for your SVG solution.
Some common references and special components supported by React Native, Android back handler, and a bit of know-how!
Frequently Asked Questions
What kind of approach to app development is followed?
We will be following the Atomic design pattern closely along with building a Design System for the app. These concepts are not tribal to React Native and are critical to building any UI application.
Who is this course for?
What if I need help?
Are there any prerequisites?
32 lessons (6h 46m)
1 complete project
4,190 lines of code