Expo 2.0

The fastest way to build an iOS and Android app πŸ“±

#5 Product of the WeekDecember 14, 2017
+1

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.

Discussion
Would you recommend this product?
33 Reviews4.7/5
Maker
Hi I'm Jim, I work on Expo's website πŸ‘‹ We recently updated our site in collaboration with our partners at Bakken & BΓ¦ck. We're really excited for people to check out Expo and discover how easy it is to get up and running. Expo provides a native runtime with a wide range of native APIs and components exposed to you right out of the box. We combine that with APIs already included with React Native, so most people only have to write JavaScript to build their native apps. Hit up https://expo.io/learn for a quick start guide. Happy Building!
Upvote (25)Share
@meanjim great job on the new design and product! πŸ‘Œ
Maker
@_schickling thank you for those kind words!

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...
Expo is a godsend for anybody wanting to build a mobile app with React Native. That beautiful new website is just the icing on the cake: Their entire set of tools is immensely helpful all the way from kicking off your first app to collaborating with a team around the world on large-scale projects. On top of that, the folks over there are engaged with the community and always willing to answer questions about whatever problem you might be stumped by. Highly highly recommended! πŸ’―
Upvote (20)Share
Maker
@mxstbr πŸ™Œ πŸ™Œ πŸ™Œ
These guys release new SDK before I finish my app every time. I guess they don't sleep 😴 Great website. Thank you ❀️
Upvote (15)Share
Maker
I highly recommend it. As an engineer, I love Expo, because Expo team is doing very important work for the whole React Native community, they are top contributors in every possible aspect. Just look at Expo Snack β€” it's now standard de-facto for sharing almost any type of gist related to React Native. Somebody asks you about some Flexbox specifics or how to layout something properly with it? Share a Snack! As an indie app developer, I love Expo, because if you lucky and Expo SDK fits your requirement it reduces the costs of app development dramatically, and even after the launch, the large amount of hard work of maintaining becomes Expo's problem, not yours :) And when you get back to your app after a year to make a new feature, it's much easier to do it with Expo. I'm grateful for that.
Upvote (12)Share
Maker
@potomushto thank you for using Expo!