Assets in Amazon CloudFront for detached apps

Are assets still served from Expo’s Amazon CDN after detaching? Do we have to use XDE in some way or are we properly on our own and in charge of the assets (bundled in the IPA/APK) after detaching?

Hi! Yes, assets use the same system as they do before detaching, but I believe you should be able to change that on the native side if you need to. We do have several feature requests for supporting bundling in your app bundle, and hopefully we’ll be able to make progress on those in the near future.

Thanks, so does that mean we must do something like exp pubish / exp build, even after detaching?

Yes, unless you’ve also written your own JS bundle fetching, you’ll need to publish to make the app aware of any JS changes. exp build won’t work properly on a detached app, so I wouldn’t recommend that.

Thanks, I didn’t realise detaching still relied on Expo’s servers being online / available.

I’m not intending to detach but wanted to understand the risk of reliance on Expo’s servers for future-proofing - it sounds like detached apps still need Expo’s servers to be alive, right?

Totally!

They rely on Expo’s servers being alive for the first load. That said, JS bundles and assets are served from CloudFront, the only thing for which our servers are in the critical path is the “manifest” that describes all of these. That said, the manifest is cached in the client after its initial fetch, so subsequent starts of the app will still work after everything has been cached if we’re unable to serve the manifest. Note that we also have plans to allow bundling a starter manifest with the build artifact, it just hasn’t been implemented yet.

Thanks, is that starter manifest on the near-term roadmap? Just trying to understand the risk in embarking on a large long-term project using Expo relying on Expo’s servers.

We’re tracking support for that here, although @ben will need to comment on a potential schedule for the feature.

We’re tracking this but don’t have an ETA yet. This is a very common request, so I’d like to build it as soon as there’s bandwidth.