SlideShare uma empresa Scribd logo
1 de 21
Rise of the Hybrids
and intro to React Native
What is a hybrid application?
• A hybrid application is built with web development
skills: HTML5, CSS and JavaScript that packages
into a native container like Cordova or PhoneGap
Why?
• Cross-platform out of the box, write once run
anywhere
• Develop your crazy ideas fast, real fast
• Any web developer can become an app
developer
• Workflow + tooling = win
Hybrids
Are we there yet?
Ionic Framework
• Psuedo-commercial (or soon to be?) backing
• Feature complete (1.0)
• Components, transitions, animations and gestures
• Framework doesn't encourage customization
• Powerful tools: ionic-cli, ng-cordova, ionic-view, ionic-creator,
ionic-box, ionic-push
• Easy to learn, great documentation
• Build on Angular 1.x, but what about 2.0?
famo.us
• Targets a specific need: performance
• GPU accelerated, JavaScript and DOM rendering engine.
claims for 60 fps animations
• Seamless integration with AngularJS
• Zero components, you must build everything on your own
• Steep lurning curve, documentation is lacking
• Old news?
F7
• iOS only with complete suite of components and
native feel
• Own MVC framework / DOM library (Dom7), hard
to integrate with AngularJS
• Very good for creating iOS app prototypes
• Extensive mileage
Honorable Mention
• Topcoat (UI)
• Reapp (ReactJS, UI)
• jqmobile (eww)
• jquery ui (eww)
Performance
• Performance is the natural discriminator
• iOS webkit + Apple hardware + Apple OS - great fit. Great
performance, no brainer.
• Android device fragmentation
• Crap webviews on older devices
• Crap hardware/os vendors
• Broken framework, in general (Android)
• Alas: shitty performance
Performance
• Click latency (even after 300ms removed)
• Scroll jitter, janking
• Memory leaks (Android webviews)
• View layouting
Performance
• Android
• Nearly every framework but Ionic has crap performance
• Use alternative webview engines
• Be ready for supporting and maintaining them
• Test on devices, or:
• Go from Nexus 5 upwards
• iOS
• Be happy, pick a framework and move along
Browser Standards
• Desktop
• First, we weren’t there
• Then we felt like we’re there
• Then we realized we arent
• 3-4 years forward
• We’re sort of there
• Mobile
• We’re feeling like we’re there
• Screw it. When in doubt, use native bridges and Cordova plugins.
Native Wrappers
• Depicted as “Hybrids done right”
• Xamarin, AppCelerator Titanium, Telerik…
• Avoid browser wars, crappy webviews
• UI glitches (keyboards)
• Save a ton of time: use native styling, controls vs. rebuilding
them with hybrids
• Use your own workflow
• Better performance (?)
Native Wrappers
• The recipe:
• Wrap every native framework element in JS / C# / Ruby / Etc.
• Make bad compromises for API design, support all platforms
• Embed an engine (therefore: JS, C#, Ruby.. where’s Lua?)
• Fix bridging bugs
• Fix performance bugs due to bridging
• Always be behind the host and take heat from developers
• Always break when Apple releases new stuff
Native Wrappers
• Verdict:
• No time/focus for thought behind UI, no paradigm
shift
• If you only have C# devs, do Xamarin, JS, do
Titanium, and so on.
• Be ready to compromise on features, time to market
and performance.
• If only Native Wrappers were done right...
React Native
Introduction
What is React Native?
• React/ReactJS
• A paradigm shift in UI engineering on the Web
• MAJOR investment from Facebook (React all over your FB page)
• Wrappers done right: React brought to native.
• Runs on JavaScriptCore (iOS)
• Not a write once, run anywhere solution
• Learn once, write anywhere
• Native iOS components
• Will kill other “Native Wrapper” frameworks.
Why choose React Native?
• Workflow. Same productivity as in Hybrids, minus all the bad parts.
• (React) Declarative UI, functional, immutable = quality
• Extensible, reuse anything you’ve already built and use your favourite
native libraries
• CSS styling using and embracing flexbox
• Performance happy
• Integrate with existing apps natively (see what I did there?)
• Facebook: in production in several major apps.
• Android coming soon… (summer?)
React Native Component
Example:
var React = require('react-native');
var { ScrollView, TouchableHighlight, Text } = React;
var TouchDemo = React.createClass({
render: function() {
return (
<ScrollView>
<TouchableHighlight onPress={() => console.log('pressed')}>
<Text>Proper Touch Handling</Text>
</TouchableHighlight>
</ScrollView>
);
},
});
Where to go next?
• https://github.com/jondot/awesome-react-native
• https://facebook.github.io/react-native/
• http://www.raywenderlich.com/99473/introducing-
react-native-building-apps-javascript
• https://egghead.io/series/react-native-fundamentals

Mais conteúdo relacionado

Mais procurados

Emergent design @ Pronto 24/11/2013
Emergent design @ Pronto 24/11/2013Emergent design @ Pronto 24/11/2013
Emergent design @ Pronto 24/11/2013Varokas Panusuwan
 
Cpl12 continuous integration
Cpl12 continuous integrationCpl12 continuous integration
Cpl12 continuous integrationAmir Barylko
 
AWS Customer Presentation: EyeEm.com - Berlin Summit 2012
AWS Customer Presentation: EyeEm.com - Berlin Summit 2012AWS Customer Presentation: EyeEm.com - Berlin Summit 2012
AWS Customer Presentation: EyeEm.com - Berlin Summit 2012Amazon Web Services
 
The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6Rob Eisenberg
 
We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?STC-Philadelphia Metro Chapter
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building ProductsHayden Bleasel
 
Intro to SharePoint 2010 development for .NET developers
Intro to SharePoint 2010 development for .NET developersIntro to SharePoint 2010 development for .NET developers
Intro to SharePoint 2010 development for .NET developersJohn Ferringer
 
WebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D EngineWebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D Engineaerotwist
 
Web app development with Flask
Web app development with FlaskWeb app development with Flask
Web app development with FlaskJasim Muhammed
 
DesignTab Final Handover
DesignTab Final HandoverDesignTab Final Handover
DesignTab Final HandoverMonty Monro
 
Totally Build Apps for Free! (not really)
Totally Build Apps for Free! (not really)Totally Build Apps for Free! (not really)
Totally Build Apps for Free! (not really)Tony Hillerson
 
Case Study: Building a Conference Website with Drupal
Case Study: Building a Conference Website with DrupalCase Study: Building a Conference Website with Drupal
Case Study: Building a Conference Website with Drupalcspin
 
Spooky WordPress: Disturbingly Brilliant Uses of WP
Spooky WordPress: Disturbingly Brilliant Uses of WPSpooky WordPress: Disturbingly Brilliant Uses of WP
Spooky WordPress: Disturbingly Brilliant Uses of WPBrad Williams
 
Designing for Growth, Academy Xi
Designing for Growth, Academy XiDesigning for Growth, Academy Xi
Designing for Growth, Academy XiHayden Bleasel
 
Html5 - the new kid on the block
Html5 - the new kid on the blockHtml5 - the new kid on the block
Html5 - the new kid on the blockMarian Borca
 
Api Design Anti-Patterns
Api Design Anti-PatternsApi Design Anti-Patterns
Api Design Anti-PatternsJason Harmon
 
CPL12-Agile-planning
CPL12-Agile-planningCPL12-Agile-planning
CPL12-Agile-planningAmir Barylko
 
The Who, What, Where, When, Why, and How of APIs
The Who, What, Where, When, Why, and How of APIsThe Who, What, Where, When, Why, and How of APIs
The Who, What, Where, When, Why, and How of APIsJavaun Moradi
 

Mais procurados (20)

Emergent design @ Pronto 24/11/2013
Emergent design @ Pronto 24/11/2013Emergent design @ Pronto 24/11/2013
Emergent design @ Pronto 24/11/2013
 
Cpl12 continuous integration
Cpl12 continuous integrationCpl12 continuous integration
Cpl12 continuous integration
 
AWS Customer Presentation: EyeEm.com - Berlin Summit 2012
AWS Customer Presentation: EyeEm.com - Berlin Summit 2012AWS Customer Presentation: EyeEm.com - Berlin Summit 2012
AWS Customer Presentation: EyeEm.com - Berlin Summit 2012
 
The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6
 
We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?We’re Going Mobile! Great! Wait… What Does That Mean?
We’re Going Mobile! Great! Wait… What Does That Mean?
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building Products
 
Ansible
AnsibleAnsible
Ansible
 
Intro to SharePoint 2010 development for .NET developers
Intro to SharePoint 2010 development for .NET developersIntro to SharePoint 2010 development for .NET developers
Intro to SharePoint 2010 development for .NET developers
 
WebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D EngineWebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D Engine
 
Web app development with Flask
Web app development with FlaskWeb app development with Flask
Web app development with Flask
 
DesignTab Final Handover
DesignTab Final HandoverDesignTab Final Handover
DesignTab Final Handover
 
Totally Build Apps for Free! (not really)
Totally Build Apps for Free! (not really)Totally Build Apps for Free! (not really)
Totally Build Apps for Free! (not really)
 
Case Study: Building a Conference Website with Drupal
Case Study: Building a Conference Website with DrupalCase Study: Building a Conference Website with Drupal
Case Study: Building a Conference Website with Drupal
 
Molajo
MolajoMolajo
Molajo
 
Spooky WordPress: Disturbingly Brilliant Uses of WP
Spooky WordPress: Disturbingly Brilliant Uses of WPSpooky WordPress: Disturbingly Brilliant Uses of WP
Spooky WordPress: Disturbingly Brilliant Uses of WP
 
Designing for Growth, Academy Xi
Designing for Growth, Academy XiDesigning for Growth, Academy Xi
Designing for Growth, Academy Xi
 
Html5 - the new kid on the block
Html5 - the new kid on the blockHtml5 - the new kid on the block
Html5 - the new kid on the block
 
Api Design Anti-Patterns
Api Design Anti-PatternsApi Design Anti-Patterns
Api Design Anti-Patterns
 
CPL12-Agile-planning
CPL12-Agile-planningCPL12-Agile-planning
CPL12-Agile-planning
 
The Who, What, Where, When, Why, and How of APIs
The Who, What, Where, When, Why, and How of APIsThe Who, What, Where, When, Why, and How of APIs
The Who, What, Where, When, Why, and How of APIs
 

Destaque

Data fetching in React.js
Data fetching in React.jsData fetching in React.js
Data fetching in React.jsArtyom Trityak
 
Going Native With React
Going Native With ReactGoing Native With React
Going Native With ReactEric Nograles
 
Hybrid vs native mobile development – how to choose a tech stack
Hybrid vs native mobile development – how to choose a tech stackHybrid vs native mobile development – how to choose a tech stack
Hybrid vs native mobile development – how to choose a tech stackJacques De Vos
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react nativeModusJesus
 
React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
React Native Introduction: Making Real iOS and Android Mobile App By JavaScriptReact Native Introduction: Making Real iOS and Android Mobile App By JavaScript
React Native Introduction: Making Real iOS and Android Mobile App By JavaScriptKobkrit Viriyayudhakorn
 

Destaque (6)

Data fetching in React.js
Data fetching in React.jsData fetching in React.js
Data fetching in React.js
 
Going Native With React
Going Native With ReactGoing Native With React
Going Native With React
 
React Native
React NativeReact Native
React Native
 
Hybrid vs native mobile development – how to choose a tech stack
Hybrid vs native mobile development – how to choose a tech stackHybrid vs native mobile development – how to choose a tech stack
Hybrid vs native mobile development – how to choose a tech stack
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react native
 
React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
React Native Introduction: Making Real iOS and Android Mobile App By JavaScriptReact Native Introduction: Making Real iOS and Android Mobile App By JavaScript
React Native Introduction: Making Real iOS and Android Mobile App By JavaScript
 

Semelhante a Rise of the hybrids

React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsJimit Shah
 
Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016Jad Salhani
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Nuxeo
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIndyMobileNetDev
 
Hybrid mobile application with Ionic
Hybrid mobile application with IonicHybrid mobile application with Ionic
Hybrid mobile application with IonicMaulik Bamania
 
Joomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesJoomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesAndy_Gaskell
 
«I knew there had to be a better way to build mobile app»​
«I knew there had to be a better way to build mobile app»​«I knew there had to be a better way to build mobile app»​
«I knew there had to be a better way to build mobile app»​FDConf
 
I knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile appsI knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile appsAlius Petraška
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform libraryKostis Dadamis
 
Mobeers waterloo-2011
Mobeers waterloo-2011Mobeers waterloo-2011
Mobeers waterloo-2011Brian LeRoux
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDamir Beylkhanov
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayBojan Veljanovski
 
Greenfield Java 2013
Greenfield Java 2013Greenfield Java 2013
Greenfield Java 2013Will Iverson
 
Ionic intro + tips
Ionic intro + tipsIonic intro + tips
Ionic intro + tipsTony May
 
Post Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development PlatformsPost Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development PlatformsBarcoding, Inc.
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 

Semelhante a Rise of the hybrids (20)

DjangoSki
DjangoSkiDjangoSki
DjangoSki
 
React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile Apps
 
Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016
 
Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011Mobile ECM with JavaScript - JSE 2011
Mobile ECM with JavaScript - JSE 2011
 
Mobile app development
Mobile app development  Mobile app development
Mobile app development
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual Studio
 
Hybrid mobile application with Ionic
Hybrid mobile application with IonicHybrid mobile application with Ionic
Hybrid mobile application with Ionic
 
Joomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesJoomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiences
 
Mobile native-hacks
Mobile native-hacksMobile native-hacks
Mobile native-hacks
 
«I knew there had to be a better way to build mobile app»​
«I knew there had to be a better way to build mobile app»​«I knew there had to be a better way to build mobile app»​
«I knew there had to be a better way to build mobile app»​
 
I knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile appsI knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile apps
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
 
Cross-Platform Development
Cross-Platform DevelopmentCross-Platform Development
Cross-Platform Development
 
Mobeers waterloo-2011
Mobeers waterloo-2011Mobeers waterloo-2011
Mobeers waterloo-2011
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&Cordova
 
DIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development todayDIGIT Noe 2016 - Overview of front end development today
DIGIT Noe 2016 - Overview of front end development today
 
Greenfield Java 2013
Greenfield Java 2013Greenfield Java 2013
Greenfield Java 2013
 
Ionic intro + tips
Ionic intro + tipsIonic intro + tips
Ionic intro + tips
 
Post Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development PlatformsPost Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development Platforms
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 

Rise of the hybrids

  • 1. Rise of the Hybrids and intro to React Native
  • 2. What is a hybrid application? • A hybrid application is built with web development skills: HTML5, CSS and JavaScript that packages into a native container like Cordova or PhoneGap
  • 3. Why? • Cross-platform out of the box, write once run anywhere • Develop your crazy ideas fast, real fast • Any web developer can become an app developer • Workflow + tooling = win
  • 5. Ionic Framework • Psuedo-commercial (or soon to be?) backing • Feature complete (1.0) • Components, transitions, animations and gestures • Framework doesn't encourage customization • Powerful tools: ionic-cli, ng-cordova, ionic-view, ionic-creator, ionic-box, ionic-push • Easy to learn, great documentation • Build on Angular 1.x, but what about 2.0?
  • 6. famo.us • Targets a specific need: performance • GPU accelerated, JavaScript and DOM rendering engine. claims for 60 fps animations • Seamless integration with AngularJS • Zero components, you must build everything on your own • Steep lurning curve, documentation is lacking • Old news?
  • 7. F7 • iOS only with complete suite of components and native feel • Own MVC framework / DOM library (Dom7), hard to integrate with AngularJS • Very good for creating iOS app prototypes • Extensive mileage
  • 8. Honorable Mention • Topcoat (UI) • Reapp (ReactJS, UI) • jqmobile (eww) • jquery ui (eww)
  • 9. Performance • Performance is the natural discriminator • iOS webkit + Apple hardware + Apple OS - great fit. Great performance, no brainer. • Android device fragmentation • Crap webviews on older devices • Crap hardware/os vendors • Broken framework, in general (Android) • Alas: shitty performance
  • 10. Performance • Click latency (even after 300ms removed) • Scroll jitter, janking • Memory leaks (Android webviews) • View layouting
  • 11. Performance • Android • Nearly every framework but Ionic has crap performance • Use alternative webview engines • Be ready for supporting and maintaining them • Test on devices, or: • Go from Nexus 5 upwards • iOS • Be happy, pick a framework and move along
  • 12. Browser Standards • Desktop • First, we weren’t there • Then we felt like we’re there • Then we realized we arent • 3-4 years forward • We’re sort of there • Mobile • We’re feeling like we’re there • Screw it. When in doubt, use native bridges and Cordova plugins.
  • 13. Native Wrappers • Depicted as “Hybrids done right” • Xamarin, AppCelerator Titanium, Telerik… • Avoid browser wars, crappy webviews • UI glitches (keyboards) • Save a ton of time: use native styling, controls vs. rebuilding them with hybrids • Use your own workflow • Better performance (?)
  • 14. Native Wrappers • The recipe: • Wrap every native framework element in JS / C# / Ruby / Etc. • Make bad compromises for API design, support all platforms • Embed an engine (therefore: JS, C#, Ruby.. where’s Lua?) • Fix bridging bugs • Fix performance bugs due to bridging • Always be behind the host and take heat from developers • Always break when Apple releases new stuff
  • 15. Native Wrappers • Verdict: • No time/focus for thought behind UI, no paradigm shift • If you only have C# devs, do Xamarin, JS, do Titanium, and so on. • Be ready to compromise on features, time to market and performance. • If only Native Wrappers were done right...
  • 17. What is React Native? • React/ReactJS • A paradigm shift in UI engineering on the Web • MAJOR investment from Facebook (React all over your FB page) • Wrappers done right: React brought to native. • Runs on JavaScriptCore (iOS) • Not a write once, run anywhere solution • Learn once, write anywhere • Native iOS components • Will kill other “Native Wrapper” frameworks.
  • 18. Why choose React Native? • Workflow. Same productivity as in Hybrids, minus all the bad parts. • (React) Declarative UI, functional, immutable = quality • Extensible, reuse anything you’ve already built and use your favourite native libraries • CSS styling using and embracing flexbox • Performance happy • Integrate with existing apps natively (see what I did there?) • Facebook: in production in several major apps. • Android coming soon… (summer?)
  • 19. React Native Component Example: var React = require('react-native'); var { ScrollView, TouchableHighlight, Text } = React; var TouchDemo = React.createClass({ render: function() { return ( <ScrollView> <TouchableHighlight onPress={() => console.log('pressed')}> <Text>Proper Touch Handling</Text> </TouchableHighlight> </ScrollView> ); }, });
  • 20.
  • 21. Where to go next? • https://github.com/jondot/awesome-react-native • https://facebook.github.io/react-native/ • http://www.raywenderlich.com/99473/introducing- react-native-building-apps-javascript • https://egghead.io/series/react-native-fundamentals