Xamarin.Forms vs Flutter

FredyWengerFredyWenger CHInsider ✭✭✭✭✭

Hi all
Thomas Burkhart has posted an interesting small review to Flutter (a relative new challenger to .forms) including his personal compare between .forms and Flutter.

As the link was included in the “Weekly Xamarin” newsletter and there also already were articles to Flutter published in the visuals studio magazine (links see below), I think, it’s O.K. to publish this thread here...

As I think, this is interesting for many users, I post the link here:
https://www.burkharts.net/apps/blog/flutter-the-new-kid-on-the-block/?utm_campaign=Weekly+Xamarin&utm_medium=email&utm_source=Weekly_Xamarin_150

Further, also Aloïs Deniel (another Xamarin user) has posted detailed information’s to Flutter a longer time ago here:
https://aloisdeniel.github.io/flutter-introduction/

I think, both postings together will give a good overview to Flutter (from the point of view of Xamarin users).

Link #1 to article in visual studio magazine:
https://visualstudiomagazine.com/articles/2017/12/04/flutter-challenges-xamarin.aspx

Link #2 to article in visual studio magazine:
https://visualstudiomagazine.com/articles/2018/03/01/flutter-xamarin.aspx

Link to a further “high level” comparison Xamarin / Flutter and React native:
http://blog.novoda.com/react-native-flutter-xamarin-a-comparison/

@ThomasBurkhart and @AloisDeniel
First, many thanks for your good work! :smile:

@ThomasBurkhart:
I can fully agree with your findings regarding the “Xamarin tool-chain”.
My personal opinion (without testing Flutter):

  • Looks very promising and interesting (especially “It just works”, fast build time, very fast start-up).
  • Negative points for me are: it seems that there is no integration in VS professional (MS will know the reason for), no direct interface to the device functions, future not secured, no direct support for build iOS on a windows machine

I will definitely keep an eye on Flutter and - as soon as my nerves are completely destroyed with Xamain.Forms - give it a try.

Thanks again

Maybe, also other users want to share their opinions here....?

