A lot of questions here! I'll try to answer some of them.
Where is Expo headed? How it will monetize when it is free and open source?
We're trying to make Expo into something powerful enough that almost every new mobile app project starts with Expo. Each month we add a bunch of improvements and features that march us towards this goal.
In general, Expo is free and open source because that's what we all would want ourselves out of a product like this, and we think it would be pretty hard to charge money and not be open source in a world where the standard for developer tools is free (VSCode, XCode, Android Studio, vim, emacs, React, React Native, etc. are all free and open source).
We think if we can help developers make money, we'll be able to make some money as well ourselves. Sort of like YouTube or Twitch or Patreon does.
I answered this question in a blog post here a while back. blog.expo.io/exponent-is-free-as-in-and-as-in-1d6…
What does it take to be a part of the Expo team? 😄
This is a complicated question but here are some of the things I look for:
(1) Good taste. This means different things depending on role, but it means making good choices about how to design APIs and what technologies to choose, and sometimes what to call things or how to make them look visually.
(2) High APM ( liquipedia.net/starcraft2/APM ). We have a toooonnnn of things to do to make Expo really good, and we're going to have a small-to-medium-sized team for a while, and so we need people who do lots of stuff quickly.
(3) Low overhead. I really like working with people who are self sufficient and don't require a lot of hand holding or guidance or attention. Or at least don't cause problems on the team or have many conflicts with other people.
(4) People that want to work on this problem. Everything falls into place when we follow our north star of supporting the people who want to create awesome stuff for phones. And weathering any ups and downs is a lot easier for true believers in the cause.
Do you plan to implement an end to end solution where Expo provides a pipeline to the app stores directly? I am talking in the terms of a Continuous Delivery platform where my build will directly be pushed on the App Stores once it is ready. 🤔
We want to make this process as easy as possible and there's still more we can do there, for sure. One thing in particular that I really want is the ability to take a Snack and with a few clicks turn it into an App Store app. This will take a little while to build though.
Right now anything I build in Expo has a file size of about 26 MB. I read on your website that "this is because Expo includes a bunch of APIs regardless of whether or not you are using them". Is this something which can be solved someday? 🗄
This is something we have a plan to work on soon. Our current thinking is that we are going to implement something we call "optional modules" where you can strip out any of the modules you don't need in your app store app. We can do an analysis of your code to figure out which ones can go, (though you may want to leave common ones you aren't using in, in case you want to add that functionality over the air later).
Until we complete that project, you can detach and then strip out the native modules you don't want yourself. Though many users, at least in the United States, don't find 26MB to be particularly big for an app!
Brent can answer this better than I can. I strongly believe that there needs to be an excellent and intuitive JS navigation solution for RN, and right now, React Navigation is the closest thing to that, but as you've pointed it, it certainly needs some more love and work, which is why Brent has recently started working on it a lot.
What does the Expo team do for fun? Lots of different things :)
We've done stuff like volunteering and karaoke and skiing and drinking together.
Ben and Jesse are in a band called The Shut Up which is super cool and plays live power hours. Quin eats rats. Edgar rides motorcycles (please be safe. Pretty please.). Jim just makes stuff all the time. Some people play video games. Switch is kind of popular and Jason is a high level Rocket League player. Adam Perry is cooking his way through every country in the world, one by one. One meal each. I think he's on Andorra right now. He also wears Rust themed clothing and attends Rust meetups.
A few months back, Expo experienced a down time where users could not login. What exactly happened? How did you all deal with it? 😯
We were using a 3rd party auth provider and it lost a bunch of data and had an extended outage. (Search through the Expo twitter archives if you really care which one.) The way we had things setup, this left us pretty helpless. After that, we decided we couldn't rely on a third party service for something that's that critical and also just not that complicated. Quin is working on that.
We're really sorry we let that happen. I hope it didn't break your flow.
Redux or MobX? 🤓
I like that you can use either one. Most people on the Expo team use Redux. I think its pretty nice and elegant but also could probably evolve a little further than it has and become a little easier and more intuitive.
I think it would be very healthy for RN if something came along that took care of state like Redux but also with persistence and reloading data from the server, etc. (Credit to Brent for telling me this idea last night.) A full data layer solution that would feel sort of like doing data in Rails does on the web. That's tricky because once you start doing that, you start to get opinionated about what happens on the server which some people don't want, but I think it would be good for something like this to exist.