SlideShare a Scribd company logo
Meero
Meero
• Create dedicated tools for photographers to make their life easier

• Prospecting

• Community

• No photo editing during production process
Objective Results
• Teach our algorithm the different
improvements performed by image
professionals
• Make it resistant to variations in
lighting (such as white balance ),
and image flaws (such as noise or
motion blur)
How we designed our iOS and
Android apps with same
architecture
And without cross-platform frameworks
Plan
• History

• State of cross-platform

• Considering developing iOS and Android apps in the same way 

• Devsign thinking

• Future 

• Conclusion
History
2007 2011 2014 2015 2016 2017 2018 2019
Android
iOS
Fragment RecyclerView
UIAlertViewController
Widget / Extension
UIStackView
SFSafariViewController

ForceTouch
Permissions
CustomsTabs
AppShortcuts
ConstraintLayout
Room
ARKit
Files
HomeIndicator
Notification provisionnal
Navigation arch
ARCore
HomeIndicator
SwiftUI
Combine
Geoloc permission
Darkmode
Compose
Flow
Geoloc permission
Darkmode
State of cross-platform
State of cross-platform
Mobile market development is still looking after the best cross-platform
solutions:

• PhoneGap/Cordova, Titanium, Appcelerator, SenchaTouch…

• ReactNative, NativeScript, RubyMotion, …

• Flutter, KotlinNative
State of cross-platform
Sharing
Business and UI logic code
Reducing
Time of development by
reducing the time to market
Ownership
Of the rendering engine
Updating
OTA with code push
Designing
Isomorphic application
Offering
Simple way to target
and develop for specific platform
State of cross-platform
Hard to choose
Because too many choices
Need to wait
Developers to give access to
the latest native SDK features
Reduce
Or equalize native performances.
Increase size of apps
Hidden cost
With additional bugs, limitations
new skills needed, technical stack
Are dropped
Titanium, Xamarin, Angular? (Ionic)
Subjected
To the rules of app stores for code push restrictions
Api violations (Electron) or webview shell
• Legacy projects
• Not started at the same time
• Started with different choices
• Beliefs and experiences of
developers.
iOS / Android apps Why ?
• Two different architectures
• Functional differences on same
features
Is it possible to write
cross-native apps in 2020 ?
Languages
• Optionnals
• Sealed class, data class
• Extensions, interface implementation, generics
• Immutabilité
• map - reduce - join - filter
• Delegated properties (by)
• Spannable string
• let?. / val ?: return
• …
• Optionnals
• Enums, structs
• Extensions , protocol extension, generics
• Immutabilité
• map - reduce- join - filter
• Property wrappers (@)
• Attributed string
• if let / guard let
• …
Swift code
Kotlin code
Appcode et Android Studio
😏
iOS et Android components
• Activity, Fragment, RecyclerView

• ConstraintLayout, LinearLayout, Compose

• Permission

• WorkManager

• Notifications (silent, local, push)

• DialogFragment / IntentChooser

• ARCore / Sceneform

• CustomTabs

• Room

• …
• ViewController, ChildViewController, UITableView
• Autolayout, UIStackView, SwiftUI
• Permissions
• Background Modes
• Notifications (silent, local, push)
• UIAlertViewController / UIActivityViewController
• ARKit / SceneKit
• SFSafariViewController
• CoreData
• …
ForgotPasswordViewController.swift ForgotPasswordActivity.kt
Librairies
• Share same apis

• Same behaviours
• Needs
• Maintenance, security, …
• Integration complexity
• Cost saving
• Licence
• …
Specific criteriaCommon criteria
• RxJava / RxAndroid
• Dagger2 / Koin
• Mockito - Spek - Atrium / AssertK
• Picasso / Glide / Coil
• Retrofit
• MPAndroidChart
• Realm
• …
• RxSwift
• Swinject
• Cuckoo - Quick - Nimble
• KingFisher / SDWebImage
• Alamofire router
• Charts
• Realm
• …
Mockito test code
Cuckoo test code
Is it possible to write cross-native apps in 2020 ?
Architectures
Architectures
• MVC, MVP, MVVM, MVI

