Apple Platform Overlay

This directory contains hand-authored files for the Apple platform targets (tvOS, watchOS, visionOS) and the Tuist project configuration. It lives outside gen/apple/ so it survives rm -rf gen/apple && cargo tauri ios init.

Directory Layout

apple/
├── bootstrap.sh              ← copies everything into gen/apple/
├── README.md                 ← you are here
├── Project.swift             ← Tuist project manifest (source of truth)
├── Tuist.swift               ← Tuist configuration
├── mise.toml                 ← pins the Tuist version
├── apple.gitignore           ← becomes gen/apple/.gitignore
├── tauri-app_tvOS/
│   ├── App.swift
│   └── Info.plist
├── tauri-app_watchOS/
│   ├── App.swift
│   ├── Info.plist
│   └── Assets.xcassets/      ← watchOS-specific app icon
└── tauri-app_visionOS/
    ├── App.swift
    └── Info.plist

Workflow

The full setup from a clean state:

# 1. Tauri scaffolds gen/apple/ (Sources, Assets, iOS target, etc.)
cargo tauri ios init

# 2. Overlay our Apple platform targets + Tuist config into gen/apple/
./src-tauri/apple/bootstrap.sh

# 3. Install pinned Tuist via mise
cd src-tauri/gen/apple
mise install

# 4. Generate the Xcode project from Project.swift
tuist generate --no-open

After this, open gen/apple/tauri-app.xcworkspace in Xcode.

Idempotency

This workflow is idempotent. You can run it any number of times:

rm -rf src-tauri/gen/apple
cargo tauri ios init
./src-tauri/apple/bootstrap.sh
cd src-tauri/gen/apple && tuist generate --no-open

gen/apple/ is fully git-ignored. The source of truth is:

What Where
iOS scaffold (Sources, assets, Info.plist) cargo tauri ios init (from tauri.conf.json)
Tuist manifest + Apple platform targets src-tauri/apple/ (this directory)
Xcode project tuist generate (from Project.swift)

Editing

To change tvOS / watchOS / visionOS targets or Tuist config: edit the files in this apple/ directory, then re-run bootstrap.sh.

To change the iOS target or Tauri build settings: edit tauri.conf.json and re-run cargo tauri ios init + bootstrap.sh.

Never edit files directly inside gen/apple/ — they will be overwritten on the next scaffold or bootstrap.