Expo 2.0

The fastest way to build an iOS and Android app 📱

4.7/5
About

Expo enables you to build cross-platform native apps using only JavaScript.

In addition to React Native components, you'll have access to the Expo SDK, a library that provides a wide range of native APIs on iOS and Android. Expo can also manage assets for you, handle push notifications, and build your native binary for submission to the app store.

Would you recommend this product?
33 Reviews4.7/5

There's lots of cool things that Expo is doing, but I'm not sure this should be presented as a full-scale mobile development platform. Even with the eject scripts, there's still a fair amount of vendor tie-in that you get from leaning heavily on a kitchen sink of an native app that bundles every framework and has it's own set of abstractions. If Apple/Google releases a new iOS/Android API that you want to use, you have to wait for Expo to implement it first.

There's also something to be said for the large amount of abstraction of platform-specific standards. I don't think Expo does a great job of building components that feel at home on each platform, starting with their recommendation of using a non-native replication of UINavigationController in `react-navigation`, to loading bundled fonts asynchronously, to using FontAwesome icons over the iOS-provided UIBarButtonSystemItem icons.

If you're building a one-off mobile app that has no plan on being maintained, Expo might be the right fit for you. Looking to build a mobile app that will be maintained for some time to come? Stick to a vanilla React Native or native Swift/Kotlin app and learn the platform first.

Pros:

Quick to get some sort of app up and running

Cons:

Lots of vendor lock in (even after detaching/ejecting), doesn't teach you how to truly deploy a mobile app

Upvote (23)Share
Maker
Hi Eli! Thanks for the feedback! I just wanted to clarify a few of the points that you made for fellow hunters. > If Apple/Google releases a new iOS/Android API that you want to use, you have to wait for Expo to implement it first. This is somewhat true -- however, Expo is open source, so if you have the knowledge then you are welcome to implement an API and submit a pull request, or you can eject your project and add it right away. Additionally, supporting new platform APIs quickly is primarily constrained by resources -- as the Expo team and community grow, we expect that new features will be added increasingly promptly. > I don't think Expo does a great job of building components that feel at home on each platform We actually don't build UI components at all (save for a couple of exceptions) -- we leave that up to the React Native ecosystem :) The Expo SDK provides access to platform APIs, such as camera, push notifications, permissions, touch id, etc. See our docs for a full list: http://docs.expo.io/ We try to help with discovery of UI components through https://native.directory/ > starting with their recommendation of using a non-native replication of UINavigationController in `react-navigation`, to loading bundled fonts asynchronously, to using FontAwesome icons over the iOS-provided UIBarButtonSystemItem icons. Navigation still isn't a well handled problem in the React Native ecosystem, unfortunately, but the solutions are definitely workable if you learn the quirks. The react-navigation project needs a lot of work, we're trying to help out as much as we can -- I've arranged to fund some developer time for this project in the new year and we have some nice improvements planned :) I'm not sure what you referring to with respect to FontAwesome icons, you are free to use whichever icons you like :) Perhaps we are not communicating this well enough -- I will do a pass over our documentation! As for bundling assets in a release build, our latest SDK adds support for bundling images, and the next release will support every type of asset. This was definitely a dealbreaker for many potential users so we're really excited to have it ready! You can read more about it here: https://docs.expo.io/versions/la... For context, the reason we started with asynchronously loading assets is that it is necessary to enable the workflow that we really love from the web, where you just point the client app at a URL and it loads quickly on your device. Additionally, you can take advantage of this mechanism to provide over-the-air updates for assets! > If you're building a one-off mobile app that has no plan on being maintained, Expo might be the right fit for you. Looking to build a mobile app that will be maintained for some time to come? Stick to a vanilla React Native or native Swift/Kotlin app and learn the platform first. While I don't entirely agree with this assessment, I strongly believe that when approaching any significant technology decision you should be aware of what the limitations and tradeoffs are. We have tried to summarize these as best we can in our documentation under the "Why not Expo?" section: https://docs.expo.io/versions/la...

We've been using Expo for the last year to develop a mobile app and the experience has been great. We've been forced to use some less than desirable pure Javascript libraries (like React Navigation for navigation) instead of alternative native libraries, but overall the Expo experience has been great, the team has been supportive, and the product has gotten significantly better with each release. Much kudos to the Expo team for all their hard work!

Pros:

Very useful for rapid development and distribution of new apps

Cons:

Have to "eject" to use native libraries (though they have good support for the most common native library use cases)

Upvote (13)Share
HEALTHY IS MANDATORY Hello Friends, The information you share is very interesting. I want more information from you,Thank you

I can't praise expo enough. I've never had an easier time writing code in my entire life. I don't have to worry if settings are correctly configured. I don't have to worry whether a library was correctly installed or not.

It just works. I spend my time writing code instead of fighting with an IDE. Major props to the Expo team. Keep up the great work!

Pros:

-No fighting Android Studios/Xcode

-No linking errors

-No setup required

-OTA updates

-Great documentation

-Easy to share app prototypes

Cons:

-Requires ejection for a good amount of libraries

Upvote (10)Share

Using for all my projects, build 3 apps using Expo, following since the beginning when it was Exposition! All the love!

Pros:

The best way to develop React Native apps!

Cons:

Nothing to tell!

While React Native's intention was to simplify the app development process, Expo takes it one step further, providing everything you need to get an app up and running, with their updated website, app development is more approachable then ever

Pros:

The most approachable way to build an app, hands down

Cons:

Some limitations with using native libraries but due to the large Javascript community, there's almost always a workaround

Expo changes the way we build app. In 15 minutes you can build something and see your work on your device.

The team is reactive, replies fast. Best js framework for building mobile app <3

Pros:

Really fast to test a new app. Better than testflight !

Cons:

Sometimes it's difficult to use custom native librairies