Is there how to just build latest app without "publish"?

hi,
I want to build my app as new version before send it to App Store Connect.
When I build the latest ota app, Automatically published.
There is option “–no-publish”, but it don’t use latest sources.
There are ways to change the channel so that it doesn’t affect users, but each iteration will require more channels to publish.
Can you tell me how to just build latest app without “publish” or how to control it easier?

thanks!

The build process uses the published bundle, so if you use --no-publish it will use whatever was published last to the same channel for the same SDK version.

Have you looked into promoting releases from one channel to another? I think it might solve your problem.

i.e. you build for release channel testing, say. Then when you want to make that available to your users you promote that to the default release channel. So you would only need two release channels. Not one per iteration.

thanks for your response.

sorry, let me organize this situation.

  1. I build a app version 1.0 using default channel.
  2. user A install this app version 1.0 from app store.
  3. I build version 1.1 using testing channel and send it to app store connect.
  4. user B install the released app version 1.1 (A does not update to 1.1 via store).
  5. I promote the testing channel to the default.
  6. A’s app is update to 1.1 by OTA update.

7?) When I build version 1.2 using the testing channel and send it to app store connect,
is B’s app be not updated before it released?
I anticipate,
B’s app is updated by OTA update, because it is connected to the testing channel

I’m not quite sure what you’re trying to accomplish.

Is user A a normal end user and user B a beta tester/QA tester? Or are they both normal users?

Does version 1.1 require a rebuild? (Do you update the SDK version or something in app.json?) Or would an OTA update be sufficient? If you don’t change the SDK version and you don’t change other stuff in app.json then you don’t need to build a new version of the app. You can instead publish the OTA update. e.g. publish to testing and then promote to default when your QA testers are happy.

If user A and user B are both just normal users then I would not do it the way you describe. I think I would rather do it like this (but I have not yet put any apps on the App Store/Testflight so I might have some details slightly wrong):

  1. I build version 1.0 using the default channel and get it onto the App Store.
  2. I build version 1.0 using the testing channel and get it onto Testflight.
  3. User A installs the app from the App store (default channel)
  4. User QA, who is a QA tester installs the app from Testflight (testing channel)
  5. I make updates to the JS and/or images, but do not change app.json and I publish to the testing channel as version 1.1.
  6. User QA’s app gets the changes, but User A’s app does not.
  7. User B installs the app from the App Store, and still gets version 1.0 because version 1.1 has not yet been promoted to the default channel.
  8. User QA approves the changes.
  9. I promote version 1.1 to the default channel. (I haven’t tested exactly what happens to User QA’s app at this point. I think the app will just keep the existing version 1.1 bundle that it downloaded previously, but I believe if user QA2 installs from Testflight they will only get version 1.0, because version 1.1 was moved to the default channel.)
  10. Now user A’s app and user B’s app both get the version 1.1 OTA update.

Let’s say you’ve made a few OTA updates and the JS is now at version 2.0. So maybe you want to rebuild the app, but use the existing JS code and assets. Then you could expo build:ios --no-publish --release-channel default and then get that version of the app onto the App Store.

I hope the above makes sense :slight_smile:

1 Like

thanks for your helping.

I tried promotion by “publish:set”,
this command is not moving testing publish to default but just copying…
And the app keeps to look channel was used when building.
(A app that was built using ‘testing’ and installed from the store after being uploaded to TestFlight will continue to look ‘testing’.)

But it’s so fast that it doesn’t take much time to repeat. so great!

I will try a way to use some channels and update each as need it.

thanks. thanks for your helping.

1 Like

Yes you’re right. I noticed that last night. But I think that’s what you generally want anyway.

Yes, that’s correct. But I don’t think that should be a problem? The real users will use an app built for the “default” channel (or you might want to use something like “production” instead. The test users will use an app built for the “testing” channel.

Anyway, I think you will be able to come up with a way that works for you :slight_smile: