React Native - The Practical Guide
Use React Native and your React knowledge and take your web development skills to build native iOS and Android Apps
Start courseMobile apps are one of the best ways to engage with users - no wonder everyone wants to build one!
Wouldn't it be great if you could use your web development knowledge, combined with your React knowledge, to build mobile apps with that?
That's exactly what React Native allows you to do!
No need to learn Java, Android, Swift, ObjectiveC or anything of that - React and JavaScript is all you need to create awesome native mobile apps that work on both Android and iOS. That's probably the reason why Instagram, AirBnB, Skype and many other global companies are using it to build their mobile apps!
With this course, you can join this league. I'll teach you all you need to create your own React Native apps, publish them to the Google Play Store and Apple App Store and dive really deep into the React Native ecosystem.
You'll learn all about the theory behind React Native, its core concepts, how to build responsive designs that work on different device sizes, how to animate React Native apps, how to navigate around, use maps and the camera and so much more!
And which better way to learn than by building a real app? We'll build the "Awesome Places" app in this course, an app where users can share amazing pictures and the location where they took them. This app will allow you to see things like using maps, the camera, user authentication, connecting to a server and much more in action.
By the end of the course, we'll of course also go through all steps required to get it into an app store.
Here's a detailed look at what you'll get:
- The core concepts and theory
- How to use React, JavaScript and native components
- Understand how to navigate in React Native apps
- A closer look at styling and animating React Native apps
- Instructions on how to use third-party libraries in your React Native app
- Detailed examples on how to use maps or an image picker
- A full user authentication flow
- How to connect to a backend server from your app
- Debugging instructions
- And so much more!
Who this course is for:
- Anyone who wants to use React to build native mobile apps
- Every mobile developer who wishes to learn only one language to write cross-platform mobile apps
- Every mobile or web developer who's interested in writing high-performance native apps with JavaScript
Course content
Section 1Getting Started
- Welcome!3:13
- What is React Native?4:22
- How React Native Works6:15
- Expo vs React Native CLI6:06
- Creating Our First React Native App7:47
- Join our Online Learning Community1:00
- Working on Our First App9:42
- React Native Apps Are Hard Work!2:53
- React Native Alternatives4:51
- Course Requirements1:26
- Course Requirement RefreshersPremium1:00
- Running the App on an Android Emulator8:36
- Running the App on an iOS Simulator3:15
- Course Outline7:41
- How to get the Most out of This Course3:53
- Useful Resources & Links1:00
Section 2Diving into the Basics [COURSE GOALS APP]
- Module IntroductionPremium0:33
- How to work with React Native ComponentsPremium2:45
- Setting Up A New ProjectPremium3:04
- Planning the AppPremium1:42
- Working with Core ComponentsPremium4:56
- Getting Started with StylesPremium7:52
- Flexbox & Layouts (Intro)Premium3:54
- React Native Flexbox Deep DivePremium12:19
- Inline Styles & StyleSheet ObjectsPremium5:12
- Quiz 1: Components, Styles, LayoutsPremium1:00
- Working with State & EventsPremium9:44
- Outputting a List of ItemsPremium3:51
- Styling List ItemsPremium3:21
- Making it Scrollable with ScrollView!Premium3:48
- A Better List: FlatListPremium7:20
- Quiz 2: More Components & ListsPremium1:00
- Splitting the App Into ComponentsPremium4:34
- Passing Data Between ComponentsPremium6:48
- Working with Touchable ComponentsPremium8:39
- Deleting ItemsPremium4:57
- Adding a Modal OverlayPremium6:06
- More Flexbox StylingPremium3:49
- Closing the Modal & Clearing InputPremium6:45
- Finishing the Modal StylingPremium5:08
- Wrap UpPremium2:29
- Useful Resources & LinksPremium1:00
Section 3Debugging React Native Apps
- Module IntroductionPremium0:32
- What To Debug & How To Debug?Premium6:18
- Handling Error MessagesPremium5:26
- Understanding Code Flow with console.log()Premium4:06
- Using the Remote Debugger & BreakpointsPremium4:03
- Working with the Device DevTools OverlayPremium2:17
- Debugging the UI & Using React Native DebuggerPremium7:25
- Wrap UpPremium1:02
- Useful Resources & LinksPremium1:00
Section 4Components, Styling, Layouts - Building Real Apps [GUESS A NUMBER APP]
- Module IntroductionPremium2:33
- Setup & App PlanningPremium3:25
- Adding a Custom Header ComponentPremium7:54
- Adding a Screen ComponentPremium5:32
- Working on the LayoutPremium7:03
- Styling a View as a "Card" Container (with Drop Shadows & Rounded Corners)Premium7:03
- React Native Styling vs CSS StylingPremium1:00
- Extracting a Card Component (Presentational Component)Premium5:57
- Quiz 3: Components & StylingPremium1:00
- Color Theming with ConstantsPremium6:03
- Configuring & Styling a TextInputPremium10:19
- Cleaning User Input & Controlling the Soft KeyboardPremium5:23
- Resetting & Confirming User InputPremium8:28
- Quiz 4: Configuring ComponentsPremium1:00
- Showing an AlertPremium2:50
- Time to Finish the "Confirmation Box"Premium7:44
- Adding Random Number GenerationPremium6:34
- Switching Between Multiple "Screens"Premium10:41
- Adding Game Features: Hints & ValidationPremium11:02
- Checking the "Win" Condition with useEffect()Premium10:11
- Finishing the Game LogicPremium5:17
- Adding Custom FontsPremium9:50
- Installing expo-fontPremium1:00
- A Synthetic Style "Cascade": Custom Wrapper Components & Global StylesPremium10:34
- Adding Local ImagesPremium4:56
- Styling ImagesPremium6:07
- Working with Network (Web) ImagesPremium2:51
- A Closer Look at the "Text" Component (and what you can do with it)Premium9:09
- vs - A SummaryPremium1:00
- Building a Custom Button ComponentPremium11:41
- Adding IconsPremium4:43
- Exploring UI LibrariesPremium2:58
- Managing Past Guesses as a ListPremium7:56
- Styling List Items & ListsPremium8:54
- ScrollView & Flexbox (Yes, that works!)Premium7:20
- Using FlatList Instead of ScrollViewPremium9:50
- Wrap UpPremium5:14
- Useful Resources & LinksPremium1:00
Section 5Responsive & Adaptive User Interfaces and Apps
- Module IntroductionPremium2:26
- Finding Improvement OpportunitiesPremium3:51
- Working with More Flexible Styling RulesPremium3:08
- Introducing the Dimensions APIPremium3:50
- Using Dimensions in "if" ChecksPremium7:51
- Calculating Sizes DynamicallyPremium7:02
- Problems with Different Device OrientationsPremium3:11
- Controlling Orientation & Using the KeyboardAvoidingViewPremium3:49
- Listening to Orientation ChangesPremium5:31
- Rendering Different LayoutsPremium7:09
- Fixing the GameOver ScreenPremium2:09
- Quiz 5: The Dimensions API & Responsive UIsPremium1:00
- Expo's ScreenOrientation APIPremium3:42
- Introducing the Platform APIPremium4:25
- Working with Platform.select() and Platform in "if" ChecksPremium7:04
- Using Platform-specific Code FilesPremium3:32
- Quiz 6: The Platform APIPremium1:00
- Using the SafeAreaViewPremium5:55
- Wrap UpPremium1:37
- Useful Resources & LinksPremium1:00
Section 6Navigation with React Navigation [THE MEALS APP]
- Module IntroductionPremium1:13
- Planning the AppPremium4:00
- Screen & Navigation SetupPremium13:27
- Getting Started with the FormPremium5:36
- Redux & Adding PlacesPremium7:29
- Outputting a List of PlacesPremium6:36
- Accessing the Device CameraPremium17:26
- Configuring the Camera AccessPremium5:10
- Using the Picked ImagePremium4:59
- Storing the Image on the FilesystemPremium8:29
- Diving into SQLite for Permanent Data StoragePremium10:24
- Storing Data in the Local DatabasePremium7:52
- Fetching Data from the Local DatabasePremium7:00
- Getting the User LocationPremium11:00
- Showing a Map Preview of the LocationPremium13:24
- More on Environment VariablesPremium1:00
- Displaying an Interactive MapPremium8:31
- Adding a MarkerPremium5:27
- Making the Picked Location "Saveable"Premium7:22
- Storing Picked PlacesPremium2:50
- Updating the Location Screen When the Location ChangesPremium4:25
- Storing the AddressPremium7:33
- Displaying the "Details" ScreenPremium6:28
- Finishing the "Map" ScreenPremium6:19
- Running the App on iOSPremium3:05
- Running the App on AndroidPremium1:21
- Wrap UpPremium1:35
- Useful Resources & LinksPremium1:00
Section 7State Management & Redux
- Module IntroductionPremium1:04
- What is State & What is Redux?Premium4:08
- Redux & Store SetupPremium10:58
- Selecting State SlicesPremium8:30
- Redux Data & Navigation OptionsPremium5:04
- Dispatching Actions & Reducer LogicPremium13:55
- Switching the Favorites IconPremium7:09
- Rendering a Fallback TextPremium2:43
- Adding Filtering LogicPremium6:16
- Dispatching Filter ActionsPremium6:08
- Debugging Redux in React Native AppsPremium1:00
- Wrap UpPremium1:33
- Useful Resources & LinksPremium1:00
Section 8Time to Practice - THE SHOP APP
- Module IntroductionPremium1:34
- Planning the AppPremium10:42
- Creating the Basic Project SetupPremium6:08
- The Products Overview ScreenPremium9:49
- Setting Up a NavigatorPremium10:41
- Styling the Product ItemsPremium19:15
- Adding Touchable ComponentsPremium12:26
- Working on the Product Details ScreenPremium5:56
- Using Custom FontsPremium5:10
- Adding Items to the CartPremium21:08
- Implementing Header ButtonsPremium18:29
- Outputting Cart ItemsPremium11:48
- Adding Logic to Delete ItemsPremium10:33
- Adding Redux Logic for OrdersPremium9:09
- SideDrawer & The Orders ScreenPremium13:07
- Clearing the CartPremium1:43
- Styling Order ItemsPremium12:43
- Making the "Show Details" Button WorkPremium8:55
- Building the "User Products" ScreenPremium9:36
- Reorganizing the ProductItem ComponentPremium5:29
- Deleting ItemsPremium7:57
- Adding Basic Editing & Navigation LogicPremium6:37
- Handling User InputPremium12:05
- Using Params to Submit User InputPremium2:16
- Dispatching Actions for Creating & UpdatingPremium15:34
- Time to Improve the App!Premium9:22
- Wrap UpPremium1:12
- Useful Resources & LinksPremium1:00
Section 9Handling User Input
- Module IntroductionPremium0:59
- Configuring TextInputsPremium8:21
- Adding Basic ValidationPremium5:45
- Getting Started with useReducer()Premium12:12
- Finishing the Merged Form & Input ManagementPremium12:59
- Moving Input Logic Into A Separate ComponentPremium11:18
- Connecting Input Component & FormPremium14:47
- Tweaking Styles & Handling the Soft KeyboardPremium5:28
- Alternatives & Wrap UpPremium2:06
- Useful Resources & LinksPremium1:00
Section 10Http Requests & Adding a Web Server + Database
- Module IntroductionPremium1:03
- Setup & How To Send RequestsPremium3:27
- Installing Redux ThunkPremium2:03
- Storing Products on a ServerPremium9:05
- Fetching Products from the ServerPremium7:53
- Displaying a Loading Spinner & Handling ErrorsPremium13:03
- Setting Up a Navigation ListenerPremium5:15
- Updating & Deleting ProductsPremium4:47
- Handling Additional ErrorsPremium9:31
- Storing OrdersPremium4:34
- Displaying an ActivityIndicatorPremium3:12
- Fetching Stored OrdersPremium8:15
- Adding "Pull to Refresh"Premium4:12
- Wrap UpPremium1:07
- Useful Resources & LinksPremium1:00
Section 11User Authentication
- Module IntroductionPremium0:44
- How Authentication WorksPremium3:36
- Implementing a Basic Login ScreenPremium14:57
- Adding User SignupPremium12:44
- Logging Users InPremium6:26
- Managing the Loading State & ErrorsPremium9:01
- Using the TokenPremium11:04
- Mapping Orders to UsersPremium7:42
- Improved Mapping (Scoping)Premium1:14
- Implementing "Auto Login"Premium16:50
- Adding LogoutPremium7:20
- Implementing "Auto Logout"Premium15:26
- Auto-Logout & Android (Warning)Premium1:00
- Wrap UpPremium1:03
- Useful Resources & LinksPremium1:00
Section 12Native Device Features (Camera, Maps, Location, SQLite, ...) [GREAT PLACES APP]
- Module IntroductionPremium1:13
- Planning the AppPremium4:00
- Screen & Navigation SetupPremium13:27
- Getting Started with the FormPremium5:36
- Redux & Adding PlacesPremium7:29
- Outputting a List of PlacesPremium6:36
- Accessing the Device CameraPremium17:26
- Configuring the Camera AccessPremium5:10
- Using the Picked ImagePremium4:59
- Storing the Image on the FilesystemPremium8:29
- Diving into SQLite for Permanent Data StoragePremium10:24
- Storing Data in the Local DatabasePremium7:52
- Fetching Data from the Local DatabasePremium7:00
- Getting the User LocationPremium11:00
- Showing a Map Preview of the LocationPremium13:24
- More on Environment VariablesPremium1:00
- Displaying an Interactive MapPremium8:31
- Adding a MarkerPremium5:27
- Making the Picked Location "Saveable"Premium7:22
- Storing Picked PlacesPremium2:50
- Updating the Location Screen When the Location ChangesPremium4:25
- Storing the AddressPremium7:33
- Displaying the "Details" ScreenPremium6:28
- Finishing the "Map" ScreenPremium6:19
- Running the App on iOSPremium3:05
- Running the App on AndroidPremium1:21
- Wrap UpPremium1:35
- Useful Resources & LinksPremium1:00
Section 13Building Apps Without Expo
- Module IntroductionPremium3:32
- Alternatives to ExpoPremium6:01
- Building Apps with Just the React Native CLIPremium9:26
- Live Reload and RN CLI AppsPremium1:00
- Adding Native Modules to Non-Expo AppsPremium8:55
- Understanding Expo's "Bare Workflow"Premium8:35
- Ejecting from Expo's "Managed Workflow"Premium10:59
- When To Use Which?Premium5:28
- Useful Resources & LinksPremium1:00
Section 14Publishing React Native Apps
- Module IntroductionPremium0:41
- Deployment StepsPremium4:31
- Configuring the App & PublishingPremium8:09
- Configuring Icons & The Splash ScreenPremium9:13
- Working with Offline Asset BundlesPremium3:03
- Using "Over the Air Updates" (OTA Updates)Premium7:43
- Building the Apps for Deployment (iOS & Android)Premium17:27
- Publishing iOS Apps without ExpoPremium10:23
- Configuring Android AppsPremium1:00
- Publishing Android Apps without ExpoPremium7:21
- Useful Resources & LinksPremium1:00
Section 15Updating to React Navigation 5+
- Module IntroductionPremium1:07
- What Changed?Premium3:55
- Preparing the ProjectPremium4:02
- More Information & Updating the Project DependenciesPremium2:08
- From the "Registry-like" to a "Component-based" ApproachPremium10:35
- Starting the Migration ProcessPremium11:37
- Converting more Stack NavigatorsPremium6:49
- Adding Drawer NavigationPremium8:12
- Replacing the Auth Flow & Switch NavigatorPremium12:50
- Logout & Further FixesPremium4:57
- Extracting ParamsPremium7:47
- Setting Options DynamicallyPremium3:02
- Remaining MigrationsPremium3:02
- A Summary Of All ChangesPremium5:47
- Useful Resources & LinksPremium1:00
Section 16Push Notifications
- Module IntroductionPremium1:18
- Understanding NotificationsPremium3:36
- Sending Local NotificationsPremium8:16
- Getting PermissionsPremium7:34
- Controlling How Notifications Are DisplayedPremium3:36
- Reacting to Foreground NotificationsPremium4:26
- Reacting to Background NotificationsPremium4:13
- How Push Notifications WorkPremium3:39
- Expo & Push NotificationsPremium6:45
- Getting a Push TokenPremium4:44
- Sending Push NotificationsPremium2:59
- Using Expo's Push ServerPremium4:29
- More on Push TokensPremium5:49
- Adding Push Notifications to the Shop App (1/3)Premium10:06
- Adding Push Notifications to the Shop App (2/3)Premium14:13
- Adding Push Notifications to the Shop App (3/3)Premium2:37
- Push Notifications in non-Expo Managed AppsPremium1:00
- Module ResourcesPremium1:00
Section 17Course Roundup & Next Steps
- Roundup & Next StepsPremium3:52
Section 18JavaScript Refresher
- Module IntroductionPremium1:36
- JavaScript in a NutshellPremium2:35
- Refreshing the Core SyntaxPremium4:34
- let & constPremium2:27
- Arrow FunctionsPremium5:17
- Objects, Properties & MethodsPremium3:19
- Arrays & Array MethodsPremium4:16
- Arrays, Objects & Reference TypesPremium2:13
- Spread Operators & REST ParametersPremium6:40
- DestructuringPremium5:37
- Async Code & PromisesPremium10:28
- Template LiteralsPremium1:00
- Wrap UpPremium0:50
- Useful Resources & LinksPremium0:50
Section 19React Refresher
- Module IntroductionPremium1:12
- What is React?Premium3:13
- Setting Up a Starting ProjectPremium4:03
- Understanding JSXPremium5:31
- Understanding ComponentsPremium2:50
- Working with Multiple ComponentsPremium7:04
- Working with PropsPremium6:52
- Rendering Lists of DataPremium4:30
- Handling EventsPremium7:24
- Child Parent CommunicationPremium4:38
- Managing StatePremium5:54
- More on StatePremium4:20
- Fetching User Input (Two-way Binding)Premium5:52
- Wrap UpPremium2:11
- Useful Resources & LinksPremium1:00
Course instructor
Maximilian Schwarzmüller
As a self-taught professional I really know the hard parts and the difficult topics when learning new or improving on already-known languages. This background and experience enable me to focus on the most relevant key concepts and topics. My track record of many 5-star rated courses, more than 1,000,000 students worldwide as well as a successful YouTube channel is the best proof for that.
The most rewarding experience for me is to see how people find new, better jobs, build awesome web applications, work on amazing projects or simply enjoy their hobby with the help of my content. That's why, together with Manuel Lorenz, I founded Academind to offer the best possible learning experience and to share the pleasure of learning with our students.