What's the relationship between CRNA and the latest version of Expo SDK?

I’m working on presentations teaching React Native and need to decide whether to start folks with Expo or CRNA. I like the ability of CRNA to detach to vanilla RN and just how easy it is to setup, but it seems like CRNA limits your ability to take advantage of new Expo SDK releases.

I guess my two main questions are:
a) what drives the timing for Expo SDK releases becoming available on CRNA? and,
b) Can I use a later Expo SDK with CRNA, or do you have to be all-in on Expo or CRNA?

The three packages in package.json that seem to affect this are “react-native-scripts”, “react-native” and “expo”. CRNA uses “stock” react-native, while Expo apps use a custom-packaged version of react-native from Expo. So, I assume I’d have to change my dependency for react-native when I upgrade expo. But, would react-native-scripts break if I did this?

Since CRNA uses a stock react-native version, it seems like CRNA can’t get upgraded until stock react-native includes anything and everything that Expo patched into their own version of RN. Does that explain the variable wait time for CRNA to get the latest Expo? I think I’ve seen it updated within a few weeks, but CRNA is still on Expo 23 at the moment.

1 Like

That’s really cool you’re working on teaching materials! To answer your questions, CRNA updates come after there’s a new Expo SDK update with the corresponding RN version. For example, Expo SDK 25 (which uses RN 0.52) is a prerequisite for CRNA for RN 0.52.

CRNA does provide an update path, so if you started with CRNA for RN 0.50 (which Expo SDK 23 uses), and then upgraded CRNA to a future version with RN 0.52, you’d have to use Expo SDK 25 (Expo SDK 25 won’t work with RN 0.51 or any version other than RN 0.52).

One mental model that might be helpful is that you should stay on the Expo track or the CRNA track and cross over only from CRNA to Expo by ejecting to a regular Expo project. Otherwise you can quickly get into territory where things might break and people on Stack Overflow, these forums, etc. can’t help easily.

Thanks for the info! So, CRNA Expo SDK version is based on the latest RN version that CRNA supports.

So, to maybe ask the question another way, what’s the typical timeline for upgrading CRNA to newer versions of react native? Right now, CRNA supports up to RN 50 / Expo 23 (https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md) but if I was on the Expo track, I would have had RN 51 / Expo a month ago. Was just wondering if there was some other blocker in the case of Expo 24, since CRNA appears to have been updated to RN 50 / Expo 23 within a few days of the release of Expo 24.

It’s usually updated within a few days of Expo updating. In this case, this happened right around the holidays and I had a vacation right after the release of SDK24 so I didn’t get around to updating CRNA.

Cool! Good to know CRNA folks will generally be on the same upgrade track. I’d like to start folks off on CRNA due to the absurdly-low overhead. Thanks!

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.