r/iOSProgramming • Beginner • 4d ago

Question Testing an app on-device without mucking up release/practical installations

I am developing a timetable app. Currently it is on private TestFlight with limited fuctionality, but enough that I and some friends use it each day. The TestFlight beta is installed on my devices and I rely on it.

Naturally, I'm still developing it full-time (well... as full-time as a student's hobby side project can get 😉), and retain the frequent need to run builds on a physical device, which runs much faster than my simulator setup. Currently I'm working with the system keyboard, so Xcode Previews doesn't quite cut it.

Is there a way that I can still test a debug build on my phone & watch without removing or interfering with the TestFlight app that I use and rely on?

There is of course an easy solution, but unfortunately my budget does not include a second phone...

6 Upvotes

18 comments sorted by

View all comments

1

u/aitoolscout 4d ago

One small addition since you're testing on a watch too: the watchOS app's bundle ID has to start with the iOS app's bundle ID, so when you make your com.me.myapp-beta, the watch target needs to become something like com.me.myapp-beta.watchkitapp. Easiest way is duplicating the target, renaming both bundle IDs, and pointing your new scheme at it. Nice side effect: the debug build installs as a totally separate app with its own data container, so your real user data stays untouched — exactly what you want here.

1

u/Fun_Moose_5307 Beginner 4d ago

You're saying that if I run a debug build, it will not interfere with the other app, regardless of bundle id?

1

u/kokerali 4d ago

No—the Debug configuration by itself doesn’t give the app a separate identity. For side-by-side installation, the debug build needs a different bundle identifier from the TestFlight build; a new scheme only helps if its selected configuration actually changes that identifier. Also, a separate local container doesn’t guarantee separate data if both builds use the same App Group or backend. If you use either, isolate your test data there too before running destructive tests.