SlideShare a Scribd company logo
1 of 28
Expo RN:
Zero to App
Tony Kharioki
5yrs of React Native
- React Native coach @ SW
- Senior FE @ PXY
- Web3 @ Tamago
- Open-source ninja
- Co-author of React Interview
Guide
- Mentor
- Not a GDE
@kharioki
X(twitter), Instagram,
GitHub, Vercel, dev.to,
LinkedIn, Polywork,
Buildspace, Reddit,
Indie Hackers
https://kharioki.com
Key Takeaways
- Why Expo => understand why your best bet
is Expo
- Sift through the noise and get started
quick
- Recruit some of you to the Expo/React
Native side
Notes :
- Cross-Platform - focussed on iOS, Android
and web
- 0-100 very fast - We are gonna start
small/easy and 🚀
- Not dwell on React as much
Case Study
A client approaches you to build a mobile app for their product
Or
Your team wants to build a mobile app to supplement their web app
Or
You lied on job application and now take-home test involves building a
mobile app
When deciding on starting a mobile app
Platform
(iOS/Android/web)
Development Cost
Budget
Learning Curve
Languages
Ecosystem
Performance
Complexity
Maintenance
Deployment
Integrations
UX
Native APIs
Speed
Tasks:
UI
Web views
Permissions
Build Pipelines
State
Management
Analytics
Typescript/
dev tools
Upgrades
Versioning
Navigation
Testing
Caching
Native Modules
Styling OTA
Deep Linking
Notifications
Group tasks in a mental model
Priority
Complexity
State Management
UI
Build Pipeline Testing
Styling
Caching
Versioning
Typescript
Analytics
Permissions
Web Views
CI/CD
Navigation
Deep Linking
Native Modules
Upgrades
Database
OTA
Updates
Languages and Tools
Platforms
Java Kotlin Swift/Objective C React
React Native
Expo
App development is hard,
React and Expo make it easy!
So Why use React Native:
- Uses Proper native views
- Custom native clients
- Cross-platform support
- Multi-threading by default - New Architecture
And what was hard about React Native:
- High learning curve
- Dependency hell
- Deployment process
- Painful upgrading
Developing mobile apps with Expo
Expo => A set of tools for building with RN
Provides tools that are common in web dev:
- Reusable prebuilt runtime like browser
- A set of native APIs
- Very fast iteration speeds
- Integrated cloud services for seamless
deploying
Out-of-the-box support on Expo
Priority
Complexity
State Management
UI
Build Pipeline Testing
Styling
Caching
Versioning
Typescript
Analytics
Permissions
Web Views
CI/CD
Navigation
Deep Linking
Native Modules
Upgrades
Database
OTA
Updates
We’ll talk about these tools:
Expo CLI
Expo SDK
Expo Go
Expo Snack
Expo Application Services (EAS)
Expo Orbit
Expo Dev Client
Expo Workflows
Now the cool stuff…
Expo CLI
Helps us interface with the bundler, start
up a dev server and other dev tasks
By installing the package globally we can
quickly create and generate a new project
We don’t need any native code to get
started
Expo SDK A set of community packages versioned
together
- Each is typed
- Supports iOS, Android and Web
- It solves the dependency issue
- Examples: expo-camera, expo-splash-
screen, expo-font, expo-image-picker,
expo-location, etc
- All the native code is built ahead of time
into Expo Go
Expo Go
Is a reusable native runtime
- Downloadable from app store or play store
- Has most APIs you’ll need to make complex
apps
- Reduces amount of time from nothing to hello
world
- Makes it as easy as web dev
Expo Snack
Is a platform designed for running React Native apps in the browser.
Code created can be saved as “snacks” and even shared
- requires no setup & can be previewed immediately on real devices
- Great for web devs unfamiliar to native apis
- RN devs who want to prototype/share an idea
- Bug reporting
- Live code sessions
Expo Application Services
These are deeply integrated cloud services for Expo and React Native
apps.
- Makes it easier to deploy mobile applications
- Submit app with single command
- It bootstraps app’s native code signing & performs validation
- Sends the source code to EAS build servers
- CI servers return binary files, or push them to stores
Expo Orbit
A cool new way of launching builds
and running snacks in your
devices/simulators
- Is a macOS menu bar app
- Install and launch builds from
EAS
- Launch Snack projects in
simulators
- Install and launch apps from
local files
Expo Dev Client
What if we need to use native code?
- We need a custom dev client like expo Go
With special set of native features
- A dev client sits between the OS and the react
app
- To add custom native code, install any RN
module and rebuild app
Something like this:
Expo Workflows
Managed Workflow:
- Let’s us avoid working with
native code directly
- Maximizes cross-platform
configuration
- iOS/Android files are
managed by Expo CLI
- To upgrade simply configure
app.json file
Bare Workflow:
- Let’s us have full control
over everything
- Updating can be a pain
- Like RN project without
Expo
Expo - Zero to App.pptx

