- A simple mobile app created 3 different times with:
All three solutions provide similar UI building experience of using building blocks (Widgets, Components, Xml) to put together a View heirarchy.
-
Simple tab navigation
- Home - Fetch dadJoke from Dadjoke API
- History - shows a list of past dadJoke item(s)
-
Material Icon for tab images
General categories of how I would score each framework based on my experience
- Ease of getting started (boilerplate code, documentation, technical requirements)
- Developer support (open source, community, documentation)
- Developer experience (native support, debugging, flexibility)
- Performance comparison
- App artifacts size
- Language: Dart
- Package manager: https://pub.dev/
- Common design pattern: BLoC
See the README for more details
- Flutter provides great onboarding experience with the CLI tooling
- Noticeably faster to setup than ReactNative and Xamarin projects
- There's a lot of activity in the community, comparable to the
React Native
community. - Official documentations are very thorough.
- Has good open source libs to use.
- Developer docs are very detailed and thorough.
- Pre-packaged debugging tool is very intuitive and easy to understand
- Some widgets provides out of the box support for complex functionality
- Provides great typing system that prevents runtime error
- Language: Javascript/Typescript
- Framework: React
- Package manager: npm/yarn
- Common design pattern: Redux
- Language: C#/F#
- Framework: .NET
- Package manager: Nuget
- Common design pattern: MVVM
See the README for more details
- Forced to use Visual Studio IDE. Auto imports felt a bit off at times.
- Boilerplate code wasn't able to be executed right away
- Forced to have latest XCode version (not backwards compatible friendly)
- Official documentation was very basic
- A lot of the community posts and questions are outdated
- Limited amount of open source plugins
- Very dependent on Xamarin team to stay up to date with platform changes
- Great MVVM support
- Very basic documentation and little to no code documentation.
- Hot reloading only works with XAML changes