Need advice about which tool to choose?Ask the StackShare community!
Flutter vs Xamarin: What are the differences?
Flutter: Cross-platform mobile framework from Google. Flutter is a mobile app SDK to help developers and designers build modern mobile apps for iOS and Android; Xamarin: Create iOS, Android and Mac apps in C#. Xamarin’s Mono-based products enable .NET developers to use their existing code, libraries and tools (including Visual Studio*), as well as skills in .NET and the C# programming language, to create mobile applications for the industry’s most widely-used mobile devices, including Android-based smartphones and tablets, iPhone, iPad and iPod Touch.
Flutter and Xamarin can be primarily classified as "Cross-Platform Mobile Development" tools.
Some of the features offered by Flutter are:
- Fast development - Flutter's "hot reload" helps you quickly and easily experiment, build UIs, add features, and fix bug faster. Experience sub-second reload times, without losing state, on emulators, simulators, and hardware for iOS and Android.
- Expressive UIs - Delight your users with Flutter's built-in beautiful Material Design and Cupertino (iOS-flavor) widgets, rich motion APIs, smooth natural scrolling, and platform awareness.
- Access native features and SDKs - Make your app come to life with platform APIs, 3rd party SDKs, and native code. Flutter lets you reuse your existing Java, Swift, and ObjC code, and access native features and SDKs on iOS and Android.
On the other hand, Xamarin provides the following key features:
- Cross-platform development- Thinking about supporting iOS, Android, Mac and Windows? Xamarin allows you to write it all in C#.
- Reuse existing code- Use your favorite .NET libraries in Xamarin apps. Easily use third-party native libraries and frameworks.
- Discover as you type- Explore APIs as you type with code autocompletion.
"Hot Reload" is the top reason why over 13 developers like Flutter, while over 111 developers mention "Power of c# on mobile devices" as the leading cause for choosing Xamarin.
Flutter is an open source tool with 69.4K GitHub stars and 8.09K GitHub forks. Here's a link to Flutter's open source repository on GitHub.
According to the StackShare community, Flutter has a broader approval, being mentioned in 41 company stacks & 146 developers stacks; compared to Xamarin, which is listed in 75 company stacks and 66 developer stacks.
We are developing an AWS IoT app for large boats. The IoT devices have sensors all over the boat for engine oil pressure, position, water depth, fuel level, crew location, etc. When the boat has internet, we interact with AWS cloud using lambda and Amazon DynamoDB. When the boat is offshore, the captain and crew still need normal and emergency alerts and real-time sensor information. The crew might have an Android or IoS phone or a Windows or macOS PC to receive alerts and interact with sensors. We may use the AWS GreenGrasss edge computing solution and either MQTT or HTML for that function.
Question: We want to develop a cross-platform client to run on Windows, Mac, Android, IOS, and possibly Linux. We are primarily Python programmers, so PyQt or Kivy are options for us, but we have heard good things about React Native, Flutter, Xamarin, and others. We think an AWS Greengrass core on an RPI4 could communicate to the client with MQTT or a local webserver with a client web interface.
Any thoughts would be much appreciated.
I don't know much about Xamarin but I know about PyQt and React Native.
However, I don't recommend PyQt because the apps made using PyQt are not that suitable for mobile apps. If you take a look at the PyQt interface, you will be able to see that the features are more of a desktop apps kind.
React Native uses JavaScript. React Native is immensely flexible in upgrading your apps because it allows you to formulate your app code into independent blocks.
In Xamarin, you have to write the code in .NET . The best thing about Xamarin is, that it extends the.NET developer platform with tools and libraries specifically for building apps for Android, iOS, tvOS, watchOS, macOS, and Windows
While the best choice for you depends on various factors but React Native app development is a promising overall choice. In today’s scenario, React Native has steady growth, flawless code structure, and brilliant and large community support. We suggest you go for React Native for your next project owing to its outstanding support from developers, easy availability, and cost-effectiveness.
It seems like your app is not really using any native functionality on the phone. I have experience with cross platform iOS & Android development. They are all really good tools! Xamarin (all the project on the website portfolio I attached) is awesome for accessing native functionality (NFC, Sensors, Bluetooth, etc), and I have built apps that have millions of downloads, some that hit Top 5 on Utilities, another that hit Top 50 in Finances. You just have to look at what your application intent is, it seems like it's just to read and post data. For that they are all pretty good, but you should also look into Ionic which may serve the same purpose
I am building an app that would need at least two external APIs: a map and a payment service. I am currently building in Flutter, but I am having trouble integrating one of the external APIs with the app. I wonder (because I am still at the beginning) if I should switch to React Native or build native iOS and Android apps separately. Any advice would be appreciated!
Choosing between ios/android and Flutter is not simple. Neither is a one-size-fit-all solution. It would be impossible to suggest one or the other without first analysing particular project’s requirements.
Choosing cross-platform development (Flutter) offers a number of advantages – lower cost, faster time to market, etc…, and if applied to the right type of project, will result in high-quality, marketable mobile product. In my opinion, stick with flutter and try to resolve those problems. Here are some useful links,
Map: *https://pub.dev/packages/mapbox_gl *https://www.raywenderlich.com/4466319-google-maps-for-flutter-tutorial-getting-started
Payment Service: *https://developer.squareup.com/docs *https://github.com/square/in-app-payments-flutter-plugin *https://pub.dev/packages/stripe_sdk
It's a bit late but I suggest staying on Flutter anyway. Though you might face troubles with APIs integration, overall development experience is better on Flutter, so you save some time & power on the project in general. Dunno if it's of any use to you, but as a prove I attach one of many Flutter vs RN comparison articles (you can find any other similar yourself on the web though), hope it helps you make a decision
Hi Friends, I am new to #MobileAppDevelopment and I need to make a #CrossPlatformMobileApp. I want guidance regarding which tools should I use to build a mobile app. Main requirements: integrate Unity game engine and provide a platform for social chats.
Past experience - C++ and Python
I have tagged Flutter and React Native but if anything better than both please suggest them.
Hey, If you are using Unity you are going to have to do the end to end development on Unity, you can directly build for android and iOS on Unity. I dont see how Flutter or React Native fit into this equation. Unity is a standalone engine. As for Social Chats, you could use Firebase or your own API and integrate that in Unity in C#
I agree with Sahil. If Unity is a requirement, best way is to use just that to create your app.
If you really want, it should be possible to use Flutter and Unity together. Using Flutter Unity Widget. Although I wouldn't recommend it just yet. It's too early days.
If you do end up using it, I would be very interested in reading about your experiences.
You can start by small steps with Flutter and after Unity. Flutter = best choice to build a small cross-platform mobile app. With or no flutter, use directly Unity. Y'll have complete control but it's harder for new mobile developers. Keep in mind, the requirement is Unity!
Hi, I'm a web dev and am using Electron for a desktop app. Now I have to develop a mobile app with the following features:
- Posting/uploading files by users, private messaging between users, download files, moderation of the uploads, push notification of new posts.
- Mods can ban users and delete files.
- Share buttons from the library folder of the user phone.
- When a user uploads a photo, a pencil tool for deleting staff on the pic.
Which tool is better for such a project?
Thanks in advance
Given your experience in electron I think the shortest hop is going to be React Native. Especially since half of the requirements are server-side. Google is doing a pretty great job bringing up Flutter and the tooling is pretty great. For me however, dart seemed like quicksand and not everything is in its final home. React Native is mature, and considering my cursory analysis of your experience and the low complexity of this project, you've got quite a lot of room to grow into Javascript Land. Ultimately, my recommendation is always "play with both, see what you like, and get to know the documentation and the community." Keep your head on a swivel and set aside time to peek greener pastures, but spend most of your time delving deeply into what you're already doing.
But yeah, go with React Native first, get bored of it, learn what the shortcomings are through experience and then see if something else is really more attractive or just a new shiny.
Well, I will personally recommend to go for React Native as I have worked in both of them. React native has big community and it is easy to opt as compared to Flutter. There no doubt about the fact that Flutter is a great framework for developing both Android/IOS apps. However, you should have some experience to go for the same. Both will require prior knowledge as for React Native you have to go through Javascript first with which you are already familiar and for Flutter you need to go through Dart. So being familiar with Javascript you should go for React Native. You can go expo which has lot of inbuilt functionalities for the React Native developers.
Hi, we are an early startup (with an iPOC prototype) but need to get started on our MVP, and our tech developers in India recommended a hybrid, and they use Ionic, then we spoke with a software company in the US and he recommended Flutter or React Native. Any advice or input for us on the differences between these? Our app will need Bluetooth GPS for "near me" and social media sharing reviews capability, and also link on the backend with businesses. Thanks in advance for any help you can give!
I would never recommend you to go with Ionic, Because of the User experience it provides is subpar. Flutter is most promising, Can be easily used to develop great user experience in no time. React native is also good, but it's phasing out in my opinion, while Ionic has already phased out. Flutter also provides great developer experience, resulting in fast and productive developers. I would have to press hard to think of a CON about flutter when recommending it for your needs.
Maturity, Community, Facility, Libs React Native is the principal platform of mobile cross-platform development today, Flutter is it's a promise.
Even if React Native is older (I didn't say mature) you should go for Flutter, It's works really well and the developer experience is great (auto-completion, plugin etc). I spent years with React Native and now I am using Flutter and I don't regret It. Even if you have to learn a new language, It's pretty simple even more If you know some OOP, Java and Javascript ES6 syntax in some case. One other advantage is the facility to design app in Flutter, you have widgets for everything and you can adapt any design made by your designer. For example you can't make a simple custom box shadow with React-Native ...
Flutter is built on DART which is written in GO. GO compiles to binary. Hence is faster than any java based framework. It provides superior performance and has a simplified UI process for designing apps.
I don‘t have practical experience with flutter but between ionic and react native I‘d say both a perfectly viable options and we have used both for a number of production apps. We normally go with ionic on capacitor because we build a lot of pwa/web apps so we can use the same code for all. We don‘t use much of ionic elements, we do most styles on our own.
The comments that the user experience is bad I cannot agree with. A well designed and developed ionic apo can hardly be distinguished from a native app. But obviously that depends also on the usecase and type of app.
I hope this helps
It depends also on your team skills. Flutter is fast to learn, fast to develop with and the performance is much better in comparison to React. If your team is already highly skilled in React Native it could be the better option - if not Flutter is my 100% recommendation. We rapidly prototype and deliver MVPs with Flutter since two years.
Hi! I have to develop a software solution for a youth church group, for my graduation project. In the first meeting that I have with the coordinators, they did not have a clear idea of what they want. The biggest problem they have is the attendance control, they do it manually and that causes errors.
I was thinking of developing an Android app in Android Studio because that is the tool I master, but a friend told me that I consider using a tool that builds for iOS, Android and web. I have like 6 months. I own a MacBookAir but I do not know Swift (for iOS). I am familiar with MySQL, PHP, Apache, JSP,HTML,CSS.
Summary: What tool can I use that is easy to learn and easy to scale?
I think you should chose between Flutter and Ionic. With those two options, the main question is about graphs and performance. Are they really important for your application? If the answer is yes, your tool is Flutter but, if the answer is that you need an easy tool to create an app with some basic components I would choose Ionic. You have a library with lots of components that you can use and they have native UI by default (for Android and iOS).
You will find more support if you use Ionic with Angular as frontend framework (you have the option to use Vue or React but this is a new feature for Ionic and I think there are more difficult to learn than Angular).
You can develop and debug the majority of features on PC (I don't know if that is possible with Flutter). And when you will finish the app, create iOS and Android versions is simple.
It's probably not relevant anymore, but I think Ionic with Angular as the frontend is the right choice. For IDE I would choose Visual Studio Code. You can just create a basic web application with responsive design, which is already included if you are going to use Ionic components with Material Design to create your app. You don't need to know Swift, you don't even have to create mobile apps, just create a responsive (Ionic already is) web app, or PWA. Upon browsing your website from a mobile device for example using google chrome, you will be prompted to create a shortcut of the website in your mobile phone. After you do this, there will be an icon in your phone that looks like an icon to launch an app, it will launch your website in full screen mode - for the user's perspective it will look like he is using a native app. Access https://ionicframework.com/docs/angular/pwa from your android chrome browser, go to tab options (3 vertical dots), click on Add to Home screen. When you launch the website from the shortcut, you'll see that it behaves and looks like a native app.
Flutter is easy to use and easy to understand. Once you have completed the android platform, you can easily build it to ios, Web or desktop on a single code base.
- Electron is for desktop apps, so not useful for you.
- Flutter has better performance, but Ionic is decent as well, I would use Ionic unless you're making a game or graphic-intensive app.
- Ionic is more flexible since you have the whole NPM ecosystem available, while flutter is more recent, thus libraries for it are less in quantity and battle-tested than the ones in NPM.
- Ionic 4 introduced CSS variables, which improved immensely the theming process for the app, which was the hardest issue Ionic development had.
- Ionic has extended to many frameworks so it's compatible with Angular and React frameworks, meaning more flexibility, personally I would recommend Ionic with Angular over React since it's more suited to enterprise-level apps.
Hi there. So Electron embeds everything in a webview, which means that what you would have to develop would be a Node project most probably. Ionic does the same (kindof but won't bore you with specifics) but it does it much more efficiently. Usually you do Ionic apps with JS frameworks like Angular or React (this one recently added). Flutter on the other hand does native apps, it does it really good but it's support for Web is in beta and it's relatively simple to setup if you already know the SDK and the environment.
My recommendation would be that you do your app using Angular/Ionic if you reaaally need the multi-platform environment and there's different reasons in this case:
- Since it's a graduation project you need it to be as simple as it can be and adding a new technology adds to the learning curve.
- Flutter is great if you have different complex UI or if you have specific performance needs that require native support and in your case it does not seem like you need that.
- Flutter is also an incredibly powerful tool but it's learning curve might be tricky if you have not developed native apps before so I wouldn't recommend you start off like this if you have time sensitive projects like a graduation project. It does have great docs and an awesome community but I'd suggest you stick as close to what you know as you can.
- Ionic/Angular uses Typescript (a type javascript wrapper) and Angular (JS framework) so you will have to learn a little bit but if you already know HTML, CSS and Javascript you won't have that much of a hard time. Also there's quite a lot in terms of documentation and tooling already tested around this combination.
- Ionic/Angular has a really good CLI that helps you stick to the architecture they recommend so you wouldn't have to worry about it that much.
- Ionic/Angular helps you test either locally in the web browser as well as your devices which is in the end what you want if you are looking for a multi-platform system. Flutter also does this but is not quite in a stable state (yet!).
Anyway, in the end, if you go for the multi-platform suggestion I think, because of time you would be better off with Ionic. If you decide that you don't need that as of right now (which is fine as well) you can start with just the Android app and plan on the different things you might eventually need like a website or other different stuff. Cheers!
We will use Flutter for our athlete-facing mobile app. Flutter is a cross-platform app development framework, which boasts native performance and allows for creating beautiful, fluid user interfaces.
React Native may sound like a more appropriate option given our choice of frontend technologies, but we foresee little to no feature overlap in the web dashboard and mobile app. Ease of use, performance, good user experiences are key to encouraging athletes to use our app, something which React Native makes difficult, and is where Flutter excels.
We will use the test
and flutter_test
packages to test our Flutter app
We chose Flutter since we are developing a mobile application that needs to be performant (to handle displaying large amounts of data and video uploading) and would cover both Android and iOS systems.
Since we want the app to be cross-platform, two frameworks comes in to mind: Flutter
and React Native
. As shown below, Flutter's performance and out-of-the-box support impressed us to pick it as our framework for our mobile app.
React Native
has been a dominant force in cross-platform app development since its launch by Facebook. The ability to write React
-like code and have it compile to both iOS and Android makes developing mobile apps much easier. However, the overhead done to bridge Javascript
code into native code means React Native apps might not be as performant. Moreover, React Native
, much like React
, is an unopinionated framework that covers minimal functionality out-of-the-box. This means that most functionalities would have to be relied on third-party libraries or developers would have to write their own native code.
Flutter
, on the other hand, is a much newer framework developed by Google. While Flutter uses Dart
, a relatively new language compared to JS, syntax-wise it is similar enough to that a JS developer should be able to pick it up in no time. The Flutter
engine also compiles directly into native code, making it more performant when compared with React Native
. Flutter is also an opinionated framework, with a much large stack of Widgets to choose from out-of-the-box. The Widgets are also designed according to Material design principles, making styling easier.
I've made 6 professional/business applications with React Native before choosing Flutter/Dart for the new version of WinMinuteConso (historical in Ionic...). Multi Platform is far more stable, Dart is far more powerful, the whole process is really better... It is just hard to find the proper software architecture...
- Javascripts is the most populated language in the world.
- Easy to learn & deployed production
- Fast development
- Strong community
- Completed Documents
- Native performance with lower RAM used.
- Easy to handle native issues by using native code like Java / Objective C
- Powered by Facebook.
While with Ionic it is possible to make mobile applications with only web technologies, Flutter is more performant and is easy to use if you are willing to learn Dart, which is a fun language. Plus, it has awesome documentation and, while its ecosystem isn't near as big as JavaScript's is, it has a good package manager called Pub and its packages are generally high quality.
We built the first version of our app with RN and it turned out a mess in a while. A lot of bugs along with poor performance out of the box for a fairly large app. Many things, that native platform has, cannot be done with existing solutions for RN. For instance, large titles on iOS are not fully implemented in any of existing navigations libraries. Also there's painfully slow JSON bridge and many other small, yet annoying things. On the other hand Flutter became a really powerful and easy-to-use tool. A bit of a learning curve, of course, because of Dart, but it worth learning. Flutter offers TONS of built-in features, no JSON-bridge, AOT compilation for iOS.
Pros of Flutter
- Hot Reload143
- Cross platform123
- Performance105
- Backed by Google89
- Compiled into Native Code73
- Fast Development61
- Open Source58
- Fast Prototyping53
- Single Codebase49
- Expressive and Flexible UI48
- Reactive Programming36
- Material Design34
- Dart30
- Widget-based29
- Target to Fuchsia26
- IOS + Android20
- Easy to learn17
- Great CLI Support16
- You can use it as mobile, web, Server development14
- Tooling14
- Debugging quickly13
- Have built-in Material theme13
- Target to Android12
- Good docs & sample code12
- Community12
- Support by multiple IDE: Android Studio, VS Code, XCode11
- Written by Dart, which is easy to read code10
- Easy Testing Support10
- Target to iOS9
- Real platform free framework of the future9
- Have built-in Cupertino theme9
- Easy to Widget Test8
- Easy to Unit Test8
- Large Community1
Pros of Xamarin
- Power of c# on mobile devices121
- Native performance81
- Native apps with native ui controls79
- No javascript - truely compiled code73
- Sharing more than 90% of code over all platforms67
- Ability to leverage visual studio45
- Mvvm pattern44
- Many great c# libraries44
- Amazing support36
- Powerful platform for .net developers34
- GUI Native look and Feel19
- Nuget package manager16
- Free12
- Backed by Microsoft9
- Enables code reuse on server9
- Faster Development8
- Use of third-party .NET libraries7
- It's free since Apr 20167
- Best performance than other cross-platform7
- Easy Debug and Trace7
- Open Source7
- Mac IDE (Xamarin Studio)6
- Xamarin.forms is the best, it's amazing6
- That just work for every scenario5
- C# mult paradigm language5
- Power of C#, no javascript, visual studio5
- Great docs4
- Compatible to develop Hybrid apps4
- Microsoft stack4
- Microsoft backed4
- Well Designed3
- Small learning curve for Mobile developers3
- Ionic2
- Ability to leverage legacy C and C++2
Sign up to add or upvote prosMake informed product decisions
Cons of Flutter
- Need to learn Dart29
- Lack of community support11
- No 3D Graphics Engine Support10
- Graphics programming8
- Lack of friendly documentation6
- Lack of promotion2
- Https://iphtechnologies.com/difference-between-flutter1
Cons of Xamarin
- Build times9
- Visual Studio5
- Price4
- Complexity3
- Scalability3
- Nuget2
- Maturity2
- Build Tools2
- Support2
- Maturidade0
- Performance0