• Clean architecture

• Router / Coordinators

• Delegation

• Decorators
Is it possible to write cross-native apps in 2020 ?
• Modifications must be done twice
• Rigorous respect of naming
conventions, folder tree, …
• Complicated to be 100%
• Synchronous update to avoid
divergences
Pros Cons
• Common reflexion
• Fatest bugs detection, same bugs
• Seamless switch from iOS to
Android, quick learning curve
• Same functional behaviours
• No architecture debate during
reviews between platform
Tooling
• Ktlint, AndroidLint
• Ktlint (--format)
• Bitrise, Fastlane, Danger, …
• SwiftLint
• SwiftFormat
• Bitrise, Fastlane, Danger, …
Team
Team
• At least one Team Lead

• Guardian of the rules and process

• Experience on both platform

• Developers

• Knowledge at least on one platform

• Motivated to learn developing / reviewing the other platform

• Open minded

• Curious
• New constraints for work
• Must hire people that can embrace
this vision of cross-native
development
• Communication is mandatory
Pros Cons
• Share ownership of the apps
• Share technic knowledges
• Co-construction
• Create communication
• A “single” team
• Natural for feature team
How to succeed ?
Devsign thinking
Devsign thinking
• Design thinking for developers
• Development cycle in three steps
Reflexion
DevelopmentCross reviews
First step - reflexion
• Discussing and picking about the best solution for design the new
feature in the same way on both platform
• During grooming and / or specific technical meeting
• At least one iOS and Android developer
Second step - development
• Keys to achieve:

• Respect the technical choices and decisions

• Communication for problems or enhancement
Step three - cross reviews
• iOS code should be reviewed by Android developer for the same feature

• Should be reviewed by third person to improve or definitely validate

• Cross testing 

• Communication !

• No compromise without validation from both parties
Conclusion
• Some step could be complicated to
perform on big legacy project
• Communication
• Technical debates could be long
• Bigger is the feature, longer will be
the review
Benefits Obstacles
• Easy to perform for a new project
• Force conventions
• Opportunity for refactoring legacy
portion of code
• Opportunity for develop on other
platform
• Makes you more valuable, new career
opportunities
Once you tried it,
you can’t go
Future
• Use Danger to automatically check naming function, files and folders trees

• Continue with web front-development for same features (react native
strength)

• Prepare the field if tomorrow we really have to deal with ReactNative,
Flutter or KotlinNative.
Thank you
+ = ❤
Christopher SAEZ
Mobile developer @meero
christopher.saez@meero.com
https://www.linkedin.com/in/saezchristopher/

More Related Content

PDF
Cv dec 28-2018-mohammad-ashfaq
PDF
LINE Developer Day 2019 how to optimize bot development lifecycle with dev ops
PDF
Introduction to Spock: A Unit Testing Framework
PDF
The Seven Deadly Coding Sins Slides
PDF
Back to basics - PHPUnit
PPTX
Test Driven Development
DOCX
Andrew spoden Software Engineer resume
PDF
Woodoo - an open source mobile testing framework
Cv dec 28-2018-mohammad-ashfaq
LINE Developer Day 2019 how to optimize bot development lifecycle with dev ops
Introduction to Spock: A Unit Testing Framework
The Seven Deadly Coding Sins Slides
Back to basics - PHPUnit
Test Driven Development
Andrew spoden Software Engineer resume
Woodoo - an open source mobile testing framework

What's hot (20)

