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
Your Feedback Widget Can Now Talk Back
SeggWat now has live chat built into the same feedback widget. Real-time conversations with your users, on your own stack, EU-hosted, with no third-party chat vendor in the middle.
Reward Survey Completers with a Discount Code
Pair a targeted survey with a discount code on the thank-you screen — incentivize the feedback you actually asked for, at the moment it matters.
In-App Surveys Are Here: Ask Users the Right Question at the Right Moment
SeggWat now ships in-app surveys — NPS, CSAT, CES, and custom multi-question forms that fire on the right page, at the right moment, from one script tag.
