SlideShare a Scribd company logo
1 of 52
ELECTRODE
NATIVE
PLATFORM
› JavaScript / React based
› Performance
› OTA updates
› Maturity / Popularity / Ecosystem
WHY REACT NATIVE ?
Ways to create a React Native app
Ways to integrate a React Native app
into an existing mobile application
› Does not modify react-native
No forking necessary
› Written in JavaScript (ES6)
Runs on Node 4.5+
› Composed of 8 standalone modules
All conveniently orchestrated and accessible through a CLI
› Versioned
2 weeks release lifecycle
ELECTRODE NATIVERandom facts
Can range from being a minimal UI
component to a small feature application.
ELECTRODE NATIVE
Is nothing more than a
JavaScript react-native app.
Can be headless, and can be updated
through OTA updates.
A MiniApp …
A mobile application
can contain multiple MiniApps
Some baseline integration problems to
solve
react-native init
scaffolds an application, not a library
react-native link (formerly rnpm)
only works with the scaffolded application
Mobile developers
npm … no thanks
node_modules based structure … no thanks
THE
CONTAINER
› Just another lib
› AAR (Android) / Framework (iOS)
› Fully generated
› Versioned
› Each native app get its own container
THE
CONTAINER
Mobile developer friendly
Initialization code
Utility code
THE
CONTAINER
What’s inside ?
Initialization code
Utility code
JavaScript bundle
THE
CONTAINER
What’s inside ?
Initialization code
Utility code
JavaScript bundle
JavaScript assets
THE
CONTAINER
✋👦💃🏃😂😉😋
😒😭😸🐟🍒🍔📖
🔨🎃🎈🎨🏈🏰🌏
What’s inside ?
Initialization code
Utility code
JavaScript bundle
JavaScript assets
Native Dependencies
THE
CONTAINER
What’s inside ?
IOS
CONFIG
ANDROID
CONFIG
PLATFORM AGNOSTIC
CONFIG
THE
CONTAINER
Native Dependencies Mini Apps
Version
react-native@0.42.0 MiniAppOne@1.0.0 1.0.0
react-native-code-push@1.17.1 MiniAppTwo@1.1.1
react-native-vector-icons@4.0.0 MiniAppThree@1.2.3
react-native-maps@0.14.0
Maven repository URL
http://your-maven-repo-url
GitHub repository URL
http://your-github-repo-url
Android AAR published to Maven iOS project (Framework) published to GitHub
Is generated, based on a configuration
Now comes the versioning hell
Only one version of any native library
can be used on the native side
MiniAppOn
e
react-native@0.42.0
react-native-code-push@.17.1
react-native-maps@0.14.0
MiniAppTw
o
react-native@0.43.0
react-native-code-push@.17.1
react-native-maps@0.14.0
Now comes the versioning hell
Only one version of any native library
can be used on the native side
MiniAppOn
e
react-native@0.42.0
react-native-code-push@.17.1
react-native-maps@0.14.0
MiniAppTw
o
react-native@0.43.0
react-native-code-push@.17.1
react-native-maps@0.14.0
ONE MANIFEST TO RULE THEM ALL
Certified Gollum free
› Master manifest stored in a GitHub public repository
› Can be overridden for advanced use cases
› One manifest per platform version
› MiniApps on same platform version are ”binary
compatible”
PLATFORM MANIFEST
But versioning hell ain’t over yet 
For OTA updates we have to ensure
that we push binary compatible
bundles
OTA publication versioning gotchas
Mobile App V1
react-native@0.42.0
react-native-maps@0.14.0
MiniAppOne@1.0.
1
react-native@0.42.0
react-native-maps@0.14.0
MiniAppOne@1.0.
0
MiniAppOne@1.0.
1
react-native@0.42.0
react-native-maps@0.14.0
MiniAppOne@1.0.
1
react-native@0.43.0
react-native-maps@0.14.0
OTA publication versioning gotchas
Mobile App V1
react-native@0.42.0
react-native-maps@0.14.0
MiniAppOne@1.0.
0
MiniAppOne@1.0.
1
MiniAppOne@1.0.
1
react-native@0.42.0
react-native-maps@0.14.0
react-native@0.43.0
react-native-maps@0.14.0
OTA publication versioning gotchas
Mobile App V1
react-native@0.42.0
react-native-maps@0.14.0
MiniAppOne@1.0.
0
MiniAppOne@1.0.
1
MiniAppOne@1.0.
1
react-native@0.42.0
react-native-maps@0.14.0
react-native@0.43.0
react-native-maps@0.14.0
MiniAppOne@1.0.
1
react-native@0.42.0
react-native-maps@0.14.0
react-native-vector-icons@4.0.0
OTA publication versioning gotchas
Mobile App V1
react-native@0.42.0
react-native-maps@0.14.0
MiniAppOne@1.0.
0
MiniAppOne@1.0.
1
MiniAppOne@1.0.
1
MiniAppOne@1.0.
1
react-native@0.42.0
react-native-maps@0.14.0
react-native@0.43.0
react-native-maps@0.14.0
react-native@0.42.0
react-native-maps@0.14.0
react-native-vector-icons@4.0.0
OTA publication versioning gotchas
Mobile App V1
react-native@0.42.0
react-native-maps@0.14.0
MiniAppOne@1.0.
0
We need a way to keep track of what
native dependencies (and versions)
are contained within any given native
application version
THE
CAULDRON
› One Cauldron per mobile application
› Easy setup – It’s just a git repo
› Store a single JSON document
THE
CAULDRON
Version management database (mostly)
THE
CAULDRON
Version
Platform
Application Walmart
Android
1.0.0 2.0.0
iOS
1.2.3
Document structure as a three level hierarchy
Version
Platform
Application Walmart
Android
1.0.0 2.0.0
iOS
1.2.3
THE
CAULDRON
Most of the data is stored in the leaves
Native Dependencies Mini Apps
Version
react-native@0.42.0 MiniAppOne@1.0.0 1.0.0
react-native-code-push@1.17.1 MiniAppOne@1.1.0
react-native-vector-icons@4.0.0 MiniAppThree@1.2.3
react-native-maps@0.14.0
isReleased platformVersion
true 1
THE
CAULDRON
To make their way inside a native app
version, all MiniApps versions have to
be first added in the Cauldron (given
that they pass compatibility checks)
CONTAINER CAULDRON
MANIFEST
QUICK RECAP
We need a way to easily transmit
messages, in a consistent way
between the native host application
and the mini-apps, but also between
the
mini-apps themselves
› Not meant to be consumed from the
native side
› Not really a uniform API
› Require quite some native plumbing
› Lack strong non primitive type support
Messaging
Anyone said Native Module ?
THE BRIDGE &
FRIENDS
› Is a native module (Java / ObjectiveC / JS)
› Can be added to any react-native project
› Expose a cohesive cross-platform API
› Offers strong non primitive type support
› Have additional features (timeouts, UI thread
dispatching, queuing ...)
Inter app messaging
THE BRIDGE
THE BRIDGE
Request
Ask for something, get a response back
Event
Notify about something, no response
Response
Just a by-product of the Request message
The three fundamentals message types
THE BRIDGETwo fundamental message properties
EVERY MESSAGE CONTAINS
A NAME
getMovieById, getAllMovies, movieListUpdated
A PAYLOAD
primitive type, array, object
AND OPTIONALY
THE BRIDGE
sendRequest(Request request,
ResponseListener<Response> responseListener)
sendRequest(requestName, { data, timeout }) : Promise<*>
sendRequest:(Request*) request
withResponseListener:(id<ResponseListener>) responseListener
A uniform API - Sending requests
THE BRIDGE
registerRequestHandler(String requestName,
RequestHandler<Bundle, Object> requestHandler)
registerRequestHandler(requestName, requestHandler)
registerRequestHandlerForName:(NSString*) requestName
requestHandler:(id<RequestHandler>) requestHandler
A uniform API - Handling requests
THE BRIDGEA uniform API - Emitting events
emitEvent(Event event)
emitEvent(eventName, { data })
emitEvent:(Event*)event)
THE BRIDGEA uniform API - Listening for events
addEventListener(String eventName,
EventListener<Bundle> eventListener)
addEventListener(eventName, eventListener)
addEventListenerForName:(NSString*) eventName
eventListener:id<EventListener> eventListener
sendRequest
Illustrating some exchanges
THE BRIDGE
Illustrating some exchanges
THE BRIDGE
sendRequest
Illustrating some exchanges
THE BRIDGE
sendRequest
sendRequest
Illustrating some exchanges
THE BRIDGE
emitEvent
Taking it one step further
THE BRIDGE
“PROCESSORS”
Adding strong non primitive type support
CODE GENERATOR
To generate APIs (including Models)
Code generation – Models
THE BRIDGE
Code generation – API Client
THE BRIDGE
THE BRIDGETo put it in a nutshell (or should I say onion ?)
npm install –g electrode-native
THE PLATFORM CLIBringing it all together
THE PLATFORM CLIA portal to the platform
THANKS!

