Skip to content

Instantly share code, notes, and snippets.

@handrus
Last active March 1, 2019 21:52
Show Gist options
  • Save handrus/0b9cc6aff8faa5d58edc6d0929c0ff55 to your computer and use it in GitHub Desktop.
Save handrus/0b9cc6aff8faa5d58edc6d0929c0ff55 to your computer and use it in GitHub Desktop.
Cross platform development

Cross platform development

A non exaustive comparison of todays alternatives (Feb-2019). I followed this steps:

  1. List the competitors
  2. Exclude obvious bad choices
  3. Define comparison parameters
  4. Create a comparison matrix
  5. Define most important parameters
  6. Final result

TLDR;

Xamarin Flutter React Native
Supported Platforms IOS, Android, MacOS, Windows IOS, Android IOS, Android, Web APPs
Language C# Dart Javascript
Hot Reload NO YES YES
Architecture Patterns MVC, MVVM MVP, MVC, MVI, MVVM, Redux MVP, MVC, MVVM,
Performance 4/10 9/10 6/10
Libraries / Tooling 6/10 5/10 7/10
Third-party support 6/10 5/10 7/10
Documentation 10/10 10/10 10/10
Community 7/10 8/10 9/10
Maturity 10/10 5/10 9/10
UI 4/10 8/10 7/10
Code Reuse 96% 70% 70%
Security x/10 x/10 x/10

The competition

At this time we are considering the following contenders:

  1. React Native
  2. Flutter
  3. Xamarin
  4. Phonegap
  5. Cordova
  6. Ionic
  7. Kotlin/Native

Obvious bad choices

We don't want hybrid experiences since the performance hit is too big. The advantages of re-using web developers and web componentes, in our case, do not outweight the performance hit and UI clutterness.

This removes imediatelly Phonegap, Cordova and Ionic from our study.

Kotlin/Native is a great promissing cross platform framework. It does deliver on the multiplatform promisse, we can share all business logic among IOS/Android or Back/Front web. It does not handle UI and, for the best of my knowledge, can't share much code between web and native platforms. Also, it is still hard to find Kotlin developers and partners offering professional Kotlin services. This also removes Kotlin from this study, but it will definetely be considered in future looks to the landscape.

Comparison parameters

  1. Supported Platforms
  2. Language
  3. Hot Reload
  4. Architecture Patterns
  5. Performance
  6. Libraries / Tooling
  7. Third-party support
  8. Documentation
  9. Community
  10. Maturity
  11. UI
  12. Code Reuse
  13. Security
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment