Files
telegram-tui/docs/ios/release-checklist.md
2026-05-20 23:50:53 +03:00

2.5 KiB

iOS Release Checklist

Support Matrix

  • Minimum iOS: 17.0
  • Swift package shell also builds on macOS 14 for local smoke coverage.
  • Rust targets: iOS device and simulator targets still need TDLib validation.
  • TDLib: tdlib-rs 1.2.0 with download-tdlib; iOS packaging is not validated yet.
  • Bridge: UniFFI 0.31.1 generated Swift bindings.

Required Before TestFlight

  1. Install full Xcode, accept the license, and verify scripts/check-ios-prereqs.sh.
  2. Build the fake-backed simulator shell with scripts/build-ios-simulator-app.sh.
  3. Launch the fake-backed simulator shell with scripts/run-ios-simulator-app.sh.
  4. Create the Xcode app project or wire the Swift package into an Xcode app target for signing/archive.
  5. Add app icon, launch screen, bundle id, signing team, notification capability, and entitlements.
  6. Build TDLib for simulator and device architectures.
  7. Package Rust static libraries and generated UniFFI Swift/header/modulemap output into an XCFramework.
  8. Run simulator smoke with fake bridge.
  9. Run real-device smoke with real Telegram credentials.
  10. Archive and upload to TestFlight.

CI Gates

  • cargo fmt -- --check
  • cargo check -p tele-core
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo test --workspace --all-features
  • scripts/generate-ios-ffi-bindings.sh
  • swiftc -typecheck for generated Swift bindings
  • swift build --product TeleTuiIOSApp
  • swift run TeleTuiIOSSmokeTests
  • DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer scripts/build-ios-simulator-app.sh
  • DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer scripts/smoke-ios-simulator-ui.sh
  • DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer scripts/build-ios-fake-ffi-xcframework.sh
  • DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer scripts/check-ios-tdlib-linking.sh once TDLib iOS artifacts are available

swift test is not currently a CI gate on this host because the CLI Swift toolchain available to the package does not expose XCTest or Testing. The deterministic view-model coverage lives in the executable TeleTuiIOSSmokeTests target until an Xcode test target is introduced.

Rollback

  1. Disable the TestFlight build in App Store Connect.
  2. Re-upload the previous known-good archive.
  3. If the issue is TDLib/session related, revoke the affected build and keep existing accounts on the previous app version.
  4. Preserve account Application Support directories; do not delete TDLib databases during rollback unless the issue is confirmed to be corrupted local state.