StackShareStackShare
Follow on
StackShare

Discover and share technology stacks from companies around the world.

Follow on

© 2025 StackShare. All rights reserved.

Product

  • Stacks
  • Tools
  • Feed

Company

  • About
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  1. Stackups
  2. Application & Data
  3. Frameworks
  4. Cross Platform Mobile Development
  5. Expo vs Xamarin

Expo vs Xamarin

OverviewDecisionsComparisonAlternatives

Overview

Xamarin
Xamarin
Stacks1.3K
Followers1.5K
Votes785
Expo
Expo
Stacks811
Followers693
Votes66

Expo vs Xamarin: What are the differences?

Introduction:

In the world of mobile app development, both Expo and Xamarin are popular frameworks used to build cross-platform applications. While they share similarities in their goal to enable developers to write code once and have it run on multiple platforms, there are key differences between the two that make them distinct choices depending on the specific needs of a project.

  1. Development Environment: Expo is a platform built on top of React Native that aims to simplify the development process by providing a minimalistic and opinionated workflow. It offers a simplified toolchain, allowing developers to quickly set up and start building their apps. On the other hand, Xamarin is a robust framework that uses C# and .NET to build cross-platform apps. It offers a full-fledged development environment with advanced features like a powerful IDE and access to a wide range of native APIs.

  2. Code Sharing: Expo primarily focuses on maximizing code sharing across platforms. With Expo, developers can write most of the app's logic in JavaScript, enabling seamless sharing between iOS and Android. Xamarin, on the other hand, allows code sharing by utilizing the .NET framework. Developers can share code written in C# across platforms, but platform-specific code may still be required for certain functionalities.

  3. Access to Native APIs: Xamarin provides direct access to native APIs, allowing developers to leverage the full capabilities of each platform. This enables high-performance and feature-rich applications. Expo, however, abstracts away the native APIs and provides a unified JavaScript interface. While this simplifies development, it may limit access to certain advanced native features that require direct interaction with the native platform.

  4. Deployment and Distribution: Expo simplifies the deployment and distribution process of apps. With Expo, developers can publish their apps to the Expo Client app, where users can easily access and test them. Xamarin, on the other hand, uses traditional app store deployment methods, requiring the creation of app packages specific to each platform. This may involve additional steps and requirements to deploy the app to respective app stores.

  5. Community and Ecosystem: Expo benefits from a large and active community, with numerous community-contributed packages and resources available. It has a well-established ecosystem that provides support and guidance for developers. Xamarin also has a strong community, backed by Microsoft, and offers extensive documentation and resources. Additionally, Xamarin benefits from the vast .NET ecosystem and developer tools provided by Microsoft.

  6. Learning Curve: Expo follows a more straightforward and simplified approach, making it relatively easier to learn for developers familiar with JavaScript and React. It requires a minimal setup and provides clear guidelines. On the other hand, Xamarin has a steeper learning curve, especially for developers who are new to C# and .NET. It involves understanding the Xamarin architecture and IDE setup, which may require additional time and effort.

In summary, Expo and Xamarin differ in their development environments, code sharing approaches, access to native APIs, deployment processes, community ecosystems, and learning curve. Choosing between them depends on the specific project requirements, developer familiarity, and preference for either simplicity or advanced capabilities.

Share your Stack

Help developers discover the tools you use. Get visibility for your team's tech choices and contribute to the community's knowledge.

View Docs
CLI (Node.js)
or
Manual

Advice on Xamarin, Expo

John
John

Feb 11, 2021

Decided

Our stack roughly divides into three major components, the front-end, back-end and the data storage.

For the front-end, we have decided to go with React Native via Expo. This allows us to target both Android and iOS with a single codebase. Expo provides "managed workflows" and an SDK that will simplify development and deployment.

For the back-end, we have decided to use Python. Python is the language of choice for machine learning (ML). It has extensive support for traditional ML algorithms (e.g. random forests) via Scikit-Learn and the SciPy ecosystem. On top of this, our industry partner has provided us their current solution written in Python. We decided to expose the back-end as a REST API using FastAPI. This allows us to nicely separate concerns from the rest of the codebase. FastAPIs use of static type hints, validation with Pydantic, and automated documentation allows us to build better APIs faster.

For data storage we decided to use a MongoDB Atlas, a NoSQL database. We decided to use a NoSQL database because we need to store large amounts of data (e.g data from the wearable IMUs). Moreover, due to the ever changing nature of a startup we require flexibility. NoSQL databases are schema-free which enables us to modify our schema as we see fit.

We plan on using GitHub Actions (GA) to orchestrate our CI/CD. Given GAs broad support of languages and workflows, it's hard to go wrong with this decision. We will also be using GitHub for version control and project management, so having everything in one place is convenient.

The major components of our CI/CD for the backend will consist of black for autoformatting, flake8 for linting, pytest for unit-testing, and mypy for static type checking and codecov for coverage reporting. We plan to use separate Docker containers to package the back-end and front-end components and use Docker Compose to launch the app. This allows us to better separate concerns, manage dependencies, and ensure our app is deployable anywhere.

109k views109k
Comments
William
William

CEO at Stealth Startup

Feb 11, 2021

Needs adviceonlambdalambdaAmazon DynamoDBAmazon DynamoDBWindowsWindows

We are developing an AWS IoT app for large boats. The IoT devices have sensors all over the boat for engine oil pressure, position, water depth, fuel level, crew location, etc. When the boat has internet, we interact with AWS cloud using lambda and Amazon DynamoDB. When the boat is offshore, the captain and crew still need normal and emergency alerts and real-time sensor information. The crew might have an Android or IoS phone or a Windows or macOS PC to receive alerts and interact with sensors. We may use the AWS GreenGrasss edge computing solution and either MQTT or HTML for that function.