PPTX
Selenium
PDF
Continuous code quality_in_java
PPTX
Getting Started with Puppet Bolt
PDF
Step away from that knife!
PPTX
Going literate in Amadeus JUC Berlin June 25th 2014
DOCX
Dusty Parrott Resume
PDF
DevOps Automation with Puppet Bolt & Puppet Enterprise
PPTX
Virtual Puppet Ecosystem Workshop - March 18,2020
PPTX
Python as Web Development
PPTX
Easy Cross-Platform PowerShell Automation with Puppet Bolt
PPTX
Flutter: Future of App Development
PPTX
Fastlane
PDF
Groovy Testing Aug2009
PDF
Model For Applying Unit Test
PDF
IoT em tempo real com Firebase e JavaScript
PPTX
Continuous Integration for Beginners
PPT
Continuous Integration
PPTX
Test driven development with sonarQube
PPTX
[Japan Selenium User Community in Remote] Test Automation Journey
Selenium
Continuous code quality_in_java
Getting Started with Puppet Bolt
Step away from that knife!
Going literate in Amadeus JUC Berlin June 25th 2014
Dusty Parrott Resume
DevOps Automation with Puppet Bolt & Puppet Enterprise
Virtual Puppet Ecosystem Workshop - March 18,2020
Python as Web Development
Easy Cross-Platform PowerShell Automation with Puppet Bolt
Flutter: Future of App Development
Fastlane
Groovy Testing Aug2009
Model For Applying Unit Test
IoT em tempo real com Firebase e JavaScript
Continuous Integration for Beginners
Continuous Integration
Test driven development with sonarQube
[Japan Selenium User Community in Remote] Test Automation Journey
Ad

Similar to Is it possible to write cross-native apps in 2020 ? (20)

PDF
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
KEY
Jan Kroon's talk @mdevcon 2012
PPTX
iOS vs android .pptx
PDF
Kotlin Multiplatfom In Action
PPTX
Flutter Vs Kotlin Vs Swift.pptx
PDF
Top Cross-Platform App Development Frameworks for 2020
PDF
Cross-platform App Development Company
PDF
Expedia 3x3 presentation
DOCX
3701ICT Mobile Application Development.docx
PDF
Android vs iOS.pdf
PPTX
Kotlin Multiplatfom In Action
PPT
State ofappdevelopment
PDF
The Xactimate Insurance App: Bringing 10,000,000 Lines of Code to Mobile, Nic...
PPTX
Best Tools for Mobile App Development in 2025
PPTX
Introduction to Mobile Development
PDF
Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary Study
PPTX
Cross-Platform App Development in 2025 A Complete Guide.pptx
PPTX
From React to React Native - Things I wish I knew when I started
PPTX
Challenges in Cross-Platform Mobile Applications: Insights and Strategies
PPTX
Field enablement roadshow - Real World Solutions - John Pelak
Xamarin Technical Assessment Against Native for Cross Platform Mobile Develop...
Jan Kroon's talk @mdevcon 2012
iOS vs android .pptx
Kotlin Multiplatfom In Action
Flutter Vs Kotlin Vs Swift.pptx
Top Cross-Platform App Development Frameworks for 2020
Cross-platform App Development Company
Expedia 3x3 presentation
3701ICT Mobile Application Development.docx
Android vs iOS.pdf
Kotlin Multiplatfom In Action
State ofappdevelopment
The Xactimate Insurance App: Bringing 10,000,000 Lines of Code to Mobile, Nic...
Best Tools for Mobile App Development in 2025
Introduction to Mobile Development
Ecological Impact of Native vs. Cross-Platform Mobile Apps: a Preliminary Study
Cross-Platform App Development in 2025 A Complete Guide.pptx
From React to React Native - Things I wish I knew when I started
Challenges in Cross-Platform Mobile Applications: Insights and Strategies
Field enablement roadshow - Real World Solutions - John Pelak
Ad

More from Chris Saez (8)