More Related Content

Similar to Expo - Zero to App.pptx

Ionic App Platform Overview
Ionic App Platform Overview Ionic App Platform Overview
Ionic App Platform Overview Ionic Framework
 
Business model driven cloud adoption - what NI is doing in the cloud
Business model driven cloud adoption -  what  NI is doing in the cloudBusiness model driven cloud adoption -  what  NI is doing in the cloud
Business model driven cloud adoption - what NI is doing in the cloudErnest Mueller
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentDevOps.com
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...Heiko Voigt
 
Cross platform mobile app development tools review
Cross platform mobile app development tools reviewCross platform mobile app development tools review
Cross platform mobile app development tools reviewUday Kothari
 
JQuery Mobile vs Appcelerator Titanium vs Sencha Touch
JQuery Mobile vs Appcelerator Titanium vs Sencha TouchJQuery Mobile vs Appcelerator Titanium vs Sencha Touch
JQuery Mobile vs Appcelerator Titanium vs Sencha TouchSteve Drucker
 
Continuous delivery with azure app service
Continuous delivery with azure app serviceContinuous delivery with azure app service
Continuous delivery with azure app serviceNabeel Khan
 
What is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfWhat is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfShaiAlmog1
 
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019Haufe-Lexware GmbH & Co KG
 
Ordina SOFTC Presentation - TFS and JAVA, better together
Ordina SOFTC Presentation - TFS and JAVA, better togetherOrdina SOFTC Presentation - TFS and JAVA, better together
Ordina SOFTC Presentation - TFS and JAVA, better togetherOrdina Belgium
 
Mastinder singh visualcv_resume
Mastinder singh visualcv_resumeMastinder singh visualcv_resume
Mastinder singh visualcv_resumeMastinder Singh
 
Why big organizations like tesla, facebook, walmart, skype are using react na...
Why big organizations like tesla, facebook, walmart, skype are using react na...Why big organizations like tesla, facebook, walmart, skype are using react na...
Why big organizations like tesla, facebook, walmart, skype are using react na...MoonTechnolabsPvtLtd
 
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...RIA RUI Society
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyAjeet Singh Raina
 
Cross Platform Mobile Technologies
Cross Platform Mobile TechnologiesCross Platform Mobile Technologies
Cross Platform Mobile TechnologiesTalentica Software
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsSarath C
 

Similar to Expo - Zero to App.pptx (20)

Ionic App Platform Overview
Ionic App Platform Overview Ionic App Platform Overview
Ionic App Platform Overview
 
Business model driven cloud adoption - what NI is doing in the cloud
Business model driven cloud adoption -  what  NI is doing in the cloudBusiness model driven cloud adoption -  what  NI is doing in the cloud
Business model driven cloud adoption - what NI is doing in the cloud
 
Codename one
Codename oneCodename one
Codename one
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
 
dot net
dot netdot net
dot net
 
Shanling_resume
Shanling_resumeShanling_resume
Shanling_resume
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
Cross platform mobile app development tools review
Cross platform mobile app development tools reviewCross platform mobile app development tools review
Cross platform mobile app development tools review
 
Nativescript with angular 2
Nativescript with angular 2Nativescript with angular 2
Nativescript with angular 2
 
JQuery Mobile vs Appcelerator Titanium vs Sencha Touch
JQuery Mobile vs Appcelerator Titanium vs Sencha TouchJQuery Mobile vs Appcelerator Titanium vs Sencha Touch
JQuery Mobile vs Appcelerator Titanium vs Sencha Touch
 
Continuous delivery with azure app service
Continuous delivery with azure app serviceContinuous delivery with azure app service
Continuous delivery with azure app service
 
What is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfWhat is Codename One - Transcript.pdf
What is Codename One - Transcript.pdf
 
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019
 
Ordina SOFTC Presentation - TFS and JAVA, better together
Ordina SOFTC Presentation - TFS and JAVA, better togetherOrdina SOFTC Presentation - TFS and JAVA, better together
Ordina SOFTC Presentation - TFS and JAVA, better together
 
Mastinder singh visualcv_resume
Mastinder singh visualcv_resumeMastinder singh visualcv_resume
Mastinder singh visualcv_resume
 
