Retour d'expérience
React Native
-
Présentation de React Native
History
- Announced by Facebook in March 2015
- Used on iOS in production by Facebook since 2015
- Android support since late 2015
61 000 stars on GitHub in March 2018
- #13 open-source repository on GitHub March 2018
Usage in the wild
- Used by instagram since 2017
https://engineering.instagram.com/react-native-at-instagram-dd828a9a90c7
- Used by Airbnb since 2016
https://www.youtube.com/watch?v=tUfgQtmG3R0
- Used by Walmart, Bloomberg, Tesla
http://facebook.github.io/react-native/showcase.html
How it works
Not based on "WebViews"
React Native (iOS/Android)
JavaScript engine
Javascript code (React)
How it works
React Native native code
JavaScript engine
App code (React)
Platform (iOS/Android)
React Native APIs
native modules
native
Javascript
bridge
How it works
App code (React)
- Application entirely written in Javascript (ES2018)
- React Native exposes native components (View, Text, TouchableOpacity...)
- You can use native APIs provided by React Native (Geolocation, CameraRoll...)
- Flowtype or optionally Typescript
- Unit testing with Jest (or Mocha optionally)
- e2e testing with Detox or native solutions
Key features
- Platform-specific UI components
- Native mobile gesture
- Fluid transitions
- Native effects (e.g. "Ripple" effects)
Native-like User Experience
Apps can't be distinguished from a native app
- Javascript code is isolated from native rendering
Performance
Applications are rendered at 60fps
- Native rendering is done asynchronously (bridge)
- Any "lag" in business logic/heavy computation won't slowdown the interface
Single codebase
- Components can be specialized for a platform
A single app exists and has to be maintained
- 90% code reuse between iOS and Android
- A single development team can deliver on iOS and Android
Fast learning curve
Web skills can be ported to React Native
- ~3 weeks onboarding for a new developer
- Most engineers won't need to learn specific iOS or Android development skills
- ~1 week onboarding for a React.js developer
Comparison with PhoneGap/Cordova (or Web Views)
Comparison with Phonegap/Cordova
- Not based on "WebViews" (native app feeling)
React Native is:
- Easier to dig into native code (e.g: integrating Zendesk)
Harder to:
- Push changes without store submission (can still be done with CodePush)
- Development should be done on a Mac for iOS
During development
- Large ecosystem, lots of components
React Native ecosystem:
Harder to:
- Debugging is done with Chrome Debugger but not as complete as with webviews
- Developers must sometimes deal with native tooling (XCode, Android Studio)
- Most APIs (geolocation...) are backed in React Native
- Regular upgrades, needs care from developers
Retours sur des problématiques rencontrées
RN inside a native app
- Integration is invisible for end user
- Need to onboard existing native developers
3rd party SDKs
- Stripe
- Firebase Analytics
- Zendesk
- Push notifications (Batch.com...)
Reuse of codebase for web apps
- We can share all business logic
Same code for a native app and a webapp?:
- Same for API
Feasible, but require adaptations for:
- User interactions
- Routing
- Same for components implementing business rules
Reuse of codebase for web apps
React Native for Web
https://github.com/react-native-web-community
React Native for Web Community (BAM)
Slides
https://slides.com/florianrival
Retour d'expérience React Native
By Florian Rival
Retour d'expérience React Native
Retour d'expérience sur l'utilisation de React Native à BAM
- 1,916