PDF
Periphery: Clean your dead code on iOS once for all
PDF
Add dynamic badges into your pull request and increase your productivity
PDF
Add badges to your pull request and increase your productivity
PDF
Pourquoi versionner ses githooks.pdf
PDF
Slidrs - google cloud anchors
PDF
Api mobile first
PPTX
Ibeacon, une technologie à fort enjeux business
PDF
L’environnement du développement mobile iOS & Android
Periphery: Clean your dead code on iOS once for all
Add dynamic badges into your pull request and increase your productivity
Add badges to your pull request and increase your productivity
Pourquoi versionner ses githooks.pdf
Slidrs - google cloud anchors
Api mobile first
Ibeacon, une technologie à fort enjeux business
L’environnement du développement mobile iOS & Android

Recently uploaded (20)

PPTX
bas. eng. economics group 4 presentation 1.pptx
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PDF
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
PDF
composite construction of structures.pdf
PPTX
CH1 Production IntroductoryConcepts.pptx
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PPTX
UNIT 4 Total Quality Management .pptx
PPTX
Sustainable Sites - Green Building Construction
PPTX
Geodesy 1.pptx...............................................
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PPT
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PDF
PPT on Performance Review to get promotions
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPT
Mechanical Engineering MATERIALS Selection
bas. eng. economics group 4 presentation 1.pptx
Operating System & Kernel Study Guide-1 - converted.pdf
Model Code of Practice - Construction Work - 21102022 .pdf
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
composite construction of structures.pdf
CH1 Production IntroductoryConcepts.pptx
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
UNIT 4 Total Quality Management .pptx
Sustainable Sites - Green Building Construction
Geodesy 1.pptx...............................................
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
R24 SURVEYING LAB MANUAL for civil enggi
PPT on Performance Review to get promotions
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Mechanical Engineering MATERIALS Selection

