Jelly for iOS
Add a feedback toolbar to your iOS debug builds. Long-press any SwiftUI or UIKit element, write a note, and send your coding agent structured feedback with the screenshot attached.
Why it works well with SwiftUI
SwiftUI does not expose its full render tree the way you might want it to. So Jelly checks both the UIView hierarchy and the accessibility tree, then picks the tighter match.
In normal words: you can tap the actual thing that needs feedback, not just the giant hosting view around it.
Set it up in three steps
Add the package
In Xcode, go to File → Add Package Dependencies, paste the repo URL, and add
Jellyto your app target for debug builds.// Package.swift dependencies: [ .package(url: "https://github.com/rajanndube/jelly-swift.git", from: "0.1.0") ], targets: [ .executableTarget( name: "MyApp", dependencies: [ .product(name: "Jelly", package: "jelly-swift", condition: .when(configuration: .debug)) ] ) ]The debug-only condition keeps Jelly out of release builds.
Call
Jelly.install()onceAdd it in your
Appinit orAppDelegate, behind#if DEBUG.import SwiftUI #if DEBUG import Jelly #endif @main struct MyApp: App { init() { #if DEBUG Jelly.install() #endif } var body: some Scene { WindowGroup { ContentView() } } }Build and run
A small draggable Jelly pill appears on every scene. No extra wiring for each screen.
Source attribution
Every annotation includes a Source: File.swift:42 line. For sharper screen-level accuracy, tag your screen root with .jellySource().
SwiftUI does not expose file:line from runtime call stacks, so .jellySource() gives Jelly the exact screen source. Think of it as adding a name tag to the area you want feedback on.
What gets shared
Jelly exports the element, location, source line, component type, position, feedback, intent, severity, and screenshot. The format matches Android, React Native, and web, so your agent workflow stays the same across platforms.