In-App Feedback for iOS, in Two Lines of SwiftUI
The SeggWat iOS SDK drops a native SwiftUI feedback button into any app — bug reports, screenshots, star and NPS ratings — with zero dependencies and no web view. It submits to the same project as your web widgets.
SeggWat started on the web. A script tag, a button in the corner, feedback in your dashboard. But a lot of products aren't a website — they're an app, and the moment a user wants to report a bug is the moment they're holding their phone, not sitting at a browser.
The usual way to collect feedback inside an iOS app is grim: a heavy SDK that ships a WKWebView rendering someone else's web form, plus an analytics tracker you never asked for. It doesn't feel native, it bloats your binary, and now you've got a third-party data processor in your privacy policy.
So I built the opposite. The SeggWat iOS SDK is native SwiftUI, has zero dependencies, and drops in like this:
SeggWat.configure(projectKey: "your-project-uuid")
ContentView()
.seggwatFeedbackButton() // floating feedback button, done.That's the whole integration.
Real SwiftUI, not a web view in a trench coat
The button is a real View. The form is a real View. There's no embedded browser, no JavaScript bridge, no tracker. It's pure SwiftUI with zero external dependencies — nothing to audit, nothing to break on the next iOS release — and it supports iOS 16 and up.
Add it to Xcode with Swift Package Manager and you're done. One line in File → Add Package Dependencies…, two lines in your app.
The same project as your web feedback
This is the part that matters if you ship on more than one surface. Feedback from the iOS SDK lands in the same SeggWat project as feedback from your web widget. Same inbox, same triage, same MCP server, same CLI, same iOS triage app. A bug reported from your iPhone app sits right next to one reported from your marketing site, instead of in a separate tool you forget to check.
You own that data. It goes to your project — EU-hosted, or self-hosted on the open platform — not into a black box.
Bugs come with screenshots
Flip on screenshotsEnabled and the form gains an Add Screenshot button. It captures the current screen and opens a fullscreen annotation editor built on PencilKit — pen, arrow, rectangle, and text tools, plus a blackout tool to redact anything sensitive before it leaves the device. Undo, redo, color presets, the lot. The annotated image rides along with the submission.
It's the same annotate-before-you-send flow as the web widget, done natively.
Ratings and NPS, one method
Feedback isn't the only signal. One call covers every rating type:
try await SeggWat.shared.submitRating(.helpful(true), screenName: "/settings")
try await SeggWat.shared.submitRating(.star(value: 4), screenName: "/product")
try await SeggWat.shared.submitRating(.nps(9), screenName: "/checkout")Helpful, star (1–5 or a custom max), and NPS (0–10) all aggregate into the same dashboard stats as your web ratings — so a single NPS number spans every place your users live.
Try it
The SDK is MIT-licensed and on GitHub. Add the package, drop in SeggWat.configure(projectKey:) and .seggwatFeedbackButton(), and you're collecting native feedback in the time it takes to read this post.
Native SwiftUI, zero dependencies, screenshot annotation, star and NPS ratings, English/German/Swedish out of the box, EU-hosted. Same feedback, now on every screen your users touch.
Related Posts
Next.js Feedback Widget: Add In-App Feedback Without Building Another Dashboard
Add a feedback widget to a Next.js app without building your own feedback backend, admin dashboard, screenshot flow, or NPS tooling from scratch.
Feature Request Template: A Copy-Paste Format That Gets Used
A simple, copy-paste feature request template — plus a shorter form for your users and a weekly process to triage requests without drowning in a spreadsheet.
The Public Trust Layer: Pair a Status Page With a Feedback Board
Users don't just want features — they want to trust you. Here's how a public status page plus a public feedback board and changelog form a simple trust layer for a small SaaS.
