how to build the app after developing with a custom dev client?

I must be missing something with dev clients.
I’m in managed workflow and I’ve added expo-dev-client to my project.
I’ve run expo run:android and the custo dev client is correctly installed and run on my physical device.
Here comes my doubts: I have my custom client, with my native modules. I can debug my app with it BUT if I try to build it I get a scaring warning:

expo build:android currently only supports managed workflow apps.
If you proceed with this command, we can run the build for you but it will not include any custom native modules or changes that you have made to your local native projects.
Unless you are sure that you know what you are doing, we recommend aborting the build and doing a native release build through Android Studio.

The sentence “it will not include any custom native modules” makes me think that the expo build command cannot be used in this case.

So, what’s the correct apporach for building the app? I suppose I shouldn’t have to eject it.

You can use the EAS build. Take a look on this doc. It’s very complete. But basically you’ll run commands like: eas build --profile {someStagingOrProductionProfile} --platform all

And to delivery it using OTA (over the air) updates, you can run a command like: expo publish --release-channel {someStagingOrProductionProfile}

You don’t need to eject your project.

Do you mean that after adding custom native modules to a managed workflow, the only way to build an apk is using EAS? No local builds without ejection?

To clarify. After installing the dev client module and running run:android, the project is not a normal application anymore. It’s a custom client that can load the expo application. I guess this is correct, right? So after the run step I can’t even eject my app, since (I suppose) I would be ejecting the custom client and, in any case, I would loose the benefit of having a custom development client…

If EAS build is the only way to publish the app (having the dev client inside of it) I think it should be clarified inside the docs.

Regarding builds with custom native modules, at the moment, if I’m not wrong we only have two options; Ejecting the project or using EAS build. But using EAS build you can build an App using your own infra: Running builds on your own infrastructure - Expo Documentation

1 Like

Thanks for the info @isthejack. However I suppose that local builds are not available for free plans. They require a login or a token.

they should not require a paid plan. if you run a local build and are told that it requires a paid plan then let me know. more info on why an account is required.

1 Like

Thanks @brents. Actually I couldn’t test the build completely since I’ve discovered (from the console messages) that it’s only supported on Linux and Mac, and I’m on Windows.
Until this blocker I haven’t received any message about paid plans though.