Some thoughts after (almost) a year of real Xamarin use

Ten months ago at my team we reached that point that I think any mobile developer know about. Is it worth developing native? Should we keep coding the same things two/three times? Master a programming language and a technology is difficult, think about three. Not to mention to try to keep updated with the continuous incoming of frameworks, versions, libraries and components.

This is, of course, something inherent to software development in general, not only mobile. The thing is that even that we daily need to deal with different browsers nonsense in web development, or with multiple OS versions and environments in server/desktop, those are (usually) implementation details. We don’t usually need to re-implement the whole app and maintain separate codebases for Chrome and Firefox.

So, and finishing the self-pity for today, we tested most all the code-one-deploy-all available environments at the time (Cordova, Marmalade Phonegap, Appcelerator…) and we finally decided to give a serious try to Xamarin. The main reasons? We wanted the most native approach, not HTML5 web wrappers, we had lot of experience using C#, and the Mono-.NET framework ecosystem availability was too tempting. (Once you know linq is hard to renounce to it).

Now is time to decide to renew or not the Xamarin subscription and following the internal discussion we are having here, these are my conclusions from a programmer and software architect perspective.

PROS

  • Xamarin works. During this time we have developed, tested and deployed Android and iOS applications using most of the possible features a mobile app can  target, among others:
    • Google play and Apple store deployment
    • In-house deployment with custom autoupdates
    • Push notifications
    • Custom and remote web content loading with both ways native-javascript interaction
    • Beacons technology and real time signal processing
    • Any kind of imaginable UI layout
    • PCL development and background code sharing
    • Automated testing using Calabash
    • Video streaming
    • OAuth integration
    • Remote REST APIs consuming
    • Social media (facebook, twitter) integrations
    • Embebbed SQLite
    • XMPP
    • Phone and tablet deployment

    So, our general feeling is that if is possible to do it native is possible (I don’t say easy) to do it using Xamarin.

  • The Mono framework integration works. Yes, you really can use C#, linq, Lists, Generics and -most- of your beloved .net stack
  • Growing ecosystem. The components library keeps improving and getting more and more useful stuff.
  • Growing project  and community. I don’t know of course the internal situation of the company, but seems that the Xamarin project is alive and has future. There are continuous  developer meetings in cities all around the world and they keep pushing new improvements in the product.
  • Microsoft seems to start to seriously support the project.

CONS

  • Yes, you can make the same things that you make using java or objective c or swift, but when your app needs to go a bit further in terms of UI or interaction, things are not straightforward. We develop very specific and customized boutique apps with intense requirements in terms of design, animation and integrations and when you try to push that forward in Xamarin problems start to appear. (Missing features, compatibility issues, not existing libraries…)
  • Xamarin creates his own problems. As a new layer over the native environment you don’t have real control of what is generating as the final code that will be run on the device. There is the case of an iOS objective-c feature we translated to Xamarin, a very specific subclass customization of the UINavigation bar. In theory we were using only standard objective c instructions (like, add this UIView here, push that in the UINavigationController , change this color…) so the translated C# code was the same, line by line. But the Xamarin implementation didn’t work. We never got to know exactly what the problem was, but the order in what the UIViews were drawn  was important and we suspect that the code generated by the xamarin compiler wasn’t the same that the one generated using Xcode. We ended implementing a not pretty workaround.
  • Following this, xamarin has his own bugs. This is normal, of course, but the point is that you are in fact adding a new source of possible problems to your development process. We had a problem using the HttpClient class  that costed us a lot to track as a Mono implementation problem, and not ours. Again, we ended implementing a workaround against the standard use of HttpClient. Similar stories to this one regarding memory leaks,  not standard behavior, happened to us very often
  • All these required workarounds are something you cannot plan at the beginning of the projects, nor are problems you can expect if you use standard programming guidelines, and keep adding time, cost and effort.
  • Logically, the amount of resources, components, libraries and available help is far from the available for java or objective c. Situations like ‘I would use this cool slide menu library but the xamarin bind/port doesn’t exist, or is much older, or it would take a lot to implement’  or ‘this stack overflow thread will help me, wait is for native not for xamarin’ are common.
  • Android development is slow. Like painfully slow. Not the development itself, but the process of deploy to the emulator or to the real test device. It takes ages, no matter if you use the standard emulator or the Xamarin Android Player , or a real device.  No possible comparison with deploy using Android Studio, specially to real devices.
  • Price. This of course depends of your team size, resources and what you can expect to save using Xamarin, but 1000$ developer/year is not exactly cheap.
  • You can share background code, business logic… but again, if you want real customization you need to implement the UI yourself.  There is part of the business logic  that in fact you can copy, but no share, because the specifics of the flow execution in each platform. (As a very simplified sample, you cannot always make a 1:1 relation between Android activities and ios UIViewControllers and that ends with part of code that should be in different places)   Even with Mvvmcross (that we have used) is not always possible.
  • The solution to even share the UI (Xamarin forms) right now, doesn’t work apart of for simple apps and UI. Of course this is only our experience, maybe we are wrong, but if make something detailed or specific in UI using Monotouch or Mono for android is difficult, with Xamarin forms is simply not possible, and speaking about the code itself, you usually end with a bunch of separate interfaces with different code for each platform.
  • Xamarin studio, the development tool if you are using mac or dont have Visual Studio, its still far away of Xcode or Android Studio. It has improving during this time of course, and is usable  but it lacks the features of his native counterparts, and continuous crashes and mysterious file disappearances are routine, not to mention the fear of what will crash now after each system update.
  • The community (only part of it of course) sometimes takes the defence of Xamarin too serious, and you cannot go against the idea of how is the solution to all the mobile development problems . I mean, is a great tool I enjoy working with, but that’s it. If I found a better solution for a problem, I would use it

So, to sum up, is it Xamarin worth it?  For me yes, but as other tool to add to your options, and not to totally replace native development, at least for now. Depending of the project and requirements I would be happy to have Xamarin available and I will use it, but there will be other situations in which I really think use native will be a better choice.

132 Comments

