Build a custom client app with custom native modules
"First off, love what you've done. Expo is fantastic and will tremendously help get React Native in the hands of folks who otherwise would not have access to it. I'd be remiss to not also mention its kickass developer experience. So, high fives all around!
I noticed your tooling for the Expo Client is _very_ close to how AppGyver implements their Scanner. Same kind of concept -- the client already has the native entitlements the SDK expects, local dev environment has a utility to expose a port and QR code, the client QR code scan brings JS in, the app runs, and choirs of angels sing.
I saw that if you
detachyour native projects, it's basically back to "vanilla" React Native dev...which isn't terrible, but the Expo DX is so good that it will definitely feel like a downgrade.
I'm not sure if you guys have considered this, but AppGyver gave a "semi-escape hatch" for their Scanner. Basically, you could build build custom versions of the scanner (in this case, the Expo Client) with whatever custom native libraries they have linked. This would allow someone the latitude of "ejecting" and linking non-SDK libraries, but still have the DX of the AG Scanner.
Now, if I recall, it was definitely a little involved, as you basically had to create a distribution profile for iOS and keystore for Android, upload it to AG's infrastructure, and then have it build your Custom Scanner. I feel like you could even automate that process, since I see the
expcmd line utility creates that stuff for me.
Anyway, TL;DR: A custom-built Exponent Client would be an amazing future feature for Expo, as there's definitely a lot of use cases that would require ejecting out of the "vanilla SDK".
Thanks again for your work, and I'm looking forward to using (and hopefully contributing back to) this ecosystem!"