Need advice about which tool to choose?Ask the StackShare community!

Expo

461
534
+ 1
61
React Native

26.5K
23.1K
+ 1
1.1K
Add tool

Expo vs React Native: What are the differences?

What is Expo? Making React Native Easier. Exponent lets web developers build truly native apps that work across both iOS and Android by writing them once in just JavaScript.

What is React Native? A framework for building native apps with React. 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.

Expo and React Native can be primarily classified as "Cross-Platform Mobile Development" tools.

"Free" is the top reason why over 6 developers like Expo, while over 170 developers mention "Learn once write everywhere" as the leading cause for choosing React Native.

Expo and React Native are both open source tools. React Native with 78.8K GitHub stars and 17.6K forks on GitHub appears to be more popular than Expo with 6.78K GitHub stars and 791 GitHub forks.

Instagram, Intuit, and Yahoo! are some of the popular companies that use React Native, whereas Expo is used by Discontinuity, PUBLY, and Mifos Initiative. React Native has a broader approval, being mentioned in 719 company stacks & 809 developers stacks; compared to Expo, which is listed in 29 company stacks and 26 developer stacks.

Advice on Expo and React Native
William Miller
Needs advice
on
PyQtPyQtReact NativeReact Native
and
XamarinXamarin

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.

See more
Replies (2)
Recommends
React NativeReact Native

I don't know much about Xamarin but I know about PyQt and React Native.

However, I don't recommend PyQt because the apps made using PyQt are not that suitable for mobile apps. If you take a look at the PyQt interface, you will be able to see that the features are more of a desktop apps kind.

React Native uses JavaScript. React Native is immensely flexible in upgrading your apps because it allows you to formulate your app code into independent blocks.

In Xamarin, you have to write the code in .NET . The best thing about Xamarin is, that it extends the.NET developer platform with tools and libraries specifically for building apps for Android, iOS, tvOS, watchOS, macOS, and Windows

While the best choice for you depends on various factors but React Native app development is a promising overall choice. In today’s scenario, React Native has steady growth, flawless code structure, and brilliant and large community support. We suggest you go for React Native for your next project owing to its outstanding support from developers, easy availability, and cost-effectiveness.

See more
Saamer Mansoor
Founder at The First Prototype · | 4 upvotes · 21.4K views

It seems like your app is not really using any native functionality on the phone. I have experience with cross platform iOS & Android development. They are all really good tools! Xamarin (all the project on the website portfolio I attached) is awesome for accessing native functionality (NFC, Sensors, Bluetooth, etc), and I have built apps that have millions of downloads, some that hit Top 5 on Utilities, another that hit Top 50 in Finances. You just have to look at what your application intent is, it seems like it's just to read and post data. For that they are all pretty good, but you should also look into Ionic which may serve the same purpose

See more
espresso_coder
software engineer at AWS · | 6 upvotes · 59.9K views

I am building an app that would need at least two external APIs: a map and a payment service. I am currently building in Flutter, but I am having trouble integrating one of the external APIs with the app. I wonder (because I am still at the beginning) if I should switch to React Native or build native iOS and Android apps separately. Any advice would be appreciated!

See more
Replies (3)
Recommends
FlutterFlutter

Choosing between ios/android and Flutter is not simple. Neither is a one-size-fit-all solution. It would be impossible to suggest one or the other without first analysing particular project’s requirements.

Choosing cross-platform development (Flutter) offers a number of advantages – lower cost, faster time to market, etc…, and if applied to the right type of project, will result in high-quality, marketable mobile product. In my opinion, stick with flutter and try to resolve those problems. Here are some useful links,

Map: *https://pub.dev/packages/mapbox_gl *https://www.raywenderlich.com/4466319-google-maps-for-flutter-tutorial-getting-started

Payment Service: *https://developer.squareup.com/docs *https://github.com/square/in-app-payments-flutter-plugin *https://pub.dev/packages/stripe_sdk

See more
Recommends
FlutterFlutter

It's a bit late but I suggest staying on Flutter anyway. Though you might face troubles with APIs integration, overall development experience is better on Flutter, so you save some time & power on the project in general. Dunno if it's of any use to you, but as a prove I attach one of many Flutter vs RN comparison articles (you can find any other similar yourself on the web though), hope it helps you make a decision

