Google offers the Firebase suite of application development tools, available free or at cost for higher degree of usages, priced flexibly accorded to features needed. The suite includes A/B testing and Crashlytics, Cloud Messaging (FCM) and in-app messaging, cloud storage and NoSQL storage (Cloud Firestore and Firestore Realtime Database), and other features supporting developers with flexible mobile application development.
Firebase should be your first choice if your platform is mobile first. Firebase's mobile platform support for client-side applications is second to none, and I cannot think of a comparable cross-platform toolkit. Firebase also integrates well with your server-side solution, meaning that you can plug Firebase into your existing app architecture with minimal effort.
Firebase lags behind on the desktop, however. Although macOS support is rapidly catching up, full Windows support is a glaring omission for most Firebase features. This means that if your platform targets Windows, you will need to implement the client functionality manually using Firebase's web APIs and wrappers, or look for another solution.
Xamarin is well suited for several reasons. The first, it allows companies to share code across platforms. If the app has a lot of business logic and a fairly simple UI, Xamarin is great for this use case. Xamarin also works well if the developers who will work on the app are already fluent in .NET. Xamarin is less appropriate if the company has a lot of developers. If there are plenty of resources to develop apps natively then the headache of dealing with Xamarin's issues are not worth the effort. If the UI is very complex and has difficult animations it's difficult to debug visual/performance issues in Xamarin.
Extremely robust. Has about any tool you can think of under one roof making it extremely useful as a backup platform for data analytics or small teams that need something quickly.
Intuitive and easy UI/UX. Being made and owned by Google, you expect nothing less. Very easy to use for anyone that has any marketing or analytical experience especially in Google Analytics (which I just assume all marketers do).
Safe, secure, and sturdy. Never need to worry about downtimes or misinformation as it's as clean and safe as it is being run by Google.
FREE! What else is there to say. Unless you're an extremely large application handling hundreds of thousands to millions of users, this pay as you go plan will stay free.
Firebase/Firestore has very limited support for querying more complicated items; for example, performing a simple string search is not possible.
While upfront costs are low, costs can grow quickly if you're not careful about what you are being billed for.
Dashboards have at times shown different information to what is billed, and support from Google is less than stellar and not as effective as that from Amazon or Microsoft.
Having also done a lot of native mobile development, some of the IDE's features need to emulator their native counterparts. For example, trying to extract a string resource on Android in Xamarin Studio is painful. There are many useful tools in Android Studio that Xamarin should implement.
Xamarin will always be behind on native platform features. They must catch up when Apple and Google release new platform versions.
The biggest pain point is the random issues Xamarin continues to have. Having a large code base on top of a native platform makes it very difficult to debug issues. Every developer must decide if its an issue with Xamarin or the native platform. Bugs don't get fixed very quickly. Hopefully that will change with the Microsoft acquisition.
Xamarin has been great for developing different projects efficiently and effectively. It's nice to reuse the core business logic across different platforms so that there are less to maintain and little replications are needed. The biggest benefit is that C# programmers do not have to learn a different language to do mobile development.
Firebase functions are more difficult to use, there are no concepts of triggers or cascading deletes without the use of Firebase functions. Firebase functions can run forever if not written correctly and cause billing nightmares. While this hasn't happened to us specifically it is a thing that happens more than one realizes.
If you are required to develop applications that are cross-platformed, Xamarin is a great tool to use. It will help save time and efforts from your development team to be able to build applications seamlessly for android, IOS, windows, and web on a single platform instead of requiring multiple tools to get the job done
Our analytics folks handled the majority of the communication when it came to customer service, but as far as I was aware, the support we got was pretty good. When we had an issue, we were able to reach out and get support in a timely fashion. Firebase was easy to reach and reasonably available to assist when needed.
I never had to contact support for any help. Most of the problems we ran into, we were able to identify and use peer support through blogs and other internet sources to resolve the problems. There are plenty of sources online which provide tutorials, discuss problems, etc. Example: StackOverflow
Just with any programming tasks, have a plan first. Design out the system, spend time to build it correctly the first time and have plenty of testing and user acceptance opportunities. Xamarin was easy to implement for a C# programmer. However, you need to do tutorials to realize the platform's capabilities.
Before using Firebase, we exclusively used self hosted database services. Using Firebase has allowed us to reduce reliance on single points of failure and systems that are difficult to scale. Additionally, Firebase is much easier to set up and use than any sort of self hosted database. This simplicity has allowed us to try features that we might not have based on the amount of work they required in the past.
Xamarin runs natively on MacOS, and the debugger and other integration and auto-complete tools are far better than Eclipse for C# .NET. It also carries much of the plugin/add-on capabilities that are so desirable on Atom. Eclipse is a better for generalized software development, provided a developer is comfortable switching between the IDE the command line for certain parts of their workflow, like building, package management, or debugging. But for C# .NET development on MacOS specifically, Xamarin is the best product I've used for the job.
Firebase has been able to help us understand reliably, the drop-off in our user flows with their funnel feature. This has made it easy for us to be able to pinpoint weaknesses in our funnel and test and optimize with data as the dependent variable.
From an economic standpoint, we don't pay for Firebase which is great, but as the saying goes "You get what you pay for" also holds true in this context. As we looked to grow and scale, we looked for a paid solution.
From a developer resource standpoint, Firebase has been extremely easy to integrate into our app. Whether it be the event tracking, dynamic links or crash reporting we have not had to waste too much developer time thanks to their well-organized developer docs.
Code Sharing - We were able to launch an Android implementation of our app within weeks after finishing iOS. The amount of time taken to develop a new platform is very small.
Monetization - not the best, but definitely getting better. We've had issues with finding suitable ad networks that work with Xamarin.