Why big organizations like tesla, facebook, walmart, skype are using react na...
Why big organizations like tesla, facebook, walmart, skype are using react na...Why big organizations like tesla, facebook, walmart, skype are using react na...
Why big organizations like tesla, facebook, walmart, skype are using react na...
 
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
Mobile app development using PhoneGap - A comprehensive walkthrough - Touch T...
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of Technology
 
Cross Platform Mobile Technologies
Cross Platform Mobile TechnologiesCross Platform Mobile Technologies
Cross Platform Mobile Technologies
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS Apps
 

Recently uploaded

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 

Recently uploaded (20)

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 

Expo - Zero to App.pptx

  • 2. Tony Kharioki 5yrs of React Native - React Native coach @ SW - Senior FE @ PXY - Web3 @ Tamago - Open-source ninja - Co-author of React Interview Guide - Mentor - Not a GDE @kharioki X(twitter), Instagram, GitHub, Vercel, dev.to, LinkedIn, Polywork, Buildspace, Reddit, Indie Hackers https://kharioki.com
  • 3. Key Takeaways - Why Expo => understand why your best bet is Expo - Sift through the noise and get started quick - Recruit some of you to the Expo/React Native side
  • 4. Notes : - Cross-Platform - focussed on iOS, Android and web - 0-100 very fast - We are gonna start small/easy and 🚀 - Not dwell on React as much
  • 5. Case Study A client approaches you to build a mobile app for their product Or Your team wants to build a mobile app to supplement their web app Or You lied on job application and now take-home test involves building a mobile app
  • 6. When deciding on starting a mobile app Platform (iOS/Android/web) Development Cost Budget Learning Curve Languages Ecosystem Performance Complexity Maintenance Deployment Integrations UX Native APIs Speed
  • 7. Tasks: UI Web views Permissions Build Pipelines State Management Analytics Typescript/ dev tools Upgrades Versioning Navigation Testing Caching Native Modules Styling OTA Deep Linking Notifications
  • 8. Group tasks in a mental model Priority Complexity State Management UI Build Pipeline Testing Styling Caching Versioning Typescript Analytics Permissions Web Views CI/CD Navigation Deep Linking Native Modules Upgrades Database OTA Updates
  • 10. Platforms Java Kotlin Swift/Objective C React React Native Expo App development is hard, React and Expo make it easy!
  • 11. So Why use React Native: - Uses Proper native views - Custom native clients - Cross-platform support - Multi-threading by default - New Architecture
  • 12. And what was hard about React Native: - High learning curve - Dependency hell - Deployment process - Painful upgrading
  • 13. Developing mobile apps with Expo Expo => A set of tools for building with RN Provides tools that are common in web dev: - Reusable prebuilt runtime like browser - A set of native APIs - Very fast iteration speeds - Integrated cloud services for seamless deploying
  • 14. Out-of-the-box support on Expo Priority Complexity State Management UI Build Pipeline Testing Styling Caching Versioning Typescript Analytics Permissions Web Views CI/CD Navigation Deep Linking Native Modules Upgrades Database OTA Updates
  • 15. We’ll talk about these tools: Expo CLI Expo SDK Expo Go Expo Snack Expo Application Services (EAS) Expo Orbit Expo Dev Client Expo Workflows
  • 16. Now the cool stuff…
  • 17. Expo CLI Helps us interface with the bundler, start up a dev server and other dev tasks By installing the package globally we can quickly create and generate a new project We don’t need any native code to get started
  • 18. Expo SDK A set of community packages versioned together - Each is typed - Supports iOS, Android and Web - It solves the dependency issue - Examples: expo-camera, expo-splash- screen, expo-font, expo-image-picker, expo-location, etc - All the native code is built ahead of time into Expo Go
  • 19. Expo Go Is a reusable native runtime - Downloadable from app store or play store - Has most APIs you’ll need to make complex apps - Reduces amount of time from nothing to hello world - Makes it as easy as web dev
  • 20. Expo Snack Is a platform designed for running React Native apps in the browser. Code created can be saved as “snacks” and even shared - requires no setup & can be previewed immediately on real devices - Great for web devs unfamiliar to native apis - RN devs who want to prototype/share an idea - Bug reporting - Live code sessions
  • 21.
  • 22. Expo Application Services These are deeply integrated cloud services for Expo and React Native apps. - Makes it easier to deploy mobile applications - Submit app with single command - It bootstraps app’s native code signing & performs validation - Sends the source code to EAS build servers - CI servers return binary files, or push them to stores
  • 23. Expo Orbit A cool new way of launching builds and running snacks in your devices/simulators - Is a macOS menu bar app - Install and launch builds from EAS - Launch Snack projects in simulators - Install and launch apps from local files
  • 24.
  • 25. Expo Dev Client What if we need to use native code? - We need a custom dev client like expo Go With special set of native features - A dev client sits between the OS and the react app - To add custom native code, install any RN module and rebuild app
  • 27. Expo Workflows Managed Workflow: - Let’s us avoid working with native code directly - Maximizes cross-platform configuration - iOS/Android files are managed by Expo CLI - To upgrade simply configure app.json file Bare Workflow: - Let’s us have full control over everything - Updating can be a pain - Like RN project without Expo

