How do I allow `expo publish` to work again so I can test on Expo Go?

Since iOS 16 makes it very difficult to test unless you have a Mac with XCode (which is required to enable developer mode)

How do I set my project up so I can still use EAS Update for those who have their devices set to development mode and expo publish so those who don’t can still use Expo Go?

This is not true according to the Expo docs and the Expo team member I’ve spoken to about this.

But as far as I know, expo publish still works, even though it might complain that you should use npx expo .... Is that not true?

2 Likes

Hi @trajano, you can create a development build and after installing it on your device, the setting to enable developer mode will get available on devices that use iOS 16+.

1 Like

When I run npx expo publish, then I get only the following message:

expo publish is not supported in the local CLI, please use eas update instead

So for me it looks like expo publish was disabled in the meanwhile.

You’ll need to use expo-cli publish. It will probably give you a warning, but it should work fine anyway.

1 Like

I tried installing both the developer client and the preview builds. Going to Settings > Privacy does not show the option.


My guess is you probably enabled development mode on the device before, removed it and did your process so it gave you the option again, but on a pristine iPhone it does not appear to work as expected.

I don’t have access to a device with iOS 16, but this is the information I’ve been given:

Can confirm that “Developer mode” does not appear on its own on iOS 16.1.

I reproduced the steps by resetting the device, since after enabling the “Developer mode” once, the option always remains in the settings whether it is turned on or off.

After installing the new build, when one clicks it to open it, the system throws a warning/modal that says the developer needs to enable “Developer mode” on their device.

Can confirm that Xcode is not required in this process to enable dev mode on an iOS device that runs version 16.

It sounds like they had enabled Developer mode at one point on the device. That may be the reason why it worked. The device I am using hasn’t even been plugged into a mac before either.

Surely resetting the device as they said they had done is the same as “hasn’t ever been plugged into a mac before”?

Maybe, maybe not or the device may have called home to Apple saying it was enabled at one point. Hard to say but so far two devices I know that have never touched a Mac have this issue so far.

Unfortunately this is expensive to verify, you have to go to the Apple store and buy a new device to verify the claim.

I’ve sent a message to the guy who I quoted above. Maybe he has some ideas. What exact version of iOS do you have installed on those devices?

They’re all on 16.1.2 latest update. Well as of a week ago. I just saw 16.2 come up.

I’m afraid I don’t have any solution to the error message you shared (thanks for sharing!). Last time I checked with iOS version 16.1.1, it was working on my end.

Yes, I did enable the developer mode option when iOS 16 came out but did not connect or plug to a mac for that. Out of curiosity, did you try plugging into a Mac to get the option on the device?


Meanwhile, I’ll bring this up with the team internally to see what could be the underlying cause for this and get back here.

I’m thinking it’s just a policy on the iOS devices and there’s nothing anyone outside of Apple can do to change it.

I’m intentionally not letting it touch the Mac as from the fact it’s my wife’s phone, the only people in the org that has Macs are mobile app devs the rest are on Windows.

I wasn’t implying that if anything can be done to modify this behavior from our end. I meant that if someone’s aware of this or they might have seen something similar.

Your point is good, thanks! If it’s an Apple policy, I’m sure they must have it somewhere as a guideline. Will have to find it so that it can be pointed out as a resource.

1 Like

Looking back at this error message (sorry I missed this earlier), can you confirm that this is not an issue related to how you are creating development builds for internal distribution and make sure that the UDID of the device is correct that you are installing the development build on?

I have seen some similar issues (not saying that the same reason applies in your case but confirming that this isn’t the case will be a lot helpful) here:

If you are installing the development build for the first time, the provisioning profile certificate you are using to build the app via EAS Build is will need to be installed first on the device before installing the EAS Build itself. After installing the build on the device, you will see the option to enable it.

2 Likes

So we have to register a device’s UDID in our developer account. I guess the next bit would we register them without hooking up to a Mac?

But let me check when I get the device again.

For an iOS device to have an identifier associated, you’ll need to run eas build:create command to register the device you want to run the build. Once the device is registered, you’ll have to create a new build for it to be installable.

To associate a device with an Apple developer account, you don’t need a Mac.

1 Like

I got the device and do the Provisioning profile again. This time it changed something as now because it didn’t do it for me before.

Now when I do expo build manually I can see the new device. This wasn’t there before and the other device that was added the same way wasn’t there either.

Anyway doing a build now with the updated provisioning profile. The development mode option isn’t there yet. I’ll check that once the build is done.

1 Like

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