A non exaustive comparison of todays alternatives (Feb-2019). I followed this steps:
- List the competitors
- Exclude obvious bad choices
- Define comparison parameters
- Create a comparison matrix
- Define most important parameters
- Final result
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 |
At this time we are considering the following contenders:
- React Native
- Flutter
- Xamarin
- Phonegap
- Cordova
- Ionic
- Kotlin/Native
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.
- Supported Platforms
- Language
- Hot Reload
- Architecture Patterns
- Performance
- Libraries / Tooling
- Third-party support
- Documentation
- Community
- Maturity
- UI
- Code Reuse
- Security