SlideShare a Scribd company logo
Cross-platform mobile that Works - Coobers
History of
mobile app development
Generation
ios 1.0 websites,
jquery mobile
Generation
native ios /
android apps
Generation
webview
based apps
Generation
javascript engine
native apps
1st 2nd 3rd 4th
One code source for ios and android
Javascript based
Potentially easy to expand
js code
system js engine
native plugins
sdk
Based on phonegap legacy
Complex and inefficient structure
Extremely bad performance on entry
level devices
Very hard to test
Impossible to achieve commercial quality
html/css js code
system js
engine
browser’s
js engine
plugins
native
plugins
sdk
dom
As fast to native as possible
Easiest to organize and code
Cross platform to larger degree
Very easy/Seamless SDK integration
Fast debugging
Easy testing
js code
plugins native
plugins
platform js engine
sdk
Client always require
great performance
Clients always make changes during
project development
Startup changes during development
New logic is introduced on spot
Functionality is more important than
quality
React Native:
Quality in commercial projects
companies startups
App to be done quickly
App must be cheap
Mobile app development risk assessment in
commercial environment
Be ready to make a lot of
small or bigger changes
App must work fast
Be constructed according
UX rules
Use native SDK elements
Native Ionic Phonegap Xamarin React native
It’s compicated
No way
x
x
x x x x
x
x
Costs of database driven offline-product app
ios+android phone
Real hours required to
achieve good quality
360
40-60$
10-40
14400-21600$
400-2400$
490
25-45$
160-220
12250-22050$
4000-9900$
670
50-60$
60-90
33500-40200$
3000-5400$
240
35-50$
10-40
8400-12000$
350-2000$
Cost per hour
Hours to implement
yearly update
Initial cost
Yearly cost
Native Ionic Xamarin React native
Runs using native development environment
For Javascript uses same environment as Node.JS
Significantly simplifies full-stack development
You must be enrolled developer with Apple and Google
React Native:
Environment
React Native:
Integration with existing apps
React Native can be integrated
with existing app
You can embed multiple instances
You can put it anywhere, in any view, any
layer without overflow or z-index problems
Facebook app uses it in their app
for events section
App structure:
SDK
native code
react native
views
You don’t need to program using native languages
With one exception: installing addons
Windows is experimental (lacks most of extensions)
iOS / Android in version 0.34 is very consistent
Biggest problem is internal platform architecture
Test, test, test - thankfully it’s easy
React Native:
multiplatform
Test on multiple devices
Without cables
See changes instantly
If automatic update is off, you need to manually shake
device to reload code
Changes done natively require normal app reinstallation
React Native:
testing
React Native:
cloud integration
Using OpenAPI
JS API connection code can be generated
automatically
With offline support and full sync
Realm.io can be used as JS layer to multiplatform
equivalent to Apple’s CoreData
JS can use fetch for simple data download
You can use same standards in web app and mobile app
React:
different approach toward coding
React for web and React native uses States
Programmer set states
States are rendered into views
High level of abstraction allows smaller amount of code
Create efficiency problems
Changing state during animation causes frames drop
React Native:
Common issues / bottlenecks
Understand states
Understand animations
Bad efficiency due to bad coding
Very fast pace of framework development
Mayor architecture limitation: Single threat
React Native:
Integration with native code
Use NativeModules to connect to native code
Define Objective-C and Java class that bind directly to
javascript
Run!
Native code can run in react-native View without overflow
You cannot return values directly, must use callbacks
Exampleapps
Thank you!
Gdańsk (CB Madison)
ul. Jana Heweliusza 9
Campus Warszawa
ul. Ząbkowska 31
tel. +48 58 355 40 25
mail: hello@coobers.com

More Related Content

Cross-platform mobile that Works - Coobers

  • 2. History of mobile app development Generation ios 1.0 websites, jquery mobile Generation native ios / android apps Generation webview based apps Generation javascript engine native apps 1st 2nd 3rd 4th
  • 3. One code source for ios and android Javascript based Potentially easy to expand js code system js engine native plugins sdk
  • 4. Based on phonegap legacy Complex and inefficient structure Extremely bad performance on entry level devices Very hard to test Impossible to achieve commercial quality html/css js code system js engine browser’s js engine plugins native plugins sdk dom
  • 5. As fast to native as possible Easiest to organize and code Cross platform to larger degree Very easy/Seamless SDK integration Fast debugging Easy testing js code plugins native plugins platform js engine sdk
  • 6. Client always require great performance Clients always make changes during project development Startup changes during development New logic is introduced on spot Functionality is more important than quality React Native: Quality in commercial projects companies startups
  • 7. App to be done quickly App must be cheap Mobile app development risk assessment in commercial environment Be ready to make a lot of small or bigger changes App must work fast Be constructed according UX rules Use native SDK elements Native Ionic Phonegap Xamarin React native It’s compicated No way x x x x x x x x
  • 8. Costs of database driven offline-product app ios+android phone Real hours required to achieve good quality 360 40-60$ 10-40 14400-21600$ 400-2400$ 490 25-45$ 160-220 12250-22050$ 4000-9900$ 670 50-60$ 60-90 33500-40200$ 3000-5400$ 240 35-50$ 10-40 8400-12000$ 350-2000$ Cost per hour Hours to implement yearly update Initial cost Yearly cost Native Ionic Xamarin React native
  • 9. Runs using native development environment For Javascript uses same environment as Node.JS Significantly simplifies full-stack development You must be enrolled developer with Apple and Google React Native: Environment
  • 10. React Native: Integration with existing apps React Native can be integrated with existing app You can embed multiple instances You can put it anywhere, in any view, any layer without overflow or z-index problems Facebook app uses it in their app for events section App structure: SDK native code react native views
  • 11. You don’t need to program using native languages With one exception: installing addons Windows is experimental (lacks most of extensions) iOS / Android in version 0.34 is very consistent Biggest problem is internal platform architecture Test, test, test - thankfully it’s easy React Native: multiplatform
  • 12. Test on multiple devices Without cables See changes instantly If automatic update is off, you need to manually shake device to reload code Changes done natively require normal app reinstallation React Native: testing
  • 13. React Native: cloud integration Using OpenAPI JS API connection code can be generated automatically With offline support and full sync Realm.io can be used as JS layer to multiplatform equivalent to Apple’s CoreData JS can use fetch for simple data download You can use same standards in web app and mobile app
  • 14. React: different approach toward coding React for web and React native uses States Programmer set states States are rendered into views High level of abstraction allows smaller amount of code Create efficiency problems Changing state during animation causes frames drop
  • 15. React Native: Common issues / bottlenecks Understand states Understand animations Bad efficiency due to bad coding Very fast pace of framework development Mayor architecture limitation: Single threat
  • 16. React Native: Integration with native code Use NativeModules to connect to native code Define Objective-C and Java class that bind directly to javascript Run! Native code can run in react-native View without overflow You cannot return values directly, must use callbacks
  • 18. Thank you! Gdańsk (CB Madison) ul. Jana Heweliusza 9 Campus Warszawa ul. Ząbkowska 31 tel. +48 58 355 40 25 mail: hello@coobers.com