Editor's Notes

  1. Platform - decide whether you wanna target ios, android, or both Cost - consider cost, e.g developing for ios requires a Mac, android has rules for devices testing Speed - how quickl you need to develop app UX - do you want some platform-specific feel, or a cross-platform look and feel Performance - native apps have an edge but crossplatform is ever improving Access to Native APIs - do you wanna use core apis like camera, gps, gyroscope Community - size and activeness of developer community Learning curve - for a team are yall already familiar with a particular technology Budget - native may require separate dev teams Complexity - how complex is the app gonna be Deployment and distribution - understand deployment flow for ios and android Integrations - how it integrates with 3rd party e.g firebas, aws, stripe etc
  2. But using React Native, we can write React and JavaScript that renders to each platform using the same code base. This is very similar to a mobile browser, which lets you run React DOM code on multiple different platforms, which is by design. In the old days we’d have three separate teams working in silos - obviously that is less efficient than having one team It's never been simpler to build and deploy powerful mobile apps with incredible features to both Android and iOS users all over the world.
  3. React is very intuitive for building and scaling large front-end applications. instead of drawing our views to Skia, like we would in Chrome, React Native uses proper native views This means that we can use platform optimizations like smooth scrolling, gestures, and complex animations, which is known to be a weak point in mobile browsers. We can create custom native clients that expose extra native functionality to our app. Think of this like building a browser, but with Bluetooth support added to it. And we can reuse the majority of our application code across multiple different platforms. We have the potential to scale our app to support more platforms in the future. And finally, we can utilize multiple different threads. By default, everything runs in a JavaScript thread, minimizing the amount of business logic that runs on the main UI thread. This is a pretty advanced architecture which you just get for free by simply using React Native. So this is pretty awesome.
  4. Now, React Native, of course, is not without its issues, ranging from mildly annoying to highly annoying. So let's talk about some of them. First is that in order to get a Hello World app running, just Hello World, we need to create a native runtime. This differs from web development where the native runtime is already built ahead of time and downloaded on your computer. That would be Chrome or Safari, the web browsers. And they can just load your JavaScript project inside of them. Second is that dependencies in React Native are much harder to manage than in web development. In React Native, you need to install the native code via NPM, whereas in web development, the native code is already built ahead of time into the browser. And the APIs and native code are designed by W3C, so they're very well thought out and just well constructed. Third is that your app's runtime must be distributed to the App Store or Google Play Store, with a few exceptions for testing of course. This means that you must perform code signing for your application, which is complicated and prone to errors. Finally, upgrading your React Native application is quite painful. You need some familiarity with both iOS and Android native development in order to do it, and upgrades happen pretty frequently
  5. Expo provides many tools that web developers have come to expect
  6. You can build your app locally with expo CLI or remotely with EAS CLI. To build your app locally you need native dev tools installed that is xcode and android studio As you can see, the development cycle is pretty fast and really enjoyable. Unlike React DOM development, React Native uses primitives. So instead of div, you'll use something like view. Instead of image, you'll use image. And instead of span, you'll use text. Each one of these elements then draws to the correct native view for each platform. So on iOS, a view would render to a UI view, and on web, a view would render to a div, and so on and so forth. And finally, these primitives render out to something which generally looks the same across all platforms. React Native only provides a handful of core primitives. The majority of complex features come from community packages.
  7. And this is probably the closest thing that React Native has to a W3C-type spec at the moment.
  8. This is useful because native builds require a lot of local resources, which are hard to validate and just get set up correctly. And we've also found that a lot of developers just don't have macOS machines, which is required for building on iOS apps.
  9. So now that we've talked about deployment, let's talk a little bit about native code. Up until this point, we've only covered the React code and haven't had to interact with any custom native modules, but eventually you may find that you need some custom code or third-party library that isn't available in Expo Go or the Expo SDK. Now for this, we can easily create a custom development client, which is like Expo Go, but with a special set of native features. The development client sits between the OS and the React app. So kind of think of it like a web browser, but special and native.