More Related Content

What's hot

What's hot (20)

SRS for Library Management System
SRS for Library Management SystemSRS for Library Management System
SRS for Library Management System
 
Weather Display app
Weather Display appWeather Display app
Weather Display app
 
Android terminologies
Android terminologiesAndroid terminologies
Android terminologies
 
Unit Converter Java project
Unit Converter Java projectUnit Converter Java project
Unit Converter Java project
 
Retrofit library for android
Retrofit library for androidRetrofit library for android
Retrofit library for android
 
Introduction to Android and Android Studio
Introduction to Android and Android StudioIntroduction to Android and Android Studio
Introduction to Android and Android Studio
 
Project Synopsis.pdf
Project Synopsis.pdfProject Synopsis.pdf
Project Synopsis.pdf
 
Introduction to Firebase
Introduction to FirebaseIntroduction to Firebase
Introduction to Firebase
 
Location-Based Services on Android
Location-Based Services on AndroidLocation-Based Services on Android
Location-Based Services on Android
 
android report
android reportandroid report
android report
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecture
 
Creating the first app with android studio
Creating the first app with android studioCreating the first app with android studio
Creating the first app with android studio
 
Android summer training report
Android summer training reportAndroid summer training report
Android summer training report
 
Flipkart Software Requirements Specification (SRS)
Flipkart Software Requirements Specification (SRS)Flipkart Software Requirements Specification (SRS)
Flipkart Software Requirements Specification (SRS)
 
