Setup guide

Connect your iOS app to Shake to Ship.

Start in the hosted dashboard at shaketoship.com/app. Shake to Ship processes recorded feedback and files GitHub issues with evidence. Your developer or chosen coding agent makes code changes for your team to review.

01

Create a project and connect GitHub

Sign in to the dashboard, create a project, and connect the repository that should receive feedback issues.

  1. 01Open /app and create a project for your app.
  2. 02Install the shaketoship GitHub App on the destination repository, then bind that repository to the project.
  3. 03Select Copy prompt in the project dashboard. Give the generated setup prompt to your coding agent inside your app repository.

The prompt contains a short-lived setup token and, on first mint, an upload token. Do not commit or log either token. If the setup token expires, generate a new prompt. If an existing upload token is no longer available, use the dashboard token rotation action.

02

Add the iOS SDK

Add https://github.com/noktadev/shaketoship-swift through Swift Package Manager and link the ShakeToShip product. Use an available release from the public package. The 3.0.0 release target remains on hold; do not select it before its mirror tag is verified.

import SwiftUI
import ShakeToShip

// uploadToken comes from the dashboard through your build configuration.
// app must match the app value permitted by that project upload token.
RootView()
  .shakeToShip(config: ShakeToShipConfig(
    app: "com.example.myapp",
    collectorURL: URL(string: "https://ingest.shaketoship.com")!,
    secret: uploadToken,
    capabilities: .all
  ))

This example explicitly permits microphone narration. Add NSMicrophoneUsageDescription with a clear reason. Use .microphoneFree when narration is not required. The host controls release, rollout, and consent conditions; supply nil to disable the recorder. Optional Ideas and Inbox features require their separate release and host setup checks.

  1. 01Store the upload token in a gitignored build configuration, such as feedback.local.xcconfig. Inject it into local and CI archives. Keep setup and server credentials out of the app binary.
  2. 02Use the ingest URL and app value from the generated prompt. Hosted setup requires no collector deployment, R2 credentials, or local analysis processor.
  3. 03Attach .shakeToShip(config:) once at the SwiftUI root and read the public package README for capability and privacy requirements.
03

Report the app configuration

The setup prompt configures the project through the sts CLI. Replace the example values with those in your generated prompt and your app's bundle identifier.

bun add --global shaketoship@0.1.0

# Set these environment values privately; do not commit them.
export STS_TOKEN="<setup token from the generated prompt>"
export STS_API_URL="https://api.shaketoship.com"

sts project set --project <project-id> \
  --name "My App" --bundle-id com.example.myapp --platform ios
sts project status --project <project-id>

The status response must report configured: true. This confirms that the app configuration is saved; it does not prove capture, upload, or issue creation. You can also write projectId, name, appBundleIds, and platform to shaketoship.json and run sts setup.

04

Verify a report and review its evidence

With capture enabled, send a test report from your app. Check the dashboard session and the connected GitHub repository before asking your developer or coding agent to investigate.

  1. 01Confirm the report uploads and appears in the dashboard.
  2. 02Review the recording and findings. Confirm the GitHub App can file an issue in the connected repository.
  3. 03Assign investigation and code changes to your developer or chosen coding agent. Your team reviews and releases the changes.
# Requires the 0.2.0 CLI release after npm publication is verified.
# With an authorized project token and authenticated gh CLI:
sts evidence pull https://github.com/your-org/your-app/issues/42

The public npm CLI is currently 0.1.0 and supports project setup. Evidence pull requires the unreleased 0.2.0 CLI; review evidence in the dashboard until that release is verified. The newer CLI writes available evidence to .shaketoship/evidence/<jobId>/ and marks unavailable assets in meta.json. Hosted processing creates issues; it does not change your code or open pull requests.