@lucasferreira
Desenvolvimento Mobile Multiplataforma:
Uma abordagem ágil e de alto desempenho
com o framework React Native
Lucas Ferreira
http://blog.lucasferreira.com
@lucasferreira
https://github.com/lucasferreira
Diretor de Desenvolvimento e Co-founder da
React… who?
React Native
Um framework mobile open-source que possibilita ao
desenvolvedor a manutenção de uma única base de
código multiplataforma, escrita com uma linguagem
universal e de popularidade crescente:
o JavaScript
React Native
React Native
React Native
• Desenvolvimento Nativo Multiplataforma (iOS e Android)
• Open Source
• Feito pelo Facebook (mar/2015) guiados pelos conceitos do
React
• Diferente de PhoneGap ou Cordova
• Aplicativos rodam dentro do limite máximo de desempenho na
relação JS x Nativo
• Extensível
Como funciona
• Permite desenvolver apps usando apenas JavaScript
• Mesmo conceito do React: foco na UI + componentes
• Aplicações "Reais" - nada de "mobile web app" ou "HTML5
app" ou "aplicativos híbridos"
• A idéia é criar aplicações impossíveis de distinguir de aplicações
feitas em Obj-C ou Java
Como funciona
Quem faz a força é a engine JavaScriptCore do WebKit -
disponível em iOS e portada para Android
Como funciona
E com a aplicação rodando….
Vantagens + Recursos
• Open Source
• Comunidade Gigante
• Facilidade para quem já sabe JavaScript
• "Empurrãozinho" para quem é front-end e quer iniciar no dev.
Mobile
• Reaproveitamento de código -> multiplataforma
• Fácil debug / testes
• Hot Reloading (UBBER COOL!)
• Facilidade de acesso a maioria dos components nativos de UI
Getting Started
Requisitos de Plataforma:
• XCode para desenvolvimento iOS (e ter um Mac)
• Android Studio + Java para desenvolvimento Android
(Windows, Mac ou Linux)
$ npm install -g react-native-cli
Outros Detalhes:

https://facebook.github.io/react-native/releases/next/docs/getting-started.html
Getting Started
$ react-native init CriDevApp
Código
JSX x ES5 x ES6
CSS ?
Run!
$ react-native run-ios
$ react-native run-android
* Ligar o emulador antes ou ter um dispostivo disponível na porta USB
Run!
Debug
$ react-native log-ios
$ react-native log-android
+ Debug remoto com o Google Chrome
Testes
Se "somos" JavaScript, "podemos" ser testados:
• JEST
• MOCHA
• Android Unit Tests e Integration Tests
• iOS Integration Tests
• iOS Screenshot/Snapshot Tests
Outros Detalhes:

https://facebook.github.io/react-native/docs/testing.html
Quem está usando?
Facebook
Instagram
Walmart
airbnb
DEMO =D
Fontes Bacanas
• https://facebook.github.io/react-native
• https://code.facebook.com/posts/895897210527114/dive-into-react-native-
performance/
• https://www.youtube.com/watch?v=tUfgQtmG3R0
• https://medium.com/walmartlabs/react-native-at-walmartlabs-
cdd140589560#.ueonqqloc
• http://www.slideshare.net/sambhu7/introduction-to-react-native-71847255
• http://www.slideshare.net/MaartenMulders2/building-cross-platform-mobile-apps-with-
react-native-jfokus-2017
• http://www.slideshare.net/TadeuZagallo/a-tour-of-react-native
• https://engineering.instagram.com/react-native-at-instagram-dd828a9a90c7
Perguntas?
Muito Obrigado!

Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempenho com o framework React Native