Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A Year With React Native
Search
Connor McEwen
November 02, 2016
0
100
A Year With React Native
Connor McEwen
November 02, 2016
Tweet
Share
More Decks by Connor McEwen
See All by Connor McEwen
Cross-Platform React Native
cmcewen
0
51
React Native Dev Tools
cmcewen
0
360
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
354
18k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
Embracing the Ebb and Flow
colly
79
4.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.3k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.4k
Web Components: a chance to create the future
zenorocha
305
41k
Building a Modern Day E-commerce SEO Strategy
aleyda
16
6.3k
Large-scale JavaScript Application Architecture
addyosmani
503
110k
How to Ace a Technical Interview
jacobian
272
22k
Transcript
Flare in Production A Year with React Native Connor McEwen
@connormcewen
About Me cmcewen @connormcewen Lead Engineer, Emerging Products Using React
Native since the beta
Flare • Small business community app • 100% React Native
• Featured in App Store + Google Play Store
Why RN? • React Component model for UI • OTA
Updates • JS everywhere • Cross-platform
The Cross Platform Dream
Reality
Platform Differences • Design choices - material design • Phone
features - hardware back button • Different APIs - permissions • Performance • Layout
Our stats • ~30k LOC in project (client + server)
• 169 total files in client directory • 4 .android.js + 4.ios.js = 4.7% • 41 .js use the Platform API = 24% imageContainer: { paddingTop: Platform.OS === 'ios' ? 5 : 10 },
Tips to my past self
Flow • Static type annotations • Catch errors at “compile”
time • Refactoring is much easier
Modern JS syntax • Use async/await, classes, etc. • This
+ flow help buy-in from native devs
Nuclide • IDE for RN • Flow + ESLint erros
CodePush • OTA Updates • OSS alternatives you can host
yourself
Redux/Redux-persist • State management • Logging much easier • Auto-sync/rehydrate
from disk
Node • Reduces mental overhead • Team is more multi-functional
• React for web apps is easier
Monorepo • New features usually require client + server side
change • Encourages everyone to review PRs
GraphQL • Client specifies the shape + data it needs
• Say goodbye to /api/v1 + /api/v2 • Especially helpful since mobile doesn’t guarantee updates
ESLint • Enforce a common style • Code maintainability
npm • Open source ecosystem is strong, but it’s a
double edged sword • Use npm shrinkwrap
React Native Versions • Stay a release or two behind
bleeding edge for stability • Forking may be necessary for specific features or bugfixes, but try to avoid it • Forking on iOS/making JS changes is much easier than Android
Team • Team should be fullstack - features, not layers
• You probably still need 1 iOS and 1 Android expert • Get involved in the open source community
New stuff • GraphQL clients: Apollo/Relay • Yarn • Exponent
• Native Animations
Stay informed • Release Notes • Reactiflux/Exponent Slack • RN
crew on Twitter
Overall • React Native was definitely the right choice for
us, and it’s only growing in popularity
Thanks! @connormcewen
[email protected]