Installing expo-dev-client in Bare Workflow project

Hello,
The tutorial available (Installation in React Native and Bare workflow projects - Expo Documentation) in Expo Documentation contains info on how to install expo-dev-client in React Native and Bare Workflow projects in the same spot. I haven’t worked before neither with RN, nor with Bare. After setting up some of the pods for iOS, some dependencies must be installed. But in the tutorial refers only to react-native.config.js which doesn’t exists in Bare workflow projects. Where should I install these?

module.exports = {
  dependencies: {
    ...require('expo-dev-client/dependencies'),
  },
};

In metro.config.js? (I have babel and metro inside bare project) In that file I already have: module.exports = getDefaultConfig(__dirname);

Or should I create a new file and add the dependencies there?

Thanks in advance!

Hi @learningandsucceedin

I think you’re right about the above.

By the way, just in case you’re not aware of this, these days it is less necessary to eject to the bare workflow. Are you doing this in order to install a native dependency? If so, what is it? It might be that you can get it to work without ejecting.

1 Like

Thanks @wodin!

I had created the bare project right from the start. I think I will need some native modules later (custom) that’s why I decided on bare workflow and trying the expo-dev-client with it.
Basically it will be a more complex app, containing a webview and focused more on connectivity through IP’s, Wifi, some remote devices.

I see. Well, personally I’d start with the managed workflow and try to use Config Plugins where needed to configure any native dependencies. This is all still a bit new and some things are a bit rough around the edges, but I would still try to stay with the managed workflow if possible.

Some native dependencies should just work as long as you use eas build instead of expo build. If they don’t need any manual editing of stuff under the ios/android directories then they should just work.
For a few others there are already config plugins written by the authors themselves or by Expo. These config plugins automatically do the necessary modifications under ios/android during the eas build process.

There is documentation on how you can write your own config plugins too, if a native dependency you want to use doesn’t already have one. I found it quite hard to figure out (but I am by no means an expert), even with the documentation. Easier to look for existing ones to see how they work and basically copy one and modify it to do what you need.

But of course it might make more sense to eject because it would take too much trouble to figure out how to write a config plugin for some dependency, or if there are too many of them that don’t already have config plugins, etc. Even if I were in this situation, I’d see if in future there were config plugins for all of the stuff I needed and then basically “uneject” back to the managed workflow again.