Hands-on React Native:
From Zero to Hero
@DmitryVinnik 1
What do I do?
@DmitryVinnik 2
About Me
@DmitryVinnik
3
About Me
Open Source Developer Advocate
@DmitryVinnik
4
@DmitryVinnik
5
About Me
Open Source Developer Advocate
Mobile Focus: Android, iOS, Hybrid
@DmitryVinnik
6
@DmitryVinnik
7
@DmitryVinnik
8
@DmitryVinnik
9
@DmitryVinnik
10
About Me
Open Source Developer Advocate
Mobile Focus: Android, iOS, Hybrid
Passionate about Open Source
@DmitryVinnik
11
Facebook Open Source
@DmitryVinnik 12
What are our goals
for today?
@DmitryVinnik 13
Goals
Basics of React Native
Goals
Basics of React Native
Essential Tools for React Native
Goals
Basics of React Native
Essential Tools for React Native
Learn Once, Write Anywhere
Agenda
RN 101
Agenda
RN 101
Agenda
RN 101
Developing
w RN
Agenda
RN 101
Developing
w RN
Agenda
RN 101
Developing
w RN
Debugging
Agenda
RN 101
Developing
w RN
Debugging
Agenda
RN 101
Developing
w RN
Testing
Debugging
Agenda
RN 101
Developing
w RN
Testing
Debugging
React Native
@DmitryVinnik 25
What is
React Native?
@DmitryVinnik 26
Framework for building
native applications with React
@DmitryVinnik 27
Framework for building
native applications with React
@DmitryVinnik 28
What are
Native Apps?
@DmitryVinnik 29
Native apps are written in the
code preliminarily used for the
device and its OS.
@DmitryVinnik 30
@DmitryVinnik 31
@DmitryVinnik 32
@DmitryVinnik 33
@DmitryVinnik 34
@DmitryVinnik 35
Framework for building
native applications with React
@DmitryVinnik 36
Framework for building
native applications with React
@DmitryVinnik 37
What is a history of
React Native?
@DmitryVinnik 38
It all started with React
@DmitryVinnik 39
React
@DmitryVinnik 40
JavaScript library for building
user interfaces
@DmitryVinnik 41
React
42
@DmitryVinnik
React
43
Declarative
@DmitryVinnik
React
44
Declarative
Component
Based
@DmitryVinnik
React
45
Learn Once,
Write Anywhere
Declarative
Component
Based
@DmitryVinnik
React Demo
@DmitryVinnik 46
47
React
@DmitryVinnik
Learn Once,
Write Anywhere
@DmitryVinnik 48
49
React
@DmitryVinnik
50
React
@DmitryVinnik
51
React React Native
@DmitryVinnik
Now we know what
React Native is
@DmitryVinnik 52
But why is it important?
@DmitryVinnik 53
Why + React Native
54
@DmitryVinnik
Why + React Native
55
Declarative
@DmitryVinnik
Why + React Native
56
Declarative
Component
Based
@DmitryVinnik
Why + React Native
57
Increased
Velocity
Declarative
Component
Based
@DmitryVinnik
Why + React Native
58
Increased
Velocity
Portability
Declarative
Component
Based
@DmitryVinnik
More practically?
@DmitryVinnik 59
@DmitryVinnik 60
Source: https://reactnative.dev/showcase
@DmitryVinnik 61
Source: https://reactnative.dev/showcase
@DmitryVinnik 62
Source: https://bit.ly/3awN3bP
@DmitryVinnik 63
Source: https://tabsoft.co/3iZJAH7
@DmitryVinnik 64
Source: https://bit.ly/3oXlKj5
@DmitryVinnik 65
Source: https://bit.ly/2Xa32cB
Now we know why
React Native
@DmitryVinnik 66
Let’s see it in action!
@DmitryVinnik 67
Agenda
RN 101
Developing
w RN
Testing
Debugging
Agenda
RN 101
Developing
w RN
Testing
Debugging
Agenda
RN 101
Developing
w RN
Testing
Debugging
React Native Demo
@DmitryVinnik 71
Let’s step back
@DmitryVinnik 72
How do we work with
React Native?
@DmitryVinnik 73
Dev Environments
74
@DmitryVinnik
Dev Environments
75
Expo CLI
@DmitryVinnik
Dev Environments
76
React Native
CLI
Expo CLI
@DmitryVinnik
Dev Environments
77
React Native
CLI
Expo CLI
@DmitryVinnik
Expo CLI
78
@DmitryVinnik
Expo CLI
79
Better for New
Mobile Devs
@DmitryVinnik
Expo CLI
80
Better for New
Mobile Devs
Quickstart
@DmitryVinnik
Expo CLI
81
No extra
OS IDEs
Better for New
Mobile Devs
Quickstart
@DmitryVinnik
Expo CLI
82
No extra
OS IDEs
Limited in using
Custom NM
Better for New
Mobile Devs
Quickstart
@DmitryVinnik
Showcase of Expo
@DmitryVinnik 83
Dev Environments
84
React Native
CLI
Expo CLI
@DmitryVinnik
Dev Environments
85
React Native
CLI
Expo CLI
@DmitryVinnik
Now we have our dev
environment ready
@DmitryVinnik 86
What’s next?
@DmitryVinnik 87
More React Native!
@DmitryVinnik 88
First
@DmitryVinnik 89
Important concept
to understand
@DmitryVinnik 90
Native Components vs
RN Core Components
@DmitryVinnik 91
@DmitryVinnik 92
Source: https://reactnative.dev/docs/intro-react-native-components
@DmitryVinnik 93
Source: https://reactnative.dev/docs/intro-react-native-components
RN Built-in Components
94
@DmitryVinnik
RN Built-in Components
95
Core
Components
@DmitryVinnik
RN Built-in Components
96
Core
Components
Properties
@DmitryVinnik
RN Built-in Components
97
Objects
Core
Components
Properties
@DmitryVinnik
RN Built-in Components
98
Objects
Core
Components
Properties
@DmitryVinnik
Core Components
99
@DmitryVinnik
Core Components
100
Basic
@DmitryVinnik
Core Components
101
Basic User Interface
@DmitryVinnik
Core Components
102
List Views
Basic User Interface
@DmitryVinnik
Core Components
103
List Views OS-Specific
Basic User Interface
@DmitryVinnik
Components’
Showcase
@DmitryVinnik 104
RN Built-in Components
105
Objects
Core
Components
Properties
@DmitryVinnik
RN Built-in Components
106
Objects
Core
Components
Properties
@DmitryVinnik
Properties
107
@DmitryVinnik
Properties
108
Image Style
and Layout
@DmitryVinnik
Properties
109
Image Style
and Layout
Shadow
@DmitryVinnik
Properties
110
Text
Image Style
and Layout
Shadow
@DmitryVinnik
Properties
111
Text View
Image Style
and Layout
Shadow
@DmitryVinnik
Properties’
Showcase
@DmitryVinnik 112
RN Built-in Components
113
Objects
Core
Components
Properties
@DmitryVinnik
RN Built-in Components
114
Objects
Core
Components
Properties
@DmitryVinnik
Object Types
115
@DmitryVinnik
Object Types
116
LayoutEvent
& PressEvent
@DmitryVinnik
Object Types
117
LayoutEvent
& PressEvent
React Node
@DmitryVinnik
Object Types
118
Rect
LayoutEvent
& PressEvent
React Node
@DmitryVinnik
Object Types
119
Rect ViewToken
LayoutEvent
& PressEvent
React Node
@DmitryVinnik
Object Types’
Showcase
@DmitryVinnik 120
RN Built-in Components
121
Objects
Core
Components
Properties
@DmitryVinnik
RN Built-in Components
122
Objects
Core
Components
Properties
@DmitryVinnik
Bringing it all together
@DmitryVinnik 123
@DmitryVinnik 124
Source: https://github.com/expo/create-react-native-app
@DmitryVinnik 125
Source: https://github.com/expo/create-react-native-app
React Native Demo
@DmitryVinnik 126
What do apps do after
they are developed?
@DmitryVinnik 127
They break!
@DmitryVinnik 128
Debugging to the rescue!
@DmitryVinnik 129
Agenda
RN 101
Developing
w RN
Testing
Debugging
Agenda
RN 101
Developing
w RN
Testing
Debugging
Agenda
RN 101
Developing
w RN
Testing
Debugging
Flipper
@DmitryVinnik 133
Extensible Mobile App Debugger:
visualize, inspect, and control
your apps from a simple desktop
interface
@DmitryVinnik 134
Flipper Demo
@DmitryVinnik 135
@DmitryVinnik 136
Source: https://youtu.be/tvqZQVI7gKw
Even more on debugging
@DmitryVinnik 137
@DmitryVinnik 138
Source: https://reactnative.dev/docs/debugging
So we’re done debugging
@DmitryVinnik 139
How do we catch
future breaks?
@DmitryVinnik 140
Testing, of course!
@DmitryVinnik 141
Agenda
RN 101
Developing
w RN
Testing
Debugging
Agenda
RN 101
Developing
w RN
Testing
Debugging
Agenda
RN 101
Developing
w RN
Testing
Debugging
@DmitryVinnik 145
Source: https://reactnative.dev/docs/testing-overview
Jest
@DmitryVinnik 146
JavaScript Testing Framework
with a focus on simplicity.
@DmitryVinnik 147
@DmitryVinnik 148
Source: https://jestjs.io/
@DmitryVinnik 149
Source: https://jestjs.io/
@DmitryVinnik 150
Source: https://jestjs.io/
Let’s take a closer look
@DmitryVinnik 151
@DmitryVinnik 152
@DmitryVinnik 153
@DmitryVinnik 154
@DmitryVinnik 155
@DmitryVinnik 156
@DmitryVinnik 157
@DmitryVinnik 158
@DmitryVinnik 159
@DmitryVinnik 160
@DmitryVinnik 161
Source: https://youtu.be/SyHzgcFefBk
Agenda
RN 101
Developing
w RN
Testing
Debugging
We covered everything
on the agenda
@DmitryVinnik 163
What’s next?
@DmitryVinnik 164
RN Many Platform Vision
165
@DmitryVinnik
RN Many Platform Vision
166
Respecting
the Platform
@DmitryVinnik
RN Many Platform Vision
167
Respecting
the Platform
Expanding to
New Platforms
@DmitryVinnik
Read more here:
@DmitryVinnik 168
@DmitryVinnik 169
Source: https://bit.ly/3oYTqwQ
What about
React Native
Community?
@DmitryVinnik 170
Join them,
they are great!
@DmitryVinnik 171
React Native
Community
172
@DmitryVinnik
RN Community
173
@DmitryVinnik
RN Community
174
Getting Help
@DmitryVinnik
@DmitryVinnik 175
Source: https://github.com/facebook/react-native/issues
@DmitryVinnik 176
Source: https://bit.ly/3lETxeW
RN Community
177
Getting Help
@DmitryVinnik
RN Community
178
Getting Help
Staying
Updated
@DmitryVinnik
@DmitryVinnik 179
Source: https://twitter.com/reactjs
@DmitryVinnik 180
Source: https://twitter.com/reactnative
RN Community
181
Getting Help
Staying
Updated
@DmitryVinnik
RN Community
182
Community
Spaces
Getting Help
Staying
Updated
@DmitryVinnik
@DmitryVinnik 183
Source: https://www.reactiflux.com/
@DmitryVinnik 184
Source: https://bit.ly/3AyxFWU
RN Community
185
Community
Spaces
Getting Help
Staying
Updated
@DmitryVinnik
RN Community
186
Community
Spaces
Contributing
Getting Help
Staying
Updated
@DmitryVinnik
@DmitryVinnik 187
Source: https://bit.ly/2YQsHYI
@DmitryVinnik 188
Source: https://reactnative.dev/help
Let’s summarize
@DmitryVinnik 189
Call to Action
@DmitryVinnik 190
Call to Action
Visit RN
Website
@DmitryVinnik 191
Call to Action
Visit RN
Website
Join RN
Community
@DmitryVinnik 192
Call to Action
Visit RN
Website
Join RN
Community
Continue
Learning
@DmitryVinnik 193
@DmitryVinnik 194
Source: https://youtu.be/wUDeLT6WXnQ
About Speaker
Twitter: @DmitryVinnik
Blog: dvinnik.dev
LinkedIn: in/dmitry-vinnik/
Email: dmitry@dvinnik.dev
195

Hands on React Native: From Zero to Hero