Feddy Docs

Installation

From package install to a working feedback sheet in one flow — Swift Package Manager, configure, identify, drop in RequestComposeView, verify in the dashboard.

This page takes you from a fresh Xcode project to a working feedback submission landing in your Feddy dashboard. Read top-to-bottom; every section is a step in the same flow.

Requirements

ItemVersion
Xcode15+
iOS deployment target15+
macOS deployment target12+
Swift5.9+

Add the package

The SDK ships through Swift Package Manager. There is no CocoaPods or Carthage variant.

dependencies: [
    .package(url: "https://github.com/FeddyLab/feddy-ios", from: "0.7.1")
]

Then list Feddy as a product dependency on the target that needs it:

.target(
    name: "MyApp",
    dependencies: [
        .product(name: "Feddy", package: "feddy-ios"),
    ]
)
  1. File → Add Package Dependencies…
  2. Paste https://github.com/FeddyLab/feddy-ios into the search field
  3. Pick Up to Next Major Version with the latest tag pre-selected
  4. Click Add Package, then check the Feddy product against the target you want to integrate

Get your Project ID

  1. Sign up at feddy.app and create a workspace
  2. Open Settings → API Keys
  3. Copy the Project ID — it looks like fed_xxxxxxxxxxxx (the fed_ prefix followed by 12 alphanumeric characters)

Project ID vs API Key

The Project ID (fed_xxxxxxxxxxxx) is safe to embed in your client app — it only grants ingest. The dashboard also generates API Keys (fed_sk_xxxxxxxxxxxx); those are server-to-server secrets and must never be shipped in a client. The SDK rejects anything starting with fed_sk_.

Configure at app launch

Call Feddy.configure(...) exactly once at app launch. It is synchronous, fire-and-forget, and never throws — errors (invalid key, network failure) are logged to the console rather than surfacing as a throw.

import SwiftUI
import Feddy

@main
struct MyApp: App {
    init() {
        Feddy.configure(apiKey: "fed_xxxxxxxxxxxx")
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
import UIKit
import Feddy

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
    ) -> Bool {
        Feddy.configure(apiKey: "fed_xxxxxxxxxxxx")
        return true
    }
}

Verify the install

Tap the button below in any view to confirm the SDK is wired up. It will present the bundled feedback sheet — submit a quick test message:

import SwiftUI
import Feddy

struct VerifyButton: View {
    @State private var showFeedback = false

    var body: some View {
        Button("Send Feedback") {
            showFeedback = true
        }
        .sheet(isPresented: $showFeedback) {
            RequestComposeView()
        }
    }
}

In the Feddy dashboard, navigate to Inbox — your test submission should appear at the top of the list within a second or two.

Offline retry

If the device was offline at submit time, the SDK queues the payload locally and replays it on the next Feddy.configure(...) call. You don't need to handle this manually — but it does mean test submissions may take a moment to land if you're on a flaky network.

What's next

You're integrated. Continue with:

On this page