Posts

  • NMackayNMackay GBInsider, University mod

    No UWP support, I asked the author directly and they have no interest in adding that support, in my currently role, Windows10 desktop support is important so it's a non starter.

    It does look interesting, it should be a wake up call to MC to invest more in Forms and make it easier to override platform specific behavior if you want to. If your doing cross platform and only targeting iOS and Android it's certainly worth considering. I have spoken to people internally within Microsoft recently and they are aware of the threat of losing users to other flavours of cross platform tools.

    Frank Krueger's framework to run Xamarin Forms app in browsers & PWA's is interesting
    https://xamarinhelp.com/create-a-pwa-in-xamarin-forms-with-ooui-wasm/

    Competition is good, Forms reaches the most platforms but that compromises it to some degree.

    There's some really nice features coming in 3.0.0, they need to make it easier to override platform specific behavior (PlatformSpecifics is just tinkering round the edges).

    For enterprise dev, I'd always choose Forms. C# and XAML skills re-usage cannot be ignored.

    Just my own thoughts.

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    Hi Norman (nice to hear from you :smile:)

    Thanks for you thoughts and your are right -if UWP- /Windows desktop support is needed, Flutter will be a nogo.
    But I think for the most dev's Android and iOS is the theme...

  • NMackayNMackay GBInsider, University mod

    Just covering all basis :smile:

  • BradChase.2654BradChase.2654 USMember ✭✭✭

    For a small team, you have to be able to use the same code on all platforms. In the near future we are going to be looking at one code source for UWP, WPF, Droid, iOS, macOS, and Web. To boot, we have a full open source system at our disposal. Does X.F have issues? yea. But every issue I run into, I fix. Its much cheaper to fix it yourself than hire 2 extra developers for every platform out there. We have legacy customers STILL on Windows 7. The WPF target works out perfectly for us. We have some customers using macOS, and boy are they sticklers about changing to a PC, they use our macOS version. Small teams trying to reach every target really only have one choice on the market right now. And X.F IS GETTING BETTER EVERY DAY, the community is really stepping it up and saying screw it, lets just fix it ourselves. Thats pretty cool to see, sucks its a necessity, but it shows there is a real future in X.F, not something that could be cancelled the next day.

  • VincentwxVincentwx CAMember ✭✭

    I hope XF has a set of new UI components like those in Flutter which does not rely on the native platform. Right now, XF's UI component is not sufficient for lots of UI demanding apps. You could say that you can use customer render, but that defeats the purpose of using XF.

  • ShimmyWeitzhandlerShimmyWeitzhandler USMember ✭✭✭

    @NMackay said:
    No UWP support, I asked the author directly and they have no interest in adding that support, in my currently role, Windows10 desktop support is important so it's a non starter.

    Same here. No UWP support means it's not for us.

  • kinekine FIMember ✭✭

    I am porting my UWP/Xamarin app to Flutter. As part of the project I created a C# to Dart transpiler because I really do not want to rewrite manually thousands of lines of useful C# code (ViewModels and other business logic) in Dart. If you are planning a similar project, you can find the tool from Microsoft Store (app name is "C# to Dart Transpiler", sorry I cannot post links here).

    And why did I chose Flutter? Short explanation: Xamarin.Forms 2500 GitHub stars, Flutter 35000 GitHub stars. Community support is very important. I did my final decision after Microsoft decided to kill their Azure Mobile Client SDKs (which my app is using). I don't want to waste my time on dead or soon to be dead SDKs and rewriting my apps over and over again.
    And without Windows Phones I don't see very bright future for Xamarin. This is sad because I really like C#, UWP, Visual Studio etc.

  • GiampaoloGabbaGiampaoloGabba USMember ✭✭✭
    edited August 2018

    @AndreiMisiukevich_ said:
    It would be awesome if xamarin takes flutter main idea. Fast UI, Redux pattern, hot reload etc. and apply it to C#.. it really will be fantastic.
    In my opinion, C# is very convenient. And I don't want to migrate to Dart. Also I enjoy VS

    yepp, that would be awesome!

    I love c# and the ability to reuse my business code with my asp.net sites, console application, mobile apps, ecc...
    But xamarin.forms has 2 main problems that are driving me crazy:

    1) Performarnce on Android (not event comparable with flutter apps)
    2) Instability of Development tools. I work on Windows and i HATE to continuosly close and reopen Visual Studio, delete bin & obj folder every time compilation stop to work (and it happens very often), its such a waste of time....

    For live realod i use LiveXaml: an awesome product. The guy behind it is working on a new product that will be able to add live realod even c# code.

  • JohnHJohnH GBMember ✭✭✭✭✭

    2) Instability of Development tools. I work on Windows and i HATE to continuosly close and reopen Visual Studio, delete bin & obj folder every time compilation stop to work (and it happens very often), its such a waste of time....

    Are you on VS2017? 15.8.1 is the latest and which resolved that issue for me.
    And btw, the workaround for that issue was to disconnect the paired mac and reconnect. It takes a bout 10 seconds. So still a pain, but much quicker that your work around.

  • GiampaoloGabbaGiampaoloGabba USMember ✭✭✭
    edited August 2018

    @JohnHair said:

    2) Instability of Development tools. I work on Windows and i HATE to continuosly close and reopen Visual Studio, delete bin & obj folder every time compilation stop to work (and it happens very often), its such a waste of time....

    Are you on VS2017? 15.8.1 is the latest and which resolved that issue for me.
    And btw, the workaround for that issue was to disconnect the paired mac and reconnect. It takes a bout 10 seconds. So still a pain, but much quicker that your work around.

    oh! i forgot to mention the reconnect thing :)
    Sometimes builds stop working with an error about not being connected to mac (but i'm connected, so i need to disconnect e reconnect).

    Other times i get an error about not matching destination and local version or something similar... When i get this i need to restart visual studio. A simple disconnect and reconnect to the mac isn't enough.

    Even on Android sometimes compilation stop to work, so i need to restart VS, clean the solution, then i'm ready to go.
    Just cleaning is not enough.

    Btw all of this this using VS 15.8.0, i just updated to 15.8.1. I hope things will be better.

    I really hope that Microsoft can fix this 2 major problems with Xamarin (i seee a lot of very interesting new Spec in github: Shell, Drawing, CollectionView, ecc..) very soon, because i want to stick with .Forms..... But flutter is very, very tempting (considering i only develop for Android & IOS).

    I can spend few bucks for livereload tools but the time spent to fight VS and make things go well in Android its getting overwhelming.

  • NicolasKrierNicolasKrier FRMember ✭✭✭
    edited October 2018

    Having played around 10-12 hours with flutter this week, I would like to say that the hot reload is awesome.

    I watched 2 hours of tuto to start with dart. It looks like C# more than I thought. I've seen some weird things : no overloads of method or constructor (IMHO, ctor().WithName() looks like a static builder method but not really a ctor).
    Interfaces are weird : every class can be used as an interface. I found that a bit confusing.
    But otherwise, the language is very nice and I enjoyed it more than I wanted.

    I 'd like to remind to people that Dart is mono thread. It can be a problem for some project I guess.

    About perf, I didn't feel the amazing announced perf given by flutter. On my iMac, if I do the click button and count++ project of flutter, I can see a big lag while clicking on the add button whereas it's immediate with Forms.

    Also, having about 8 years of experiences with Xaml, I think it will take years to have the same productivity with flutter (if it's still alive untill then). They are few times I was disappointed by Xamarin :

    • when they annouced they focus on CSS... doing the same mistake as Microsoft who put a lot of resource in UWP for web developpers instead of spending this time on the perf or the default control in the box.
    • when I saw that the ListBoxItem and HasUnevenRow on iOS still doesn't work if you set a panel visible when selected (the cell's height isn't updated) (try the SyncFusion listview... You'll be angry about XF : how can't they provide such a ListView makes me sad)

    Again, I'm a Xamarin FanBoy : I bought all licences for myself just to experiment and have fun severals years ago (before Xamarin was acquired by Microsoft). I'm a huge fan of Miguel de Icaza who did a lot for me :wink:
    But I must say that I would think twice before choosing XF over Flutter for a small project.

    Flutter's default control's animation are awesome and run like a charm on the demo app. I definitively think the UI looks better with Flutter than XF for the same amount of time spent on the UI even if you have a huge background with Xaml.

    And as it was told by @kine : Xamarin.Forms = 2700 GitHub stars, Flutter 39600 GitHub stars.

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭
    edited October 2018

    Thanks to @NicolasKrier for posting here… one more "Like" for you :wink:
    If would be interesting to hear from somebody here that has migrated a full app form XF to flutter…
    It also would be interesting to hear from somebody that has done the same with react native (as I think this both are the alternates to XF right now) and - to prevent postings :smirk: if you only need iOS and Android)

  • NicolasKrierNicolasKrier FRMember ✭✭✭

    @FredyWenger thanks :) I agree with you. It would be amazing to have such feedbacks. But it will be hard to find XF developers on this forum who switch from XF to react with a solid experience. But who knows ?

  • Hi @FredyWenger,
    As Per My Opinion, I would like to suggest flutter for developing the application why I am saying that because I have a really amazing experience with the same. If I compare all three Xamarin, Reat and Flutter then startup are suggesting React native is the best but brands suggest flutter as well. For more details, you can read it from here.

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @vijaydeveloper
    Thanks für your posting here and your opinion -one more Like for you :smile: .
    My "belly feeling" also would lead me to Flutter principally (they also have special information's for "Xamarin users" :smirk: and the documentation makes a good impression to me generally).
    The only thing about react native (for me) is, that I also do web developing (actually with asp.net / razor) and also think about to try out React JS (what then will be an argument für React native regarding the similar language).

    I will definitely try out one of both or both, as soon as I find the time for (and this can take an longer time from now...) .
    But... maybe somebody has migrated a "real life" app from .forms to Flutter an can post his "real life" findings here…?

  • NMackayNMackay GBInsider, University mod

    I'm genuinely curious to see Forms to Flutter commercial stories, not convinced by React but Flutter is something Xamarin needs to consider, the whole "rendering the control as native" is not what people want or they certainly want the choice.

  • SeanThomas.5523SeanThomas.5523 USMember ✭✭

    @NMackay
    I agree. I love the sound of Flutter. Reminds me of WPF which I have nothing but positive things to say.

    I'm developing in Xamarin Forms because I already knew C# and WPF Xaml. My full-time job is not in mobile development. I've had an idea for a great mobile app though that I've been working on in my very limited spare time. It's so very time consuming troubleshooting issues with views in Xamarin Forms. The Xamarin Previewer in VS 2017 for Mac doesn't work for me. I keep getting "The base class associated with this Xaml file could not be found. Please double check that the class referenced ..." It says this in every one of my xaml files in the project even after I've deleted all the obj and bin folders and rebuilt. It literally can take up my whole Saturday just to create a couple of new views and troubleshoot the layout especially if I want any nuance. Given that I only have 20 good hours a week available to work on this it's causing my app to drag out seemingly forever.

    Then this morning I saw Uno for the first time and downloaded the demo. I almost shed a tear and thought about abandoning XF and rebuilding my UI from scratch on a Windows machine UWP style. Not kidding. It is so tempting for the ability to able edit, continue and see changes really quickly. Going forward this is going to be key for me. I still want to be able to utilize the .NET/XAML/C# ecosystem especially with MVVM and separation of UI/Business Logic which I'm really accustomed to, so Flutter feels like a stretch.

    Does anyone have an opinion on the future of Uno relative to XF and Flutter as an alternative to XF. I've got very little spare time. I can't afford to make costly, time-consuming mistakes so right now I'm playing it conservatively and staying with XF at least until my first version is released.

  • VovaKamishnikovVovaKamishnikov USMember ✭✭✭

    Today I tested LiveSharp, a new tool from ionapps (Mihhail Maslakov) and it really works
    I think LiveSharp may be really game changer for Xamarin Forms

  • SeanThomas.5523SeanThomas.5523 USMember ✭✭
    edited November 2018

    @VovaKamishnikov
    I just looked at it. Sounds very promising. I may have shot myself in the foot though by using Caliburn.Micro MVVM in my project though! :smile: I suspect that will prevent me from taking full advantage of it when it comes out.

  • AndreiMisiukevich_AndreiMisiukevich_ USMember ✭✭✭✭✭

    Free hotReload package for Xaml: https://github.com/AndreiMisiukevich/HotReload

  • LeloLelo Member ✭✭✭
    edited May 31

    I have made a dive into rn recently. It was a very hard to get into at first.

    I enjoyed the hot reload and then the UI creation experience after a while. It is much easier to customise UI. Bigger community -> more already made UI. And personally I really liked dynamic typing with javascript. But with that said - I would say that maybe as much as half of the rn development is made in TypeScript. So most people seem to think it's better/more stable in the long run to use typing.

    I think jsx is what makes the ui creation so swift. Mixing of markup and javascript. So it is very easy to dynamically change styles and use animations. Also basically everything is made up of View. No StackLayout, no Grid. View which is FlexLayout is the only layout.

    For a while I thought I had to work with Redux - which worried me. But then I found mobx which was perfect for me. And I recommend mobx for xamarin dev going into rn especially. I would say RN allows you to more freely implement any architecture. Mobx is the way to go implementing mvvm in rn. Basically you annotate your view model variables/properties as observable and you can mark any UI component as observer. Now a change in a property is triggering a rerender in the particular ui component that is using that property. A "state management" library like Redux or Mobx is of absolute neccesity because all UI is made out of components that form a tree structure. And data can only be sent downwards. (I think this is also the case in Flutter).

    A drawback I would say lies in the setState() method. Maybe as much as 85% of the ui updating in rn in total is coming from that method. - of which you manually call to update the ui. Here I found mobx introduces a more efficient rendering. As any setState() trigger a rerender of the entire UI component - and it's children. Mobx render the specific child only. Also it is a draw back that setState() is asynchronous - so the render is not called immediately.

    Other drawbacks where that javascript did not support multithreading. And async await is not implemented in the same way. So you get into "callback hell". At least I could not implement async await in a nice way. You can not declare async up the chain like you can in C#. Basically you end up putting then.then.then. And you are stuck inside the callbacks scope without being able to access variables outside - which is very ugly and annoying.

    Also a major drawback is the react native bridge which can really be a performance bottleneck. To communicate with native apis you have to write java/objective c which is serialised and then sent to the javascript side. From this I got performance issues when reading the sensors. NativeScript - another javascript native framework is designed in much a better way.

    Basically I am back to Xamarin because I realised I could not reuse my code - as I wanted the possibility to support watches in my app. I would say that in writing pure mobile apps react native is a bit better. And I suspect flutter might be even better. But Flutter can neither (like react native) support watches at least. And in flutter you also don't have direct access to native apis like you have in xamarin (which you also have in NativeScript by the way).

  • jimmierwilliamsjimmierwilliams Member
    edited July 5

    Thanks for sharing your thoughts.

Sign In or Register to comment.