Common flows
Once the SDK is set up, the most common work is presenting feedback and the roadmap from the right places in your app.
Show feedback
Use showFeedback() to open the default feedback experience:
UserJot.showFeedback()Do not pass board: in 0.3.0. That helper builds /boards/{slug}, and the
live route is /board/{slug}.
Show roadmap
UserJot.showRoadmap()Show changelog
showChangelog() exists, but in 0.3.0 it opens /changelog. The public route
is /updates, with no redirect, so this call does not work yet.
Presentation styles on iOS
On iOS, UserJot surfaces are presented as native sheets.
The SDK currently supports multiple presentation styles:
UserJot.showFeedback() // default
UserJot.showFeedback(presentationStyle: .sheet) // full-height sheet
UserJot.showFeedback(presentationStyle: .mediumSheet) // medium sheet on supported versionsChoose the style that fits the surrounding app flow. For example, a medium sheet can work well for lightweight feedback entry, while the full-height sheet gives the content more room.
SwiftUI flow
For SwiftUI apps, the cleanest pattern is usually a state-driven modifier:
import SwiftUI
import UserJot
struct ContentView: View {
@State private var showingFeedback = false
var body: some View {
Button("Send Feedback") {
showingFeedback = true
}
.userJotFeedback(isPresented: $showingFeedback)
}
}Roadmap has no SwiftUI modifier in 0.3.0. Call showRoadmap() from a button
action instead.
Common product pattern
A typical settings or help screen might expose both:
struct SettingsView: View {
@State private var showingFeedback = false
var body: some View {
List {
Button("Send Feedback") {
showingFeedback = true
}
Button("View Roadmap") {
UserJot.showRoadmap()
}
}
.userJotFeedback(isPresented: $showingFeedback)
}
}Use your own presentation container
If you do not want the SDK to control presentation, you can ask it for the underlying URLs and load them in your own WebView or app container:
let feedbackURL = UserJot.feedbackURL()
let roadmapURL = UserJot.roadmapURL()changelogURL() has the same /changelog path issue as showChangelog().
That is the better fit when:
- your app already has a custom WebView shell
- you need tighter control over navigation or chrome
- you want UserJot inside an existing in-app presentation system
Choosing the right approach
- Use
showFeedbackandshowRoadmapfor the fastest path. - Use
.userJotFeedbackwhen feedback presentation should be state-driven. - Use the URL methods when you need full control over presentation.