Get Started

Rename the Xcode Project

ShipThatApp is a starting point, not a destination. The first thing you'll want to do is make it yours — your name, your bundle identifier, your branding. Done carelessly, a rename is the classic way to break code signing, lose your scheme, or silently detach your secrets file. This guide walks the rename in the right order so nothing breaks.

Budget about 10 minutes. Do the steps in order, then run the verification checklist at the end.

Commit first

Make sure your working tree is clean and committed before you start. A rename touches the .xcodeproj, schemes, and Info.plist — if something goes sideways, git restore . gets you back instantly.

1. Rename the project & target

  1. Open the project in Xcode.
  2. In the Project Navigator (left pane), click once on the top-level project name to make it editable.
  3. Type your new name and press Return.
  4. Xcode shows a sheet listing everything it will rename (the project, the target, groups). Review it, then accept — letting Xcode do the rename keeps the internal references consistent.

This renames the project and the build target together.

2. Rename the scheme

The scheme often keeps the old name even after step 1.

  1. In the toolbar, click the active scheme (the dropdown next to the Run/Stop buttons).
  2. Choose Manage Schemes….
  3. Click the scheme with the old name, pause, and click again to make it editable.
  4. Rename it to match, then close the dialog.

ShipThatApp reads its keys from a gitignored xcconfig at ShipThatApp/Support/Config.xcconfig. A rename can detach the xcconfig assignment in the project settings.

  1. Select the project in the navigator → the Info tab → Configurations.
  2. Confirm both Debug and Release still point your config file at Config.xcconfig (or whatever you've named it).
  3. Build once and confirm the app still launches — AuthManager calls fatalError at startup if SUPABASE_URL / SUPABASE_KEY aren't found, so a broken config link fails fast and obviously.

Why this matters

If the xcconfig link drops, your Info.plist keys (TD_APP_ID, RC_API_KEY, SUPABASE_URL, SUPABASE_KEY, API_AUTH_KEY) resolve to empty — auth crashes on launch and every AI call is rejected at the gateway. See Configuration for the full key list.

4. Update the bundle identifier

If you're shipping under your own developer account, change the bundle ID too:

  1. Select the project → your target → the Signing & Capabilities tab.
  2. Set your Team.
  3. Set the Bundle Identifier to your reverse-DNS ID (e.g. com.yourcompany.yourapp). The template default is app.shipthat.demo.

This is also where you'll reconcile capabilities (Sign in with Apple, Push Notifications) against your provisioning profile.

ShipThatApp uses the shipthatapp:// URL scheme for the Magic Link sign-in callback and deep linking. If you rename the scheme, update it in two places that must agree:

  1. In Info.plist under CFBundleURLTypesCFBundleURLSchemes, change shipthatapp to your scheme.

  2. In LandingView.swift, the handleIncomingURL check matches the scheme literally:

    if url.scheme == "shipthatapp" && url.host == "login-callback" {
        // ...handle the magic-link session
    }
    

    Update the "shipthatapp" string to your new scheme. If these two don't match, Magic Link sign-in silently stops working. Full flow in Authentication.

6. (Optional) Rename the folder

For tidiness, you can match the on-disk folder name to the project:

  1. Quit Xcode.
  2. In Finder, rename the project's root folder.
  3. Reopen by double-clicking the .xcodeproj (now inside the renamed folder).

Skip this if you don't care about the folder name — it has no effect on the build.

7. Sweep for stragglers & rebuild

  1. Use Find → Find in Project (⌘⇧F) and search the old name. Check comments, the Info.plist display name (CFBundleDisplayName), and any docs.
  2. Clean the build folder: Product → Clean Build Folder (⌘⇧K).
  3. Build and run (⌘R).

Verification checklist

After the rebuild, confirm:

  • [ ] App launches past the splash screen (proves the config link survived).
  • [ ] Sign-in works, including Magic Link round-trip (proves the URL scheme matches).
  • [ ] The new name shows under the home-screen icon (CFBundleDisplayName).
  • [ ] The scheme dropdown shows the new name.
  • [ ] An AI feature like the Dex scanner returns a result (proves API_AUTH_KEY is still wired up).

Don't forget the display name

Renaming the project changes the internal name. What users see on the home screen is CFBundleDisplayName in Info.plist — set that to your marketing name (spaces and all), independent of the technical project name.

Previous
Getting started