See more
Recommends
FlutterFlutter

can you discuss in more detail why cant you integrate that API?

See more
Nikhilesh Goyal
Senior Embedded Engineer at GreyOrange · | 5 upvotes · 318.1K views
Needs advice
on
FlutterFlutterReact NativeReact Native
and
UnityUnity

Hi Friends, I am new to #MobileAppDevelopment and I need to make a #CrossPlatformMobileApp. I want guidance regarding which tools should I use to build a mobile app. Main requirements: integrate Unity game engine and provide a platform for social chats.

Past experience - C++ and Python

I have tagged Flutter and React Native but if anything better than both please suggest them.

See more
Replies (3)
Sahil Singh
Product Manager at AutoVRse · | 10 upvotes · 294.3K views
Recommends
UnityUnity

Hey, If you are using Unity you are going to have to do the end to end development on Unity, you can directly build for android and iOS on Unity. I dont see how Flutter or React Native fit into this equation. Unity is a standalone engine. As for Social Chats, you could use Firebase or your own API and integrate that in Unity in C#

See more
Recommends
UnityUnity

I agree with Sahil. If Unity is a requirement, best way is to use just that to create your app.

If you really want, it should be possible to use Flutter and Unity together. Using Flutter Unity Widget. Although I wouldn't recommend it just yet. It's too early days.

If you do end up using it, I would be very interested in reading about your experiences.

See more
Mathieu Grenier
Recommends
UnityUnity

You can start by small steps with Flutter and after Unity. Flutter = best choice to build a small cross-platform mobile app. With or no flutter, use directly Unity. Y'll have complete control but it's harder for new mobile developers. Keep in mind, the requirement is Unity!

See more
Needs advice
on
ExpoExpoReact NativeReact Native
and
ReduxRedux
in

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

See more
Replies (1)
Javier Silva Ortíz
Senior Full Stack Developer at Aleph Engineering · | 6 upvotes · 186.3K views
Recommends
ReduxRedux

Well, the first resource I would recommend you is my upcoming book by Packt Publishing, "Professional React Native", but it's due late January next year :) . Now jokes aside (the book's real by the way :) ), the easiest way to build a iOS/Android/Web app with React Native is to do: npm install -g expo-cli expo init some-project cd some-project expo eject

You might have heard of Expo, but trust me, stay away from it. Expo highest value is that it's an already pre-configured 3 platforms environment, but if you don't eject then you're vendor-locked to what Expo has to offer in iOS and Android, which is very poor compared to going full React Native on these platforms, they can't even handle Google Sign In properly and by the way, even if your app is 10 lines of code your app size will be over 40 MB if you don't eject, yep it's that bad, plus the performance is regular and the loading times slow, not to mention that you're stuck with their build service which the free tier makes you wait for hours for a free build slot. It's important to note that when ejecting you don't lose the Web, you simply do expo start --web to start your dev environment and expo build:web to build a static website that you can serve with any web server. Regarding state management, don't bother with "lifting state up" philosophies mixed with Context API to manage your state, lifting state is a great pattern and helps your codebase, Context is great to avoid prop-drilling, but NEVER mix them to achieve app-wide state management, for that, simply go for Redux or MobX, the hype is all about Redux, but I consider MobX far better in many aspects. However, as you're getting new into this I would recommend you start with Redux AND PLEASE grab yourself npm install @manaflair/redux-batch so that you can batch updates and don't bring your app to a crawl. Forget that "connect HOC" thing with React-Redux, don't bother for a second with it, go with Hooks and useSelector and useDispatch and the likes, it will make your code SO much cleaner and smaller. Adopt clean and new Hooks philosophy, avoid writing class components as much as possible and write function components augmented with Hooks.

See more
Needs advice
on
React NativeReact Native
and
Vue NativeVue Native

I'm a huge fan of Vue.js and I'm pretty comfortable with it. I need to build a mobile app for my company and I was now wondering whether I could make use of VueJS with Vue Native instead of switching to React. I know Vue Native builds on top of RN. My question is whether I'd have as much freedom with Vue Native over RN and whether you feel like Vue Native is "production ready" or not. Not sure of which shortcomings I may find using Vue Native... Thanks a lot!!!