Is it possible to write cross-native apps in 2020 ?

  • 2. Meero • Create dedicated tools for photographers to make their life easier • Prospecting • Community • No photo editing during production process
  • 3. Objective Results • Teach our algorithm the different improvements performed by image professionals • Make it resistant to variations in lighting (such as white balance ), and image flaws (such as noise or motion blur)
  • 4. How we designed our iOS and Android apps with same architecture And without cross-platform frameworks
  • 5. Plan • History • State of cross-platform • Considering developing iOS and Android apps in the same way • Devsign thinking • Future • Conclusion
  • 6. History 2007 2011 2014 2015 2016 2017 2018 2019 Android iOS Fragment RecyclerView UIAlertViewController Widget / Extension UIStackView SFSafariViewController
 ForceTouch Permissions CustomsTabs AppShortcuts ConstraintLayout Room ARKit Files HomeIndicator Notification provisionnal Navigation arch ARCore HomeIndicator SwiftUI Combine Geoloc permission Darkmode Compose Flow Geoloc permission Darkmode
  • 8. State of cross-platform Mobile market development is still looking after the best cross-platform solutions: • PhoneGap/Cordova, Titanium, Appcelerator, SenchaTouch… • ReactNative, NativeScript, RubyMotion, … • Flutter, KotlinNative
  • 9. State of cross-platform Sharing Business and UI logic code Reducing Time of development by reducing the time to market Ownership Of the rendering engine Updating OTA with code push Designing Isomorphic application Offering Simple way to target and develop for specific platform
  • 10. State of cross-platform Hard to choose Because too many choices Need to wait Developers to give access to the latest native SDK features Reduce Or equalize native performances. Increase size of apps Hidden cost With additional bugs, limitations new skills needed, technical stack Are dropped Titanium, Xamarin, Angular? (Ionic) Subjected To the rules of app stores for code push restrictions Api violations (Electron) or webview shell
  • 11. • Legacy projects • Not started at the same time • Started with different choices • Beliefs and experiences of developers. iOS / Android apps Why ? • Two different architectures • Functional differences on same features
  • 12. Is it possible to write cross-native apps in 2020 ?
  • 14. • Optionnals • Sealed class, data class • Extensions, interface implementation, generics • Immutabilité • map - reduce - join - filter • Delegated properties (by) • Spannable string • let?. / val ?: return • … • Optionnals • Enums, structs • Extensions , protocol extension, generics • Immutabilité • map - reduce- join - filter • Property wrappers (@) • Attributed string • if let / guard let • …
  • 16. Appcode et Android Studio 😏
  • 17. iOS et Android components
  • 18. • Activity, Fragment, RecyclerView • ConstraintLayout, LinearLayout, Compose • Permission • WorkManager • Notifications (silent, local, push) • DialogFragment / IntentChooser • ARCore / Sceneform • CustomTabs • Room • … • ViewController, ChildViewController, UITableView • Autolayout, UIStackView, SwiftUI • Permissions • Background Modes • Notifications (silent, local, push) • UIAlertViewController / UIActivityViewController • ARKit / SceneKit • SFSafariViewController • CoreData • …
  • 21. • Share same apis • Same behaviours • Needs • Maintenance, security, … • Integration complexity • Cost saving • Licence • … Specific criteriaCommon criteria
  • 22. • RxJava / RxAndroid • Dagger2 / Koin • Mockito - Spek - Atrium / AssertK • Picasso / Glide / Coil • Retrofit • MPAndroidChart • Realm • … • RxSwift • Swinject • Cuckoo - Quick - Nimble • KingFisher / SDWebImage • Alamofire router • Charts • Realm • …
  • 26. Architectures • MVC, MVP, MVVM, MVI • Clean architecture • Router / Coordinators • Delegation • Decorators
  • 28. • Modifications must be done twice • Rigorous respect of naming conventions, folder tree, … • Complicated to be 100% • Synchronous update to avoid divergences Pros Cons • Common reflexion • Fatest bugs detection, same bugs • Seamless switch from iOS to Android, quick learning curve • Same functional behaviours • No architecture debate during reviews between platform
  • 30. • Ktlint, AndroidLint • Ktlint (--format) • Bitrise, Fastlane, Danger, … • SwiftLint • SwiftFormat • Bitrise, Fastlane, Danger, …
  • 31. Team
  • 32. Team • At least one Team Lead • Guardian of the rules and process • Experience on both platform • Developers • Knowledge at least on one platform • Motivated to learn developing / reviewing the other platform • Open minded • Curious
  • 33. • New constraints for work • Must hire people that can embrace this vision of cross-native development • Communication is mandatory Pros Cons • Share ownership of the apps • Share technic knowledges • Co-construction • Create communication • A “single” team • Natural for feature team
  • 36. Devsign thinking • Design thinking for developers • Development cycle in three steps Reflexion DevelopmentCross reviews
  • 37. First step - reflexion • Discussing and picking about the best solution for design the new feature in the same way on both platform • During grooming and / or specific technical meeting • At least one iOS and Android developer
  • 38. Second step - development • Keys to achieve: • Respect the technical choices and decisions • Communication for problems or enhancement
  • 39. Step three - cross reviews • iOS code should be reviewed by Android developer for the same feature • Should be reviewed by third person to improve or definitely validate • Cross testing • Communication ! • No compromise without validation from both parties
  • 41. • Some step could be complicated to perform on big legacy project • Communication • Technical debates could be long • Bigger is the feature, longer will be the review Benefits Obstacles • Easy to perform for a new project • Force conventions • Opportunity for refactoring legacy portion of code • Opportunity for develop on other platform • Makes you more valuable, new career opportunities
  • 42. Once you tried it, you can’t go
  • 43. Future • Use Danger to automatically check naming function, files and folders trees • Continue with web front-development for same features (react native strength) • Prepare the field if tomorrow we really have to deal with ReactNative, Flutter or KotlinNative.
  • 45. Christopher SAEZ Mobile developer @meero christopher.saez@meero.com https://www.linkedin.com/in/saezchristopher/