Question: We want to develop a cross-platform client to run on Windows, Mac, Android, IOS, and possibly Linux. We are primarily Python programmers, so PyQt or Kivy are options for us, but we have heard good things about React Native, Flutter, Xamarin, and others. We think an AWS Greengrass core on an RPI4 could communicate to the client with MQTT or a local webserver with a client web interface.

Any thoughts would be much appreciated.

464k views464k
Comments
Furqan
Furqan

Jul 16, 2020

Needs adviceonReact NativeReact Native

Hello guys, I am new here. So, if I posted without specific guidelines, please ignore.

Basically, I am an iOS developer and developing native apps for the last three years. Recently, I started learning React Native to develop apps for both platforms. If anyone out there knows any useful resources that will become a better react native developer.

@{#newbie}|topic:null|

325k views325k
Comments

Detailed Comparison

Xamarin
Xamarin
Expo
Expo

Xamarin’s Mono-based products enable .NET developers to use their existing code, libraries and tools (including Visual Studio*), as well as skills in .NET and the C# programming language, to create mobile applications for the industry’s most widely-used mobile devices, including Android-based smartphones and tablets, iPhone, iPad and iPod Touch.

It is a framework and a platform for universal React applications. It is a set of tools and services built around React Native and native platforms that help you develop, build, deploy, and quickly iterate on iOS, Android, and web apps.

Cross-platform development- Thinking about supporting iOS, Android, Mac and Windows? Xamarin allows you to write it all in C#.;Reuse existing code- Use your favorite .NET libraries in Xamarin apps. Easily use third-party native libraries and frameworks.; Discover as you type- Explore APIs as you type with code autocompletion.;Visual Studio or Xamarin Studio- Create, build, debug, and deploy apps in Visual Studio. Or use Xamarin Studio, a fully-featured IDE that is built for mobile app development.;Native UI, Native Performance- Xamarin delivers high performance compiled code with full access to all the native APIs so you can create native apps with device-specific experiences.; Point and Click UI Design- Xamarin provides a world class Android UI designer. Use Apple Xcode UI designer to create interfaces and Storyboards that automatically sync with your Xamarin.iOS project.
-
Statistics
Stacks
1.3K
Stacks
811
Followers
1.5K
Followers
693
Votes
785
Votes
66
Pros & Cons
Pros
  • 121
    Power of c# on mobile devices
  • 81
    Native performance
  • 79
    Native apps with native ui controls
  • 73
    No javascript - truely compiled code
  • 67
    Sharing more than 90% of code over all platforms
Cons
  • 9
    Build times
  • 5
    Visual Studio
  • 4
    Price
  • 3
    Scalability
  • 3
    Complexity
Pros
  • 15
    Free
  • 13
    Hot Reload
  • 9
    Easy to learn
  • 9
    Common ios and android app setup
  • 6
    Streamlined
Integrations
No integrations available
React Native
React Native

What are some alternatives to Xamarin, Expo?

Ionic

Ionic

Free and open source, Ionic offers a library of mobile and desktop-optimized HTML, CSS and JS components for building highly interactive apps. Use with Angular, React, Vue, or plain JavaScript.

Flutter

Flutter

Flutter is a mobile app SDK to help developers and designers build modern mobile apps for iOS and Android.

React Native

React Native

React Native enables you to build world-class application experiences on native platforms using a consistent developer experience based on JavaScript and React. The focus of React Native is on developer efficiency across all the platforms you care about - learn once, write anywhere. Facebook uses React Native in multiple production apps and will continue investing in React Native.

NativeScript

NativeScript

NativeScript enables developers to build native apps for iOS, Android and Windows Universal while sharing the application code across the platforms. When building the application UI, developers use our libraries, which abstract the differences between the native platforms.

Apache Cordova

Apache Cordova

Apache Cordova is a set of device APIs that allow a mobile app developer to access native device function such as the camera or accelerometer from JavaScript. Combined with a UI framework such as jQuery Mobile or Dojo Mobile or Sencha Touch, this allows a smartphone app to be developed with just HTML, CSS, and JavaScript.

Framework7

Framework7

It is a free and open source mobile HTML framework to develop hybrid mobile apps or web apps with iOS native look and feel. All you need to make it work is a simple HTML layout and attached framework's CSS and JS files.

Qt

Qt

Qt, a leading cross-platform application and UI framework. With Qt, you can develop applications once and deploy to leading desktop, embedded & mobile targets.

PhoneGap

PhoneGap

PhoneGap is a web platform that exposes native mobile device apis and data to JavaScript. PhoneGap is a distribution of Apache Cordova. PhoneGap allows you to use standard web technologies such as HTML5, CSS3, and JavaScript for cross-platform development, avoiding each mobile platforms' native development language. Applications execute within wrappers targeted to each platform, and rely on standards-compliant API bindings to access each device's sensors, data, and network status.

Vue Native

Vue Native

Vue Native is a mobile framework to build truly native mobile app using Vue.js. Its is designed to connect React Native and Vue.js. Vue Native is a wrapper around React Native APIs, which allows you to use Vue.js and compose rich mobile User Interface.

Shoutem UI

Shoutem UI

Shoutem UI is a set of styleable components that enables you to build beautiful React Native applications for iOS and Android. All of our components are built to be both composable and customizable.

Related Comparisons

Bootstrap
Materialize

Bootstrap vs Materialize

Laravel
Django

Django vs Laravel vs Node.js

Bootstrap
Foundation

Bootstrap vs Foundation vs Material UI

Node.js
Spring Boot

Node.js vs Spring-Boot

Liquibase
Flyway

Flyway vs Liquibase