top | item 13864236

(no title)

jesseruder | 9 years ago

Hey I work on Expo - this is one of the big pain points we're trying to improve. Since Expo is responsible for the native code in these apps we can do the work of keeping all the libraries up to date. You're just responsible for updating the JS code, which normally has minimal breaking changes. Many people have been able to update versions by only changing their dependencies in package.json.

discuss

order

hasenj|9 years ago

It's not just that. I also need plugins for basic functionality that RN does not provide it out of the box, like playing audio, accessing the file system, reading sqlite databases, etc.

"Linking" these plugins is black box magic, if anything the fails I have absolutely no clue what is going on.

I have a feeling that some of the hairy errors I've been getting have something to do with the plugins not being up to date with the other libraries.

But like I said, I just have no idea what's going on.

If I'm going to learn how Android and iOS code needs to be structured then I prefer to just write native code. At least I will have more control.

jesseruder|9 years ago

Yes a lot of times the issue is that libraries only support certain version of React Native, so for certain sets of libraries there are no versions of React Native compatible with all of them.

Expo has audio (https://docs.expo.io/versions/latest/sdk/audio.html), file system (https://docs.expo.io/versions/latest/sdk/asset.html), and other APIs built in (https://docs.expo.io/versions/latest/sdk/index.html). We don't have sqlite right now but are actively working on it!

The idea is that we provide a lot of nice things out of the box and then if you still need to write native code you can detach (https://docs.expo.io/versions/latest/guides/exponentkit.html) and only write the native code you need while keeping all our other APIs. You can still use `react-native link` after detaching if you want.