iOS SDK
FeedJarKit is a small Swift package that ships a built-in feedback screen and a programmatic submit API. It works with iOS 14+ and supports both UIKit and SwiftUI integrations.
Install via Swift Package Manager
In Xcode go to File → Add Packages… and add the FeedJar SDK repository, or add it to your Package.swift:
.package(url: "https://github.com/feedjar/feedjar-sdk-ios", from: "0.1.0")For local development, point Xcode at the feedjar_sdk_ios folder shipped with this repo.
Production API
FeedJarKit talks to the production ingest API over HTTPS. The base URL is embedded in the SDK — integrators only pass their app fjr_… key via configure.
Configure
import FeedJarKit
@main
struct MyApp: App {
init() {
FeedJar.configure(apiKey: "fjr_...")
}
var body: some Scene { WindowGroup { ContentView() } }
}Server-side or custom clients use the same key over HTTP — see the Feedback API.
Use the built-in feedback UI (UIKit)
You choose which categories appear (e.g. only general feedback, or feedback plus feature requests). Use .featureRequest as an alias for .feature. Email is optional for feedback and feature requests (leave blank to omit); support requires a valid email—same rules as FeedJar.submit.
import UIKit
import FeedJarKit
// Default: all three types.
func openFeedback(from controller: UIViewController) {
FeedJar.presentFeedback(from: controller)
}
// Only general feedback.
func openFeedbackOnly(from controller: UIViewController) {
FeedJar.presentFeedback(from: controller, allowedTypes: [.feedback])
}
// Feedback + feature request segments.
func openFeedbackAndIdeas(from controller: UIViewController) {
FeedJar.presentFeedback(
from: controller,
allowedTypes: [.feedback, .featureRequest],
defaultType: .feedback
)
}Use the built-in feedback UI (SwiftUI)
import SwiftUI
import FeedJarKit
struct ContentView: View {
@State private var showFeedback = false
var body: some View {
Button("Send feedback") {
showFeedback = true
}
.feedJarFeedbackSheet(
isPresented: $showFeedback,
allowedTypes: [.feedback, .featureRequest]
)
}
}Submit programmatically (custom UI)
FeedJar.submit uses the same HTTP endpoint as the form.Support must include a valid email (validated in the SDK).
Task {
do {
try await FeedJar.submit(
type: .featureRequest,
message: "It would be great if you supported widgets.",
email: "user@example.com",
metadata: ["screen": "settings", "appVersion": "1.4.2"]
)
} catch {
print("FeedJar error: \(error)")
}
}What gets sent
type:feedback,feature(use.featureRequestin Swift), orsupport. The SDK does not offer a crash category.message: the user's text.email: optional for feedback and feature requests; required for support (built-in UI andFeedJar.submit).metadata: any small JSON object (app version, screen, locale, device info).