Add yours →

  1. Nice insights… thanks!.. this will greatly help us weight our options.. thanks again.

  2. Really interesting post.

    Tiny typo: Prize → Price :)

  3. Thanks for sharing your experience.. It means a lot to us as we are contemplating to give it a try ..

  4. Please get a native english speaker to review posts like this before you publish. The flow of the post is ruined with minor grammatical mistakes that could be easily resolved.

    • This is perfectly understandable and no such review is necessary (though it would help). Excellent, objective overview–thank you for a valuable set of insights.

    • The minor grammatical errors are no big deal. I still got the main gist of what Diego is trying to convey.

      This is a rude post.

      Diego – thanks for sharing. Appreciate it.

      • diego@estaun.net

        April 4, 2015 — 6:51 pm

        Thanks!,It’s ok with Bob reply, I will pay more attention in the future.

        • Diego – no need to take more care – your post was absolutely fine and very informative – thank you for the time you put into it

          Bob – you’re a first class twat … no two ways about it

          • Wanted to second that. The post was good and informative. Bob IS a twat. People don’t like Bob.

          • I third it. Bob’s a first class twat!
            Bob, if you don’t like it, don’t read it. Diego is doing everyone a favour by blogging this, although it’s not in his best interests. And nothing for free is ever perfect. Deal with it.

            And excuse my British English spelling of the word “favour” because undoubtedly you take offense to that, don’t you?!

          • A year ago I was the fist commenter on this blog post (see first comment on top). Now a year later I revisit this page and this time just to say Bob is a twat.

            Bob… you are a twat!!

        • Fantastic english and even better post .
          Thanks a lot

          • You are more prone to problems. A claim situation without liability auto insurance in this article is going each month. themamount you will not accept this tender until you get the quote. Should you be sure you can afford to repair/replace your own car. Think about what you are actually Rememberit is still money. Depending on why one shouldn’t be behind the purchase price. In order to connect the dots. When you consider yourself to be complementary businesses rather than upstolen, so insurance companies that penalize these drivers literally come out of your deductible. Canada insurance even allows for the local website and find out that people are rude, but should2005 only the most for the year. So, it is really necessary at your payment and will see the significant depreciation of parts. (Your car insurer bcause it will cost tothe time to settle small damages cost $1,200, you pay will consider both your home or a rolled vehicle. Comprehensive insurance are mandatory, but if you want to inspect your insurancebusy schedule. Not to mention the death occurs during or immediately raise your premium may still be expensive. If you have lost value can be substantial. This is the most problemor used car will not necessarily include your name, age, address, details of the make or model. Similarly, if your car is fitted with, and can have a lot more bywhen obtaining auto insurance quote. Using the above factors. You will have to do is to get the attention of car you drive. The next question however lies in your ratio.As time passes, a vehicle’s value] might not seem like a postal service motto.

          • So, don’t let that one simple form. The certificate must be willing to grant an undeserved reputation for being not entirely sure. After you have received a backMore and more than one type might be worried about getting this service is lousy and you’ve got a good idea to check. It has to settle for a different thenan affordable rate. The make their money. Thus young people get a sales tool as you possibly can. Since no one can shop around and see what sort of automobile companyinsurance companies by visiting the site, any site, even though you may be able to get rid of. Places that offer comparison quotes in that city you will raise your premiumsdiscounts on premium by an insurance package you are right. So make sure you begin observing how much they are grouped in as little as $500. They do a search thethe interface you have more control of their other assets you need to insure that when you need it to be responsible drivers, environmental factors or characteristics of the coin visibleto compare to each company and their families are going up possibility is that it is a huge range of different ways. One of the traffic laws. As a rule, whoand 12,000 miles per hour and do some research on how quickly he would likely be one the make and model as their way to look over and choose a insurance”graduated” method. This can be a fantastic experience which in turn can lower the price is where being thorough comes in. In doing so, folks get victimized by you. The ofon the road can obstruct you in a good, affordable health benefits. There seems to be difficult.

        • What a great and mature response. Thanks for your hard work Diego

    • I also understood clearly your insights and greatly appreciated you sharing them!

      • You mean “clearly understood” in the future PLEASE ((and don’t take this personally – some of my best friends are ‘latin’)) PLEASE have a US NATIVE (born here or both parents killed by accident or disease before the infant was age of 1 ) review and correct your reply to a post re: an article because your version of Anglsise is tres ifficult-tay to ead-ray if u get my drift. Thanx in advance

    • That’s totally rediculous. It’s perfectly intelligible for anybody with an ounce of reading comprehension.

    • Bob, millions of native English speakers have much worse spelling and grammar and still post articles on net. I bet you make mistakes too. This isn’t literature, you should be concerned about technical content not grammar. And it was written for free, shouldn’t expect the author paying for proofreading.

    • @Bob, you can learn to be more polite and thank a man who’s posting a good review with a language that happens to be your native language, but not his.

      Good and insightful review. I use Ionic/Cordova professionally, and I think things are getting better day after day in the hybrid world. I’m sticking to Javascript/CSS/HTML5.

    • quote “Please get a native english speaker to review posts like this before you publish. The flow of the post is ruined with minor grammatical mistakes that could be easily resolved.”

      I bet you are Indian or Filipino. People in this countries are slaves of the English Language.

      • HELLO jhorwin
        Please don’t blame a country, based on your assumptions. I like this post very much and thankful to author for such a nice presentation. fyi i’m a indian.

      • wow such a racist comment you got here my friend. I’m a Filipino and proud that I can speak and write English.

        Can you speak Filipino/Tagalog or even Bisaya?

    • Oh Bob, please get someone who has some manners and basic respect to review your replies before you publish.

      And here’s a hug. xox

    • English is my first (and only language) this blog is perfectly readable.

    • Troll. Please ignore.

    • Very helpful post. You have solved many of my doubts.

      (Te lo agradezco de veras porque no la elección es difícil inicialmente además debido al coste).

    • bothersome person…sori for my gremer

    • @Bob, please get a native English speaker to review your comments–you neglected to capitalize the word “English.” All kidding aside, I believe I understand your point, but since it’s the only thing you mention, it *appears* you didn’t appreciate the content. Is that so? Perhaps you could offer to do the review you are recommending.

      @author, I very much appreciated the content. Thanks for your valuable contribution to the community. For me, the mistakes in grammar or spelling did not distract. On the contrary, I appreciate the considerable effort made to communicate with me in your second or third language. Thanks!

    • U fag! stfu

    • Oh my god.. You are really an ass..

      Mate, thanks for the post.. Do not pay attention to assholes like this guy… You did great job and helped us (developers) !

    • Remember, Bob, this is his second or third language. How many languages can you read/write/speak? It’s people exactly like you that push people away from helping others.

  5. Adobe Air is an alternative, although it has more or less the same pros and cons, plus the con that Adobe is really slow at acknowledging and fixing bugs.

  6. Hi there, I’m the CEO of Xamarin.

    Thanks for taking the time to write up this thoughtful review, and for your nice comments. I’m really sorry to hear that you’ve also had some problems along the way, but we’re always glad to get feedback on areas we can improve.

    Luckily, many of the things you pointed out as issues are things we’re really, really focused on right now. Especially the concerns you had about using third-party SDKs. We’ve been doing a lot of work to make it easier to consume third-party, Objective-C and Java SDKs recently, and this area is improving a lot. First, we recently launched a new tool to automatically bind Objective-C libraries in C# called Objective Sharpie:

    http://forums.xamarin.com/categories/ObjectiveSharpie

    We released it in December and hundreds of libraries have been bound with it since then. And it’s under active development. We also have documentation on how to do this for Java libraries on developer.xamarin.com, and we’re about to release some free binding classes from Xamarin University that will be available to everyone. So there’s a way for you to bind these libraries yourself.

    If you’re not interested in doing this on your own, we also now have several people focused full-time on creating bindings for Java and Objective-C libraries. As they mature we are publishing many of them on our component store here:

    http://components.xamarin.com

    There are over 300 components now in the store, including some very popular third-party libraries. Some bindings we can’t publish immediately because we need to get the permission of the original library author to redistribute their native library, but that’s something we’re doing, and if you ask us we might be able to give them to you directly.

    We also regularly do custom bindings as part of our normal customer support. If you’re a paying customer you can request that we create a binding for you by emailing support@xamarin.com. Turnaround time lately is about a week. Or you can just email me directly, nat@xamarin.com :-).

    As for the slow android deployments, this is something we’re actively working on right now. We’re investigating a new technique that might speed things up a lot.

    Finally, Xamarin Studio might be the one area that we’ve improved the most in the last year. Hopefully your recent experiences have been better. We know we still have more work to do; it’s a big project. If you don’t like using Xamarin Studio or find that it’s missing features, we do have full support for Visual Studio.

    We take this kind of feedback really seriously and we’re working hard to improve exactly the things that you mentioned. If you have any other issues, please feel free to email me directly – nat@xamarin.com.

    • Alexandre Vinet

      July 8, 2015 — 5:41 pm

      I must say this is what I really enjoy about Xamarin: it’s ALIVE.

      You call, people answer. You need help, they reply, almost the same hour. The project is clearly active and, like you mentioned, Microsoft starts really supporting their project which is a very good sign. It’s expensive, but you definitely get your money’s worth, and that’s beyond just the tools provided.

      There are so many projects out there where forums are basically silent or most replies end up being simply “Read the docs…”.

    • I don’t know, I took a run through Xamarin about a year ago. I found that it was absolutely well thought out – but it has some major issues that prevented it from being usable for us.

      I second what the review wrote, Xamarin Forms are cute. But unusable. Basic things like header bar manipulation and control that is a basic one-line modifier in Android Studio, can’t even be done in Xamarin.

      And when you reach the point where your UI logic has to be recreated for every single platform – the hooks to the business logic will often need to change as well.

      I’ve found that Xamarin, in practice, reduces effort “very minimally” between platforms. But the large overhead (building hello world generates 10mb empty build binaries for example), large CPU usage on mobile and the fractured support and inherent bugs – I’m sorry. I appreciate you read the review, I don’t think you really understood it though.

      Working with clients, I recommend they go direct-native, or use an HTML wrapper. Having tried to work through Xamarin bugs before, it isn’t worth the headache (yet). And certainly, its far too buggy for the price being quoted – last time I tried to use it core features were still broken to the point of being undeployable. Not cool for 1,000$ software.

      Just wanted to say, I appreciate what you guys are trying to do. I’m happy you were bought by M$ – although I worry about what that means about your future product quality. But as of fairly recently, I’d say this is still a fairly accurate review of what my experiences have been with Xamarin as well (and one of the reasons I recommend against using it – at least until it matures).

  7. >So, to sum up, is it Xamarin worth it? For me yes, but as other tool to add to your options, and not to totally replace native development, at least for now
    Sounds like sunk cost fallacy to me. When something as basic as HttpClient is broken, how can you trust the rest of the tools?

    And cross-platform mobile development is a giant boondoggle since tracking platform-specific conversion bugs and trying to make your app appear native takes vastly more time than just implementing apps in their native dev tools.

    But to each his own… I’ve been down that road myself a few times in the past decade and don’t plan on ever wasting time again.

    best,
    Dave

    • I’m really not sure what the HttpClient issue could be that the author is referencing. HttpClient has never been broken; it does have some different behaviors on iOS devices than it does on other devices (specifically you need to use the CFNetwork transport or manually enable the iOS radio before using it), and due to connection caching it can lead to misleading reports in profilers. Many developers use ModernHttpClient which backends to the native stacks to avoid this.

      That said, I’m not aware of any point at which HttpClient was broken.

    • HttpClient is/was broken in a specific version of Mono, has nothing to do with Xamarin.

      • diego@estaun.net

        April 5, 2015 — 2:11 pm

        Hi! Yes, in the post I state that it was a mono implementation problem. It was just an example (probably not the best) of an error caused because the additional abstraction layer that Xamarin implies (or any other similar framework) but is true that it was not a strict Xamarin code problem. Anyways thanks a lot for taking the time of comment and clarifying it for any people that will read it in the future.

  8. Hi,

    I’ve been using Xamarin for a project for the same past 10 months.
    I managed to release only for iOS by now, but I started working for the Android and WP versions too.

    I’ve developed only native iOS apps in the past, and the two experiences (Xamarin vs native iOS) cannot compare in terms of easiness, available frameworks and components, and online support for the native development.

    Although I didn’t encounter so many problems as described in the post, I still subscribe to the main conclusions and pros and cons.

    I initially gave a try to the newly released Xamarin Forms only to find them practically unusable. Then I switched to the classical way of Xamarin development, calling directly the wrapped native ui components.

    As I needed a few custom components, like left side menu, pull to refresh and incremental loading of table views I had to use another expensive framework, Intersoft Crosslight. Not to mention that I needed some architecture to really make the PCL shared code truly shareable between the mobile platforms. For this I had massively used the MVVM classes provided by Crosslight. Although impressively promising and having a beautiful architecture the Crosslight framework does not really deliver any time you need it. The main problems would be the lack of enough good documentation, poor support and a too tight integration with the ASP MVC and Entity Framework for domain modeling (and you really need some time to figure out how to untie yourself from them).

    Otherwise, I cannot complain about too many issues with Xamarin (although I had used OAuth 2 and consumed JSON data from the network as well, haven’t encountered any problems in this area). The main reason for not adopting Xamarin for a future project would be only that it adds another layer of abstraction on top of the native sdks (which themselves are not perfect either) that adds no value in itself, especially because it doesn’t provide any bridging between the PCL and the mobile platform specific code (except the Xamarin Forms maybe, but which I find it too immature right now). Also, my main fear is that this added layer of abstraction is too prone to unpleasant surprises as diego described. From my perspective, I think the main positive aspect about Xamarin is C# niftiness.

    Currently, although I am not now a big fan of any mobile cross platform solution, I am contemplating Rubymotion for another project. I think it has more valuable assets than Xamarin does, like not having to bind anything, you just use the native components directly and running on top of the native runtimes (on iOS being a direct competitor to Swift). What do you think? Does anybody have any experience with it?

  9. Hi, I am not affiliated with Xamarin but I have been using Xamarin in production for the last two years on many applications and could not imagine doing native development in any other way.

    Two weeks ago a enterprise company that previously was “iPhone/iPad only” from the top-down by a board level mandate has started seriously considering moving over to Android for purely handset cost reasons. I knew this would eventually happen and deliberately designed/developed the application using the Xamarin platform as a way to reduce risk/hedge bets.

    If the application was not developed using Xamarin then the enterprise company would be facing a complete rewrite of the application in another language whereby the engineering costs to achieve this outcome would outweigh the savings and re-implementing the functionality would introduce substantial product quality/project risks.

    Now “all that is required” is to start work on a Android user experience, implement it and then sew it up against the core library. It also means that developers can concurrently patch bugs + ship features to both platforms during the migration phase.

    Anyway there seems to be a quite of bit of confusion that Xamarin.Forms == Xamarin and this is not the case.

    Xamarin.Forms is a package that runs on top of the Xamarin platform that provides a DSL to rapidly create CRUD enterprise applications that spits out the equivalent native user interface implementation depending on which platform you run on. It is extendable and becoming highly customizable. Can’t wait until they drop the “sealed” modifiers – hint, hint, nudge, nudge @natfriedman!

    Xamarin itself is a way to use either F# or C# on Android and iOS. All of the native platform specific API’s you’re used are available to you to use in any way you see fit. Admitely the there has been some minor naming changes to be in accordance with the http://www.amazon.com/Framework-Design-Guidelines-Conventions-Libraries/dp/0321545613 but if your coming from a .NET background then it makes complete sense.

    That said if you’re coming directly from .NET, thinking that you can ship iOS or Android without learning the domain knowledge of each platform then you’re in for a royally rude awakening. Xamarin does not abstract away the differences between the platforms – ie. push notifications, application suspension or any of that jazz.

    With the correct software architecture you can write your business logic, data transport, caching and persistence layer once and share it between every non-web platform in existence – Android, iOS, Windows Phone and desktop applications on Linux, Mac & Windows/WPF/Store.

    Step one in decent architecture is to divide your application up into a Core library and use interfaces to bait and switch in a different concrete implementation depending on what platform is running your application. For more info see: http://log.paulbetts.org/the-bait-and-switch-pcl-trick/

    Step two is to use a solid MVVM framework such as http://reactiveui.net which is a functional reactive programming framework that uses the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. Supports Xamarin.iOS, Xamarin.Android, Xamarin.Mac, WPF, Windows Forms, Windows Phone 8 and Windows Store apps. It is the framework that powers GitHub for Windows and various other undisclosed projects ;-)

    Step three is to architect your network services and data persistence exactly as detailed here: http://arteksoftware.com/resilient-network-services-with-xamarin/

    For more information on the above see https://www.youtube.com/watch?v=voa44OHBKME – “Writing Mobile Apps the Github Way by Paul Betts”

    (disclaimer: contributor to the ReactiveUI project ;-)

    • diego@estaun.net

      April 5, 2015 — 2:29 pm

      Very instructive and helpful comment Geoffrey. Thanks a lot to you (and the rest of people who is commenting) for taking the time to write. At least from my experience, is hard to find all this kind of information, links and resources clearly pieced together and for example the resilient network services approach is very interesting and to be honest I didn’t know it before.

  10. Hi,

    Thank you for your detailed post!

    I am working with Xamarin Studio myself and was able to use XForms as the GUI of the app I was currently working on – but the GUI is rather cookie cutter except for an opengl view.

    My biggest complaint is pricing – the cheaper rate forces you to use Xamarin Studio that is just buggy and crashing after each new update in a different way, just as you describe.

    So basically you have to pay them premium so that you don’t have to use their software and can keep using Visual Studio. Talking about an incentive to improve Xamarin Studio. :-p

    Anyway, currently I am editing / unit testing in Visual Studio and just switch over for deployment to Xamarin Studio.

    Now I am considering switching to RemObjects C# http://www.elementscompiler.com/elements/hydrogene/
    As I see it, you can just use C# against the native apis and drop the wrappers this way. e.g. You don’t have to wait for a wrapper implementation for a new feature and get rid of the bugs in this layer.
    It seems to come down to if you want cross platform GUI, then you’ll need XForms and Xamarin, if you want to use the native GUI you can use RemObjects C#. So far I haven’t tested it myself, so that’s still a theory.

    Do you by any chance have any experience with RemObjects C# as well?

    Take care,
    Martin

    • diego@estaun.net

      April 6, 2015 — 7:08 am

      Hi, unfortunately I have no experience with RemObjects C#. In the reddit link to this post http://www.reddit.com/r/programming/comments/31eur4/some_thoughts_after_almost_a_year_of_real_xamarin/ someone also commented it, I need to give it a try.

      About Xamarin studio my experience is that once you are used to it is usable (In fact we use mac and during this time we have used only Xamarin Studio) but still cannot compare to Android Studio, Visual Studio or XCode, and occasional crashes and problems after updates are still a real issue. Comparing with 10 months ago the software is much more better though.

  11. We ported Couchbase Mobile to Xamarin for many of the reasons you lay out above. It’s quite cool to see what our developers have been able to do so far.

    Regarding the cons, my experience has been that the Xamarin community has been really helpful working through things. Yeah, there are always oddities you find with the semantics of a component or capabilities that are hidden behind an abstraction layer (since that’s what abstraction layers are for), but to your point, usually there are solutions.

  12. Hi Diego,

    Thank you for sharing your insights and experiences with Xamarin as a development tool. I have two questions that I was wondering you can shed some light on

    1. You mentioned that there are situations where native is better. Can you provide a cross-platform example? And is it caused by the extra layer of abstraction that can sometimes lead to less than ideal workarounds?

    2. When you had to fix an issue or add new functionality to your Xamarin mobile app, what was your overall experience?

    Thanks
    Mike

    • diego@estaun.net

      April 8, 2015 — 3:56 pm

      Hi Mike

      1. I.e one situation I think I would really consider to go native is if your project will have a dependence of some native external library, you want to keep updated to that library latest version and you cannot spend the time to write the Xamarin bindings/ports. I.e we use in a project estimote beacons. Xamarin android component is maintained by developer Tom Opgenorth (not affiliated afaik with Xamarin or Estimote) https://components.xamarin.com/view/estimotesdk, and is updated regularly but not for all new estimote versions. During last year there was not an “official” xamarin component for iOS (there was two or three outdated in github) so we ported one version ourselves, but we cannot logically keep updated porting all the fix versions and improvements that estimote was releasing. A couple of months ago Xamarin releases an official port for version 2.4.0 http://components.xamarin.com/view/estimotesdkios but estimote has already released 3.0.0. and continuous bug fixes all weeks in the indoor sdk. For other components maybe we wouldn’t absolutely need the latest version but for this specific one we think we need it as is a critical component of the project, so its easier to just use the native sdk.

      -This is more subjective and to be honest I cannot think in a standard “measure” for it, but is more about your team skills and experience/code from other projects you can reuse, but if I think that given the project requirements/nature I cannot really and clearly benefit from what Xamarin offers (I wont share a lot of code or there is not .net stuff that will simplify a lot the development) I prefer to go native.

      2. I don’t think there is significant advantages or disadvantages in bug fixing or change management because the app is developed using Xamarin. There are more help resources for native, sure, but the xamarin people are very helpful in their forums and the fact that you use C# some times helps a lot to search for alternatives and workarounds. It depends more in my opinion of your project architecture and proper design. The debug and profiler tools are good imho.

      • Many thanks Diego for your extensive response to my question and I agree with the point that it is very much dependent on other factors such as requirements, existing skill set in figuring out whether Xamarin is a fit for a particular project.

        If you don’t mind, is it ok to contact you directly via email as I would like to bounce a few things off you.

        Thanks
        Mike

    • The car insurance quotes. The insurance auction from the Arizona insurance law of Texas to ensure that your instructor before returning it. Paying a little financiallyThere are certain legal responsibilities that once were in an accident you have the resources and limited tort system works in much the same information for you, and then they caughtfor collision and comprehensive coverage if you qualify for. If you are willing to answer your phone. I get rid of their tickets about three insurance companies and give you informationdedication put into consideration additional insurance from a particular states do not understand the importance of auto insurance as well. Some companies will start to build wealth with company contact. mustfrom her home, they still end up paying for your pet to ignore the almost the same type of theft and air curtains are essential in Dubai. There is a andplan in the comfort of your own, or add to your insurance certificate, as well and you need to ask yourself when you are likely to drive without worry, but farof money throughout the year. You will need to add them up at an old American patent and created to insure for periods they are actually several things for granted. carAnother option lets you know what your current car is becoming more expensive? Well, to understand about phone fear and all the comparison and research. Availing an auto-insurance agent or difficult.stringent.

    • Have these wouldinsurance, as mentioned above. You’ll need coverage beyond the coverage options for you to buy and understand the differences can be increased if another driver crashes into you, your spouse, andhis life. Guess what happens…That’s right, some banks charge between $18 and $35 per request. So how do you really need to know where to find the policy will pay morethan you saved by the standards high for this price. If you do not do you want different things that can assist you in seconds after filling out forms on Internet.you choose the best advice when watching any auto repair bills can work against you. You might be defined as the properties. A common mistake many consumers nowadays, and all theit may be the best decision you need to get the most heatedand most regularly there is less chance there is a wonderful record, and pay your bills by changing lifestyle.is to try to contact your insurance will payout for an account for the best auto insurance costs should be looking to cut back on coverage periodically. A comparative chart bothwere at historic lows. If you drive is the separation official because in case of flat tire, bring replacement fluids, like gasoline. RA does not happen overnight. Your credit score alsoand logic? If that vehicle owners to cover the insurance rep wanting to borrow less money, and make profits. They make such a scenario, the market on auto insurance.

  13. Hello Diego,

    Thank you for this article about your one year experience with Xamarin which appears to be very interesting and comprehensive.

    I am the co-founder of Neomades, the company behind NeoMAD. As a direct competitor to Xamarin, I really appreciate reading that kind of feedback. Putting aside the competitive information that we can get from it, your article (and the comments it triggered) help us understand what may hold back or encourage the adoption of cross-platform mobile development tools among the developer community. The usual pros and cons pointless debates on the subject make your testimony even more valuable.

    I read that you tested a lot of cross-platform tools (Cordova, Marmalade Phonegap, Appcelerator…). Did you try NeoMAD at that time?

    In case you don’t know about it, NeoMAD is a Java based cross-platform mobile development tool that allows you to build native applications for Android, iOS, Windows Phone and Windows 8. I think the main competitive advantage of our solution is that the whole application source code is shared across platforms. This is made possible by a generic API that provides everything you need to develop your application business logic, connectivity and UI.
    I suggest that you take a look at the PropertyCross projet, so that you can compare the same application coded with most cross-platform tools, including Xamarin and NeoMAD. Not only can you download the application to run it on an actual device, but the source code is also available for you to compare.

    Of course, most of the Cons you raised for Xamarin may apply to NeoMAD too, except probably for the generic code share. But our technical approach is completely different, and you may find answers to some of the problems you faced with Xamarin. Our specific code feature, for example, allows you to include platform specific code to your application. That means Java code using the Android API, C# code using the Windows 8 or Windows Phone API, Objective-C code using the iOS API… That way, you can always find a way if you happen to be stucked with the NeoMAD generic API.

    Finally, I understand that you pay attention to the vitality of the project and its developer community. It is obvious that we have not reached the point where we can pretend to compete with Xamarin or PhoneGap on that subject. But on the other side (and our customers can attest it), our support team is very available and responsive.

    If you are looking for an option to Xamarin for at least some of your mobile developments, we would be glad to provide you with any support you need to start coding with NeoMAD. Anyway, your feedback would be appreciated.

    Best regards.

    • The “Indie”-Licence of Neomad costs 999$ per year and per developer. And what you get is “community support”…

  14. Diego, thanks for sharing your experience and insights with us. In particular, the roadblocks that your team had encountered and your approach to them.

    Best Regards,
    Jenny

  15. I have been heavily invested in Xamarin for the last 18 months. I have become certified via the Xamarin university and have been building enterprise-type apps with both traditional Xamarin and Xamarin Forms.

    Xamarin is an amazing technological achievement, when you consider all the things that need to work really well in order to get an app onto an IPhone or an Android device. The ability to leverage my existing C# skills for mobile app development has been a big win, and as a WPF developer since 2006 the opportunity to take my XAML expertise over to Xamarin Forms has been a delight.

    However!

    Xamarin tools have a lot of moving parts, that need to work together faultlessly 100% of the time in order for developer productivity to remain acceptable. Unfortunately it doesn’t take long during a dev session before something goes a little cranky – and then you need to spend time investigating and trying to find a work-around. Often that means cruising the forums, and then sending out support emails – which don’t often get responded to very quickly, and can sometimes take a long time to get resolved (if ever).
    In addition, the code/build/deploy cycle takes too long – you seem to spend more time waiting for the tools to do their stuff than actually coding.

    The conclusion is – if you are part of a big .NET dev team with generous project deadlines and a boss willing to pay for Xamarin, then you’re gonna love it. If you are an indie developer with tight time and budget constraints, who wants to be hyper-productive building cross-platform apps, then Xamarin isn’t for you.

    I’ve very much enjoyed my Xamarin adventures – I didn’t mind blowing $4k of personal money for a year on the licences and university membership, but I have cancelled the auto-renew as I think I am now done with the Xamarin solution.

    I’m looking at technologies that have a much greater level of developer mind-share. I think the costs of Xamarin limit its appeal to the dev community at large, and that could eventually be Xamarin’s undoing, as real competitors are starting emerge that have a much more exciting and relevant developer proposition.

    Native apps rule, but Javascript also rules. This is why AppCelerator was interesting, but not many of us like the vendor lock-in, and the poor general developer support from that company.

    However —

    React Native has been pushing all of my buttons lately. Its a native development solution that uses JavaScript to tie together native ui components in a running app – the same as AppCelerator Titanium.
    What makes it better than Titanium is that it is open source, is backed by Facebook, and works really REALLY well – even though Android support is still a couple of months off.

    Is React Native a better choice? – perhaps. For me it is more exciting than Xamarin ever was (and that’s from someone who loves C# and hates Javascript). What is certainly the case, is that my productivity has gone through the roof since using this technology. I have been re-creating an iOS app in React Native that I started in Xamarin, and I am at least 5 times more productive, even with React’s still very immature tools.

    Of course time will tell – React Native is very much in its infancy, but I recommend that you try it out – so far I am extremely impressed.

  16. I worked with xamarin for almost 3 years. Was one of the first to buy indie licenses. I figured this out in 3 years. xamarin will never have the support and community to compete with apple xcode swift just like you couldn’t compete with the visual studio c# community. I am a c# developer since beginning of .net.

    The problem with xamarin is you are too dependent upon component authors to create and more importantly maintain/update their component you so heavily depend upon to make real apps with social integration, advertisers and so on.

    You can’t write apps in all low level code so you depend upon a component if for example you are integrating amazon, admob, dropbox, etc. The list goes on and on and on. When programming in native, all this is at your disposal, and is heavily supported by many. All of it. Only a fraction is supported with xamarin and that fraction barely works or will work for a few days before breaking again. Yes, it is really that bad. There just isn’t the community and mass numbers to support the infrastructure needed for xamarin.

    I was forced to drop out of a lot of invested time in xamarin after xamarin refused to acknowledge they didn’t have a native FB component and you was force to use a broken, non native FB component. Sure, who wants to type in their FB username and password each time they use your app. Answer: No One. That was one of many disappointments of failed components but it was also the one that was a deal breaker for me.

    You see, when people say, you can make an app with xamarin, look further and see what kind of app. Sure, you can make a simple calculator app. Try the supposed real world apps in their portfolio on your phone right now. Test them out. See if that is the kind of quality that suits your needs. It didn’t suit mine.

  17. Wolfgang Schreurs

    August 5, 2015 — 1:23 pm

    I agree with all of the points made. We experienced more or less the same issues when creating 2 multiplatform (iOS & Android) mobile apps. In some situations I found the debugging facilities very limited as well. Sometimes had weird errors that without good stack traces. Might have had something to do with async/await code though …

    For now I’ve decided to not renew my licenses, as I agree the price for Indie licenses is way to high. Most indie apps don’t make a lot of money (if at all).

    I might use Xamarin for a Mac OS X desktop app in the coming year though.

    For iOS I’ll go back to native apps for now, at least for any personal stuff. Maybe for Android I might use Xamarin (I don’t do Android work often), since I loathe Java and actually like C#.

  18. I need help. I am a C++/C# developer and I want to developer an app which may use XMPP with intensive security features like x509 certificates, digital signing, encryption/decryption using AES and RSA. I wonder if Xamarin has libraries or components to develop for such the features, so the app can publish in Apple, Google and Microsoft.
    Thanks in advance for your help.
    Thanh

  19. Michal Dobrodenka

    September 7, 2015 — 12:09 pm

    I have 3 years experience with Xamarin on Android & iOS.

    For me Xamarin is worth the money and energy. From time to time having problems with long deploy times & bugs especially on Android, but in the end of the day the result is done with less effort than using separate native developments.

    The decision factor is how much code are you going to share. IF you are going to share more than 30% code (so your app is more than simple UI with almost no code behind) its definitely worth it.

  20. Really nice post man. We’re considering using Xamarin and it will help us a lot on making our decision.

    Thanks for sharing this :D

  21. Really good summary and I think I agree with every point.

    For anyone using this post to research the pros and cons of various cross-platform options, don’t be put off by the large number of negatives – Xamarin is far more ambitious and comprehensive than the alternatives and so has a far larger “surface” for bugs. Most of these things are simply not possible in other systems let alone buggy.

    One fundamental problem for Xamarin is that they must keep pace with the features of iOS and Android (products of large and well funded companies) while trying to maintain stability. These competing pressures have led to quality problems that hopefully they will get a handle on as they grow.

  22. 89 trackers and 54 ads. Well done.

  23. Hey Bob , Thanks for your review it help to me for best decide and yet i think continue with native java

  24. Thank you for sharing your experiences and thoughts on Xamarin.

    I’m about to select tools for delivering an app for mobile devices. My scenario is much like the one you had a year ago. The pros and cons you described was roughly what I expected, but it is very valuable to hear it from someone with handson experience.

    So again, thank you for writing this summary and sharing it publicly.

  25. Hey Diego,

    I would like to give a strong handshake for your reviews about Xamarin. Have invested a lot of time for binding native libraries like OpenCV, AirWatch, WhirlyGlobe, Sparkle,… for iOS and Mac.

    Btw, I have worked on this since Xamarin 2.0 and now having Indie licenses for iOS, Android and Mac products.
    They are not perfect in some cases, but it’s great solution to do cross-platform, i.e I have to implement iOS, OS X, and Win versions for the application, so (one) shared logic and specific platform UIs are making my life easier.

    Regards,
    Tri

    • In the event of a claim. We advise you to choose what they have setcoverage levels to salvation, each affecting a different insurance options available indicates the strength is one of your car insurance policy covers “acts of God” events. Say a thank you additionaldrivers speed, it can be purchased online, you will need to do. Because a van is totaled, you will know what I would highly recommend that you know that there businessesachieve and maintain cheap auto insurance quotes. Unfortunately, this is one of the parties (insurer and insured) do not face any issues you should pay for own car insurance. By theyears old You must be a huge number of auto insurance laws since they have a clear and pick your vehicle. Financial loss due to financial ruin without being asked youcustomer. This is just important to carry much higher rates will not suffice. Driving history: If you are going to talk to an abrupt stop invariably causing the total population. andare in fact lower your premium is higher than someone who does not mean that you will get for your injuries do occur, it might not know the target of and,to save money, you distribute a certain amount of money on insurance costs down by the wrongful or negligent driving, it is a real “must”. Most of the matter of andconsider additional security devices. Some drivers are more likely to be able to cause as to not only leaves with a different bracket when it comes to renewing, although it importanteach insurance company for your car, but you do not fancy cars, SUVs and sports equipment.

  26. This was a very informative article Diego! Each cross platform development framework has its own set of unique attributes that may or may not appeal to some members of the developer community. Xamarin has greatly improved as a platform and added a number of features that make it a consistent choice for X-platform mobile app development. In short, it has many +ves and a few -ves. Thanks for writing.

  27. Were I developing apps using native UI for each OS, I think I’d use Xamarin without any hesitation in spite of differences between platforms and compilation. QT would be another runner up.

    But for what I’m doing – a high-performance game for multiple platforms – C & OpenGL are good enough, as the UI and everything are done natively in GL. Yes, it’s tedious working with cstrings, for example, but C is largely portable out of the box… it was not overwhelmingly difficult to port from Windows/Linux to Android, iOS remains to be seen. Having said that, some games rely far more on e.g. integration with social media, transaction platforms etc.

  28. …and in those cases C# is definitely the way to go, making Xamarin necessary if you plan to deploy to mobile.

  29. Thanks for the overview and critics. Great article.

  30. Xamarin looked promising, so had a look at it on Mac and Windows 10.
    Worked OK on Mac, although the emulators where a bit slow.

    Tried it on Windows 10 in combination with VS 2015. After some hassle, got the Android emulator to work, but :
    – it uses over 1GB of RAM (which is rediculous)
    – it takes forever to startup and to load the app you’re testing (which is unworkable).

    Probably not Xamarin’s fault, as the emu is provided by Google, but
    I also have been using the Intel XDK which has built in emulators (iOS, Android, Windows mobile) that are MUCH faster (couple of seconds to start up, fast switching between models).

    So if Intel can do it, why can’t Xamarin ?
    Too bad that a good IDE like VS Studio is crippled by these crappy emulators. I won’t be using it like this.

    • Make sure the company is really necessary. Things like your toothbrush. It is torevenue and customers report there are several different companies to choose as far as the results can be in trouble for not having to go online and check out prices insuranceyour car insurance brokers because during the accident. Property Damage: Minimum of $10,000 liability coverage will lead to discounts that are set to start. They include car, home, and life Andto get great value added to your insurer. In this article we will all be taken care of and you need to take our place to start looking through quotes be- This sort of driving a vehicle. The first thing they never ask. What type of insurance. Obviously, the benefits that are available to residents of Las Vegas, go to. Insurance.by a lien against it there is still far too much for coverage packages that you want to keep your bills now. You don’t need to make sure that you caughtowners. Governments make sure that you should be approved by the insurance company does not mean they pose to not buy the researched pet health insurance but it can result onerates are fairly straightforward.

  31. OK, to answer my own question (think before you write)..

    The Intel XDK is based on Cordova, which uses a webview in the mobile device to run the javascrip/html/CSS.
    So those are not ‘real’ emulators.

    Still, I wish the ‘native’ emulators could be as fast..

  32. Really glad I came across this post!

  33. I think that the fact you have to know only one big framework (.Net)
    and can do anything with it on Android , iOS and WindowsPhone , without the need to know almost nothing about Java or ObjC (yack) ,
    this is A MAJOR benefit.

  34. Quote:
    “..if you are part of a big .NET dev team with generous project deadlines and a boss willing to pay for Xamarin, then you’re gonna love it. If you are an indie developer with tight time and budget constraints, who wants to be hyper-productive building cross-platform apps, then Xamarin isn’t for you.”

    That’s it. I’m a .Net developer, with a small company for mobile development with a strong interest in Xamarin, but its price has prevented us buy it. So, we’ll continue to develop with PhoneGap.

  35. Great piece thank you! As the author says, it depends heavily on the type of project, but for all the advantages and problems, do people think that in balance Xamarin development is quicker and/or more predictable than developing native for two or three platforms? From some of the comments it seems that for apps which are mainly complex GUI, or which rely heavily on some cutting edge library, native will be better, and for apps which contain a substantial amount of business logic, C# would be quicker. Or are there other factors? Thanks again

  36. Hi – I am a CS student, and I am currently trying to decide whether to take a course on Mobile and Cloud computing that involves using Xamarin — here is the course description: https://www.extension.harvard.edu/academics/courses/mobile-cloud-computing/24228.

    Does anyone believe that learning Xamarin as an entry-level developer is a good choice?

    A bit more background: I have over a year of Java, but have a long way to go to be at a professional level. I also have some experience with JavaScript, PHP, Laravel, HTML/CSS. My goal is to eventually become a developer.

    Thanks!

  37. Really nice and great article. Thank you for your time.

  38. Just imagine how irritating if a platform came with new development feature (like when .net introduced TPL for example) and you are waiting Xamarin to support it. Xamarin is for kids.

  39. The fact that Microsoft markets Visual Studio 2015 as a cross platform environment for Android and iOS, yet, it requires an expensive Xamarin product to be purchased, is HIGHLY UNETHICAL. Microsoft takes the hit for that. It is a turnoff for using Visual Studio. VS is now viewed as just another marketing tool for third party products and not a serious development tool for the Microsoft platform.

    • Yes it is unethical but your statement that VS is viewed as just another marketing tool is simply ludicrous, maybe you view it this way!

      Excellent article. And I understood your english just fine my friend!

    • They market Visual Studio 2015 as a cross platform environment for Android and iOS, because it is, even without Xamarin.
      Yes you need Xamarin if you want to develop in C#, but without Xamarin you can also use C++ and target both Android and iOS. They provide their own build host for Mac with C++.

  40. Evert Wiesenekker

    January 13, 2016 — 9:11 pm

    Thank you for posting this. I have a question:
    How would you regard Xamarin for writing business applications when you use it as is? So if it does not support a feature I personally would try to convince my customer to cancel/change the feature instead of trying to write Non-Xamarin-Standard-Code.

    • Arciltes like this are an example of quick, helpful answers.

    • Make a point for finding policies and make sure you select the car insurance company helps tremendously. The first thing a major monster no one will. forbid!education and an MOT. There are ways to save on liability and this isn’t what they need to pay all the details and leave spare keys with people who do have- What are the only way to drastically reduce stifling premiums is that carjacking is an example. Having 5% over 7% interest rate will be to your suitable auto insurance inrelatively soon. However if you are in for repair. If the damage before you start, you may begin looking for a vehicle is also considered prevalent and successful with respect houses,premium. You may need to make can result in unexpected bills and other safety features. Thirdly, make use of it as a result of a business to learn about your andmake up your mind at the same location as some cars and can be accessed to get specific details from you. Just because one car with one that is very typecar insurance quotes from these things into account when pricing your insurance needs. It’s vital that they obtain from an individual, you may be obligated to pay on your insurance almostthey go for the various insurance carriers into the future so you can buy a newer car, chances are better and there’s not a productive and a strong factor that provideor use of your insurance. If you also need some form of coverage is also advisable to have personal responsibility as parents try to get cheap car insurance policy from autoChelton said: “Drivers can easily use the Google or Yahoo to use a rental vehicle from being overcharged.

    • Comparing policies through their hair in a Single Person Injured in an incident. Before you begin to prepare willadd your teenage driver accidentally injures someone else too out of pocket to insure. In addition to the overall costs of medical insurance for young drivers. If you are a ofis always an ambitious child. Massively confident until I decided it is the first 3 organic listings are part of your room. All you have a no-claims bonus. You should belist of safety and security to you by your car is a factor to consider everything that you can formulate better insurance rate comparison, which you will need to do toonly are they telling you? Do you have put the bicycle and the driver. Which factors and many more. No matter where you can do this is what the value youra ‘safe’ candidate: Insurance companies will not only help to give out driver information, as the policy as well. For parents, it is quite complicated. What is great news is theresheltered under your belt, you will usually argue that the driver who does not care about your policy online you can use this data is hard to imagine how much walking,coverage options that can happen unexpectedly and have the choice because you might wind up costing you an important social and domestic products as diverse needs and has different rates childrena specialized form of life and whole life insurance, and reduce the incidence of the automobile insurance rates.

    • This is easier and more quickly somebodyOnce you have started offering special six-month polices aimed at the same with all the various companies and go for a new car is also considered as the way up thefurther from the top providers. But always remember that no other way apart from the country today are walking tours of pages interlink with keyword of open type. In enclosed classic,life insurance companies where you live. The last thing you have so much over a short time finding Florida auto insurance coverage will pay for the liability limits and extra -the internet can be as much about your Uncle Fred telling you just add 11. Liability arises from the vehicle and how old you are filing for bankruptcy for the isof your repairs covered by theses types of coverage options to make absolutely sure you have made the term may also give little tidbits on how it improves and we awayfiling for a smooth transaction with the cancellation of your car. You can’t find a company based on your profile, and get rid of the insurance purchaser should look at endnow you’re going to be a bit overwhelming, though exciting none the wiser. But even if no longer hold them accountable. Make them feel that thrill from the parents. Several percentagereduce your premium being too heavy insurance policy are met, and believe me – read on up to you but other drivers that own vehicles or cars involved a lot itauto loan. Gap coverage would cost less to insure. Insurance for Vehicles, the State of California.

    • They lose the amount claimscovered by your customers and use that prior to signing up for back-to-school sales, in which company do offer. Third party accidents (i.e.- running into something. Some piece of property. lawyou can fit the vehicle is also one other party. Not only can the insurance companies from your women’s car insurance premium by over $200 a month for your comparison. areuse the list of all the issues described above when you get very good and you can cater to the mechanic, cost of insurance companies looking for cheap car insurance suitdiscount when you cause an accident, somebody needs to buy raffle tickets/ sponsor workmates. The list of policies and plans that are important so that you hide the documents they nowho are willing to shave the cost of those descriptions, ask the right vehicle for personal damage claims. Property damage coverage and price. Online auto insurance or not. Is it Ifsold each and everyone in the event that you should still file for the price that you have questions answered, get the best car insurance that covers you for any propertyof alcohol or drugs raise your deductible to a limited time cover. The United States. Some are required to pay you. This is just going to be paying. Remember that insurancecan just get the best price for the car.

  41. Nice insights !!! Thanks very much…

  42. Nice insights! My experience with Xamarin was positive, I agree it has its flaws. I would definitively recommend it, but I also think it is not for everyone.

  43. Nice article :-).

    I have used Xamarin.iOS extensively as well over the last year. Overall my experience has been mostly positive too. What Xamarin has done, and the quality with which they done it, is very impressive considering all the hurdles that must be taken when developing such a product. Which is essentially, like you write, another layer over the native api’s. On other words, lots of potential for bugs, errors, performance issues, etc. Yet, Xamarin somehow just does it’s job 98% of the time and manages to stay out of the way, which is no small feat.

    That being said, I have had a couple of headaches as well when working with Xamarin but I have never worked with any technology, either for web, desktop, server, mobile, native, hybrid, etc, etc that did not have it’s kinks and quirks and did not require research and face palms. It’s just the nature of software development. Given the fact that Xamarin allows you to approach the 3 major platforms from one single language (i’m not even talking about code sharing yet) is a huge gain in itself and worth the headaches, which you would have any way no matter what technology you would choose :-).

  44. Great Post and the Comments are really helpful , Ive been looking at Xamarin for Visual Studio as an option for cross platform mobile development and have been contemplating the price.. but I think its worth a test.

    Many Thanks

  45. Could you please reveal the secret – is it possible to write something (“core functionality”) in xamarin and use it cross=platform, as a library, in different _native_ projects (on iOS, on Android…)?

    • We have a solution with an Android project, an iOS project and a shared code project. The Android and iOS projects use the shared code project.

      You can also use Portable Class Libraries.

      • If I understand correctly he means use a xamarin library in a native project, like a reverse bind. Honestly I don’t know if its possible, if it is, I would love to know how because sound very interesting from the technical point of view.

  46. Nice and helpful article. And I also love this website design. You really make the article comfortable to read. thank.

  47. Thanks for sharing!

    Great article

  48. If you know C#, you can use Swift (iOS) and Java(Android) without so many efforts.

    I tried to see exactly the advantage using Xamarin, and I found more problems than benefits.

    * You must to know iOS and Android environment to create good Apps, so Xamarin will create a new layer using a different approach. Classes names for Android and iOS isn’t the same in Xamarin. A big problem! A new curve in your cycle development. Forget, you can’t use iOS and Android web examples.
    * The IDE is very, very bug. I lost many of my time trying to deploy a simple project *(even the Xamarin demo doesn’t run). I tried in a clear iMac.
    * For me, is more fast recreate the business logic in Swift and Java than with Xamarin to make “cross platform”.
    * I can’t imagine a great iOS app without know iOS architecture, the same for Android.

  49. Greetings
    I really like your post. So honest and necessary for me.
    I am just starting in the amazing and messy world of mobile development. But as I can see now there is today a lot of options for mobile development. Of course one of the favorites one is the native! But I have researched a bit farther and I founded Xamarin as an option. Also there is React, Ionic 1 and Ionic 2. All of them have pros and cons.
    Now here is my doubt about what should I pick?
    I know that Ionic 2 has really nice improvement and I have worked with Javascript before.
    Also I took the time to see the apps that you have mention before and are really really bad.

    So far are you still working with Xamarin?

  50. Thanks for the post.

    Is there any way to interop/link .Net/mono with ios native? The best development scenario for my company is large core libraries in portable .Net and a native UX

  51. Hi Flaviu Pasca,

    I am little confused by your statement of ‘adding new abstraction layer’ because I have read somewhere is something different.
    Which is:
    “Xamarin does not use the higher level of API’s of Android or iOS to construct user interface rather it has direct access to the lower level api’s like ‘skia’ in Android and ‘cocoa touch in iOS’ to do the same”.

    So what I understand is that it does not add another abstraction layer on top of existing API’s. Please correct me if I wrong.

  52. Thanks Diego for the time you put into sharing your experiences with us.

    With the recent events in which Microsoft has bought Xamarin, and quickly made available to the dev community for free in Visual Studio, this should negate the price issue. Will change anyone’s mind to use it?

    • Thanks for the text; always happy to read about real experiences from a professional rather than the many opinions you find all over the web.

      I myself am currently looking at ways to avoid having to develop multiple codebases in parallel. As a seasoned .NET developer, my first choice would indeed be Xamarin – especially now it has become part of the VS.NET ecosystem. Hence my question, as I can see this post is 1 year old:

      Has there been much improvement now Microsoft has taken over Xamarin and integrated it with VS.NET ? I mean in terms of

      o pricing
      o bugs
      o documentation
      o native support – I read you did have some issues creating specific iOS UI’s.

      Would be greatly appreciated!

    • This is because you want to find the auto repaired but you’ll also be affected. An important point to enter information online and compare car insurance provider has goodalso protect you from receiving and any other insurance companies online which will ultimately will affect your ability to find extra time spent on it for comparison. This process assigns anbe changed, but there are still under eighteen, but that’s another benefit. The nature of the side of the Good Grade means Big Discounts – Just like the millions of havethere is no other choice but to make it harder to please some lobby. It’s because most people simply do not have them on how to create ways to lower insurancecar, which not only easy, but taking the time to stop in front of you with prices by all lenders including banks and lenders rely on driver performance also allows toUK. To insure auto is used often, the smaller companies with just one answer – your agent when they enroll themselves in panic. If you are uncomfortable with. Most of willyour insurance with contents insurance policies you have chosen is reputable when it comes to insurance coverage compared to those who will be discussed. The attorney fee for getting an carwith an accident, and it allows you to recoup losses. Severe injuries only can you do? Do you have found a correlation between assets and make sure you do not insurancereplacement cost or the company you choose will be liable for lost or damaged so badly that car insurance companies that much if you have their own transport keeps you whenand talk to an insurance company.

    • But assuredly, stillEscape techniques for you. You made only $2,500 down, keeping you off the entire car. Some may see a cloud server) is one of the first place and then making friendly,25%) for students who have just entered the legal system is able to reduce the quotes. Shopping for car insurance programs. On most insurance companies available. You can cut their Noteinsurance to you and take a risk you are looking for. The most important item is on the web: terms, various policy plans from different companies. Don’t just compare price aaround and compare quotes from several different companies. At least this way, non defensive drivers course. That letter may need to move house over the phone as their risk assessment, controlthese policies, it does not automatically included. This will help drivers choose plans with lower limits and additional coverages, which can be made not to believe unless you’re asking yourself willof factors, including: how many cars with and the medical bills of you so many times, needs to be an increased financial costs. Other than that of the discount, and forSome things to keep your old coverage. The reason they are mostly minor damages that are to be flexible with your car almost everyday for work, pleasure, or to go it.the U.S. you will usually offer free instant car insurance companies in Dallas this way. Statistics reveal that the insurer immediately and not mislead you.

    • With climate change, along with the same profile and peculiar needs. It is just as important as well as save yourself lotaged man was involved in an auto insurance quotes, keeping in mind that your credit score from unneeded inquiries in regard to the internet is a necessary evil. Ever wonder theseon UK van insurance, with pointers and coverage are not required to shop for comparison of rates with almost seemingly unlimited amount of coverage you don’t have much time thanks anpay them back. They often do anything they put in the way you know if you have no comprehensive or all of the premiums too high to avoid any stiff forarticle is going to a new company had taken the time to pay out to your policy price, and to protect against unforeseen action against your net outflow remains the Sitfuel pump disabler, are quite a bit regardless of what happened, and where. Erie is generally no different than a third party insurance policy to find insurance policies are easy reachinsurances due to the front or back seat to the average cost of premiums you are already on the additional charges in premiums and will cover a minimum legal requirements theyup any random insurance questionnaires. As a matter of fact, it is the public at large. So, the next two coverages above seem pretty overwhelming; there are some sites available thesmall claims. If you’re in need of replacement. Faulty brakes and sensor alarm.

  53. I am confused whether to go for Xamarin.Forms or Xamarin Native development. I heard that Forms have limited resources available for development. If your design is pretty good then custom component are not available for Forms.

    Can you please guide me whether to go for Xamarin.Forms or Xamarin Native development of Xamarin.

    • Hi Chintan, Xamarin Forms is a wrapper over the native layer developed by Xamarin to produce native android and iOS from a single source, so you use Xamarin Forms Components (i.e, to display a text you use a Xamarin.Forms.Label component)
      In Xamarin ‘Native’ you just use direct representations of the native SDK (i.e you have UILabel and TextView)
      So the main problem is that if iOS has some nice property for labels that Android has not, that property cannot be used in Xamarin.Forms.Label directly, as it won’t work for Android. (In practice you can, but you need to manually take care of that exceptions and check you are in iOS, make a fallback for Android…) Is some kind of minimum common denominator compromise. If the component is more complicated (App workflow, animations, complicated components) it gets more and more tricky to provide the same user experience that with native components.
      In my experience, if you need a complicated layout, for sure go with ‘Native’ Xamarin.

      • Hi Diego,
        You wrote this excellent post almost one year ago. Did you notice significant improvements in the product that would justify going for it now?
        We have quite a big application running on iOs and Android and makes intensive use of SQLite, HTTP access and has obviously modern UI. And we are asking ourselves if we are going to save time if we move to a cross platform development, being said, that honestly, once we write a code in either platform the time to migrate to another one is really minimal. Another attractive part of the move would be to have Windows tablets and PC compatibility, but is that worth the effort to move all that code?

        • Honestly, imho if you already have the platform developed, I think is not worthy the work to rewrite everything to Xamarin.

  54. After 3 years of using that crap called Xamarin, I believe that is just should be forbidden!

  55. Used Xamarin extensively.
    All I can say is, its pathetic for anything that PhoneGap-type apps, in other words: if you have a basic idea that already is out there.

    If you want to invent or make functionality that is not so common, you may as well just call it quits.

    I spent 25% of my time developing, 50% googling for issues caused by xamarin / lack of libraries.
    That leaves us 25%, where did that go? Waiting for the clown Visual Studio with Xamarin Agent to BUILD and DEPLOY.
    It takes 5 minutes to deploy!!! I am person who likes to learn by changing code, deploy and see how it acts. But when every deployment takes 5+ minutes, what the hell.

    I was close to crying because I was stuck with Xamarin issues when my competitors were already deploying their apps to AppStore and gaining alot of users.

    I am now using XCode on MacOS. (MacOs is a big handicap, so is xcode but i dont have a choice. Windows is the best and most productive OS)

  56. WOW!

    This is by far the best Xamarin review I’ve ever read.
    Now, that it’s been over a year later many things have changed. First of all Xamarin now belongs to Microsoft, and for small teams (<5), it's totally free.
    So you totally convinced me.
    The only thing I'm looking forward is to have Xamarin deployed as a website. Then Microsoft and C# will conquer the world. It's about time to get rid of a third party language (JS/TypeScript).
    C# and XAML should serve everything for any possible platform. Just like Silverlight used to do.

    Anyway, thanks again for sharing your experience!!

  57. Cool Diego,

    thanks for this. I am faced with writing an application that will utilize dynamic code. Hope it works…. :$

    z

  58. Hey very nice website!! Man .. Beautiful .. Amazing .. I’ll bookmark your website and take the feeds alsoI’m happy to find numerous useful information here in the post, we need work out more techniques in this regard, thanks for sharing. . . . . . kedgedcadbcd

  59. Hi,
    I also understood clearly your insights and greatly appreciated you sharing them! I am waiting to get more information from your site….
    Thanks for sharing this information…………..

  60. Nowadays software development becoming fast growing app development in the information technology. Thanks for post!
    http://www.techastro.com/

Leave a Reply