See more
Replies (1)
Barry Hylton
Recommends
Vue NativeVue Native

Vue Native is definitely production-ready in my experience. I've used both, have apps built with both in production right now, and both are fine technologies. As far as I can recall, there's nothing in RN that you can't do in VN. Given that, I would say go with "the devil you know".

That said, the one downside of VN over RN is that there are a lot more people using RN last I checked, so there are likely more resources readily available.

See more
Needs advice
on
FlutterFlutter
and
React NativeReact Native

Hi, I'm a web dev and am using Electron for a desktop app. Now I have to develop a mobile app with the following features:

  • Posting/uploading files by users, private messaging between users, download files, moderation of the uploads, push notification of new posts.
  • Mods can ban users and delete files.
  • Share buttons from the library folder of the user phone.
  • When a user uploads a photo, a pencil tool for deleting staff on the pic.

Which tool is better for such a project?

Thanks in advance

See more
Replies (2)
Lee Dydo
Technology Development Manager at Outform · | 5 upvotes · 252.3K views
Recommends
React NativeReact Native

Given your experience in electron I think the shortest hop is going to be React Native. Especially since half of the requirements are server-side. Google is doing a pretty great job bringing up Flutter and the tooling is pretty great. For me however, dart seemed like quicksand and not everything is in its final home. React Native is mature, and considering my cursory analysis of your experience and the low complexity of this project, you've got quite a lot of room to grow into Javascript Land. Ultimately, my recommendation is always "play with both, see what you like, and get to know the documentation and the community." Keep your head on a swivel and set aside time to peek greener pastures, but spend most of your time delving deeply into what you're already doing.

But yeah, go with React Native first, get bored of it, learn what the shortcomings are through experience and then see if something else is really more attractive or just a new shiny.

See more
Varun Sharma
CTO at Nugen Computer & I.T. Services · | 5 upvotes · 252.3K views
Recommends
React NativeReact Native

Well, I will personally recommend to go for React Native as I have worked in both of them. React native has big community and it is easy to opt as compared to Flutter. There no doubt about the fact that Flutter is a great framework for developing both Android/IOS apps. However, you should have some experience to go for the same. Both will require prior knowledge as for React Native you have to go through Javascript first with which you are already familiar and for Flutter you need to go through Dart. So being familiar with Javascript you should go for React Native. You can go expo which has lot of inbuilt functionalities for the React Native developers.

See more
Needs advice
on
FlutterFlutterIonicIonic
and
React NativeReact Native

Hi, we are an early startup (with an iPOC prototype) but need to get started on our MVP, and our tech developers in India recommended a hybrid, and they use Ionic, then we spoke with a software company in the US and he recommended Flutter or React Native. Any advice or input for us on the differences between these? Our app will need Bluetooth GPS for "near me" and social media sharing reviews capability, and also link on the backend with businesses. Thanks in advance for any help you can give!

See more
Replies (6)
Dario Alves
Arquiteto de Software at Senior sistemas · | 2 upvotes · 318.5K views
Recommends
React NativeReact Native

Maturity, Community, Facility, Libs React Native is the principal platform of mobile cross-platform development today, Flutter is it's a promise.

See more
Ahmad Khan
Recommends
FlutterFlutter

I would never recommend you to go with Ionic, Because of the User experience it provides is subpar. Flutter is most promising, Can be easily used to develop great user experience in no time. React native is also good, but it's phasing out in my opinion, while Ionic has already phased out. Flutter also provides great developer experience, resulting in fast and productive developers. I would have to press hard to think of a CON about flutter when recommending it for your needs.

See more
Kevin Lücke
Recommends
FlutterFlutter

It depends also on your team skills. Flutter is fast to learn, fast to develop with and the performance is much better in comparison to React. If your team is already highly skilled in React Native it could be the better option - if not Flutter is my 100% recommendation. We rapidly prototype and deliver MVPs with Flutter since two years.

See more
Recommends
IonicIonic
at