Food delivery application report
Food delivery application reportFood delivery application report
Food delivery application report
 
Database in Android
Database in AndroidDatabase in Android
Database in Android
 
Process Management in Android
Process Management in AndroidProcess Management in Android
Process Management in Android
 
SRS for online examination system
SRS for online examination systemSRS for online examination system
SRS for online examination system
 
Introduction to Firebase from Google
Introduction to Firebase from GoogleIntroduction to Firebase from Google
Introduction to Firebase from Google
 
ORGAN DONATION MANAGEMENT SYSTEM (PROJECT: ODMS)
ORGAN DONATION MANAGEMENT SYSTEM (PROJECT: ODMS)ORGAN DONATION MANAGEMENT SYSTEM (PROJECT: ODMS)
ORGAN DONATION MANAGEMENT SYSTEM (PROJECT: ODMS)
 

Similar to Electrode Native Platform

Similar to Electrode Native Platform (20)

React Native - CirebonDev
React Native - CirebonDevReact Native - CirebonDev
React Native - CirebonDev
 
Meteor presentation
Meteor presentationMeteor presentation
Meteor presentation
 
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15
 
Getting Started With React Native Presntation
Getting Started With React Native PresntationGetting Started With React Native Presntation
Getting Started With React Native Presntation
 
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
 
Introduction to Cross-Platform Hybrid Mobile App Development
Introduction to Cross-Platform Hybrid Mobile App DevelopmentIntroduction to Cross-Platform Hybrid Mobile App Development
Introduction to Cross-Platform Hybrid Mobile App Development
 
React native
React nativeReact native
React native
 
Codename one
Codename oneCodename one
Codename one
 
What is React Native and Why Should You Choose It For Mobile App
What is React Native and Why Should You Choose It For Mobile AppWhat is React Native and Why Should You Choose It For Mobile App
What is React Native and Why Should You Choose It For Mobile App
 
Why React Native is the Future?
Why React Native is the Future?Why React Native is the Future?
Why React Native is the Future?
 
Cross-platform mobile that Works - Coobers
Cross-platform mobile that Works - CoobersCross-platform mobile that Works - Coobers
Cross-platform mobile that Works - Coobers
 
Flutter vs react native – from developer point
Flutter vs react native – from developer pointFlutter vs react native – from developer point
Flutter vs react native – from developer point
 
React Native_ Pros and Cons for Mobile app development.pdf
React Native_ Pros and Cons for Mobile app development.pdfReact Native_ Pros and Cons for Mobile app development.pdf
React Native_ Pros and Cons for Mobile app development.pdf
 
React Native Guide A Hybrid Framework for Mobile Apps
React Native Guide A Hybrid Framework for Mobile AppsReact Native Guide A Hybrid Framework for Mobile Apps
React Native Guide A Hybrid Framework for Mobile Apps
 
Nuxeo & React Native
Nuxeo & React Native Nuxeo & React Native
Nuxeo & React Native
 
Introduction to React Native & Rendering Charts / Graphs
Introduction to React Native & Rendering Charts / GraphsIntroduction to React Native & Rendering Charts / Graphs
Introduction to React Native & Rendering Charts / Graphs
 
Lecture 1 Introduction to React Native.pptx
Lecture 1 Introduction to React Native.pptxLecture 1 Introduction to React Native.pptx
Lecture 1 Introduction to React Native.pptx
 
Mobile development with React Native — one year in production
Mobile development with React Native — one year in productionMobile development with React Native — one year in production
Mobile development with React Native — one year in production
 
Erica Cooksey Reactathon 2018
Erica Cooksey Reactathon 2018Erica Cooksey Reactathon 2018
Erica Cooksey Reactathon 2018
 
Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development
 

Recently uploaded

Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Recently uploaded (20)

WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAMWSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Era
 
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
 
WSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in Uganda
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfAzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 

Electrode Native Platform

Editor's Notes

  1. When it comes to creating a standalone react native app, you are spoiled for choice
  2. Let’s face it, react native is geared towards javascript developers
  3. ”le pont de Normandie”. At the time it was build (1995) the bridge was the longest cable-stayed bridge in the world,