I don‘t have practical experience with flutter but between ionic and react native I‘d say both a perfectly viable options and we have used both for a number of production apps. We normally go with ionic on capacitor because we build a lot of pwa/web apps so we can use the same code for all. We don‘t use much of ionic elements, we do most styles on our own.

The comments that the user experience is bad I cannot agree with. A well designed and developed ionic apo can hardly be distinguished from a native app. But obviously that depends also on the usecase and type of app.

I hope this helps

See more
Nicolas Kovacs
Recommends
FlutterFlutter

Even if React Native is older (I didn't say mature) you should go for Flutter, It's works really well and the developer experience is great (auto-completion, plugin etc). I spent years with React Native and now I am using Flutter and I don't regret It. Even if you have to learn a new language, It's pretty simple even more If you know some OOP, Java and Javascript ES6 syntax in some case. One other advantage is the facility to design app in Flutter, you have widgets for everything and you can adapt any design made by your designer. For example you can't make a simple custom box shadow with React-Native ...

See more
Recommends
FlutterFlutter

Flutter is built on DART which is written in GO. GO compiles to binary. Hence is faster than any java based framework. It provides superior performance and has a simplified UI process for designing apps.

See more
Decisions about Expo and React Native

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.

See more
Julie Quintero
Machine learning/ software engineer · | 4 upvotes · 63.5K views

We will use Flutter for our athlete-facing mobile app. Flutter is a cross-platform app development framework, which boasts native performance and allows for creating beautiful, fluid user interfaces.

React Native may sound like a more appropriate option given our choice of frontend technologies, but we foresee little to no feature overlap in the web dashboard and mobile app. Ease of use, performance, good user experiences are key to encouraging athletes to use our app, something which React Native makes difficult, and is where Flutter excels.

We will use the test and flutter_test packages to test our Flutter app

See more
Christopher Chow
Software Developer at University of Toronto · | 4 upvotes · 63.5K views

We chose Flutter since we are developing a mobile application that needs to be performant (to handle displaying large amounts of data and video uploading) and would cover both Android and iOS systems. Since we want the app to be cross-platform, two frameworks comes in to mind: Flutter and React Native. As shown below, Flutter's performance and out-of-the-box support impressed us to pick it as our framework for our mobile app.

React Native has been a dominant force in cross-platform app development since its launch by Facebook. The ability to write React-like code and have it compile to both iOS and Android makes developing mobile apps much easier. However, the overhead done to bridge Javascript code into native code means React Native apps might not be as performant. Moreover, React Native, much like React, is an unopinionated framework that covers minimal functionality out-of-the-box. This means that most functionalities would have to be relied on third-party libraries or developers would have to write their own native code.

Flutter, on the other hand, is a much newer framework developed by Google. While Flutter uses Dart, a relatively new language compared to JS, syntax-wise it is similar enough to that a JS developer should be able to pick it up in no time. The Flutter engine also compiles directly into native code, making it more performant when compared with React Native. Flutter is also an opinionated framework, with a much large stack of Widgets to choose from out-of-the-box. The Widgets are also designed according to Material design principles, making styling easier.

See more
Pierre Canthelou
Lead Developper Frontend/Mobile at WinMinute · | 5 upvotes · 66K views

I've made 6 professional/business applications with React Native before choosing Flutter/Dart for the new version of WinMinuteConso (historical in Ionic...). Multi Platform is far more stable, Dart is far more powerful, the whole process is really better... It is just hard to find the proper software architecture...

See more
Thuan Nguyen
FE Lead at SOLID ENGINEER · | 5 upvotes · 440.2K views
  • Javascripts is the most populated language in the world.
  • Easy to learn & deployed production
  • Fast development
  • Strong community
  • Completed Documents
  • Native performance with lower RAM used.
  • Easy to handle native issues by using native code like Java / Objective C
  • Powered by Facebook.
See more
Nick Skriabin

We built the first version of our app with RN and it turned out a mess in a while. A lot of bugs along with poor performance out of the box for a fairly large app. Many things, that native platform has, cannot be done with existing solutions for RN. For instance, large titles on iOS are not fully implemented in any of existing navigations libraries. Also there's painfully slow JSON bridge and many other small, yet annoying things. On the other hand Flutter became a really powerful and easy-to-use tool. A bit of a learning curve, of course, because of Dart, but it worth learning. Flutter offers TONS of built-in features, no JSON-bridge, AOT compilation for iOS.

See more
Aleksandr Filatov
Contract Software Engineer - Microsoft · | 2 upvotes · 214.9K views

I've done some Hybrid Mobile apps with both technologies Apache Cordova and React Native and described my experience in my blog.

In a few words, I would suggest to use each technology in accordance what what is your current code base and what do you want to achieve.

React Native is a great option if you need that extra edge in performance with multi-threading and native UI rendering. Or you already have a web app based on React which you want to port to mobile.

On the other hand, if you have an existing web application code and you want to reuse some or all, including the ability to use web third-party libraries, then Cordova is the best option.

See more
Get Advice from developers at your company using StackShare Enterprise. Sign up for StackShare Enterprise.
Learn More
Pros of Expo
Pros of React Native
  • 14
    Free
  • 12
    Hot Reload
  • 9
    Common ios and android app setup
  • 8
    Easy to learn
  • 6
    Streamlined
  • 6
    Open Source
  • 4
    Builds into a React Native app
  • 1
    PWA supported
  • 1
    Plugins for web use with Next.js
  • 205
    Learn once write everywhere
  • 167
    Cross platform
  • 163
    Javascript
  • 119
    Native ios components
  • 67
    Built by facebook
  • 62
    Easy to learn
  • 43
    Bridges me into ios development
  • 40
    It's just react
  • 39
    No compile
  • 36
    Declarative
  • 21
    Fast
  • 12
    Livereload
  • 12
    Virtual Dom
  • 11
    Insanely fast develop / test cycle
  • 10
    Great community
  • 9
    It is free and open source
  • 9
    Easy setup
  • 9
    Backed by Facebook
  • 8
    Native android components
  • 7
    Highly customizable
  • 6
    Awesome
  • 6
    Scalable
  • 6
    Win win solution of hybrid app
  • 6
    Everything component
  • 6
    Great errors
  • 5
    Not dependent on anything such as Angular
  • 5
    Simple
  • 4
    OTA update
  • 4
    Awesome, easy starting from scratch
  • 3
    Easy to use
  • 3
    As good as Native without any performance concerns
  • 2
    Many salary
  • 2
    Can be incrementally added to existing native apps
  • 2
    Hot reload
  • 2
    Over the air update (Flutter lacks)
  • 2
    'It's just react'
  • 2
    Web development meets Mobile development
  • 1
    Ngon

Sign up to add or upvote prosMake informed product decisions

Cons of Expo
Cons of React Native
    Be the first to leave a con
    • 23
      Javascript
    • 18
      Built by facebook
    • 12
      Cant use CSS
    • 4
      30 FPS Limit
    • 2
      Slow
    • 2
      Some compenents not truly native
    • 2
      Generate large apk even for a simple app

    Sign up to add or upvote consMake informed product decisions

    - No public GitHub repository available -

    What is Expo?

    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.

    What is 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.

    Need advice about which tool to choose?Ask the StackShare community!

    Jobs that mention Expo and React Native as a desired skillset
    CBRE
    United States of America Texas Boston
    CBRE
    United States of America Texas Dallas
    CBRE
    United States of America Texas Richardson
    CBRE
    United States of America Texas Richardson
    CBRE
    United States of America Texas Richardson
    CBRE
    United States of America Texas Richardson
    What companies use Expo?
    What companies use React Native?
    See which teams inside your own company are using Expo or React Native.
    Sign up for StackShare EnterpriseLearn More

    Sign up to get full access to all the companiesMake informed product decisions

    What tools integrate with Expo?
    What tools integrate with React Native?

    Sign up to get full access to all the tool integrationsMake informed product decisions

    Blog Posts

    What are some alternatives to Expo and React Native?
    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.
    Create React Native App
    Create React Native App allows you to work with all of the Components and APIs in React Native, as well as most of the JavaScript APIs that the Expo App provides.
    Flutter
    Flutter is a mobile app SDK to help developers and designers build modern mobile apps for iOS and Android.
    Xamarin
    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.
    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.
    See all alternatives