Diagnostics that ship
inside your app
Inspect and edit app state during development. One-tap diagnostic export for internal testing, QA, and closed beta groups. Storage, exceptions, breadcrumbs, logs. Everything captured into a single .devlens file and analyzed in the companion macOS app.
$ .package(url: "devlens", from: "1.0.0")1import DevLens23func application(_ app: UIApplication) -> Bool {4 // Dev mode: full interactive inspector5 DevLens.start(mode: .developer)67 // Production: one-tap .devlens export8 DevLens.start(mode: .user)910 return true11}Your data never leaves the device
DevLens is 100% offline. No servers, no accounts, no tracking. The perfect tool for internal user testing, QA sessions, closed beta groups, and developers debugging issues on real devices.
Zero network calls
DevLens never opens a socket. No telemetry, no analytics, no crash-report uploads. Your diagnostic data stays on the device that created it.
Privacy by design
There is no server to compromise. DevLens has no backend, no API keys, no cloud dashboard. The architecture makes data leaks impossible.
100% on-device
Every log, breadcrumb, and storage snapshot lives in sandboxed app storage. Nothing is persisted outside your app's container.
Companion macOS app
When a user shares a .devlens file, open it in the companion macOS app for full analysis. The file never touches a third-party server.
Everything you need to diagnose anything
One library. Two modes. Full diagnostic coverage from development through production.
Interactive Inspector
Browse your entire app state at runtime. Views, storage, network, and more — all from an overlay you shake to open. Runs entirely on-device.
.devlens Export
Users tap once to capture the full diagnostic snapshot into a local file. Open and analyze it in the companion macOS app — no cloud upload required.
Exception Capture
Catch and store uncaught exceptions and assertion failures with full stack traces. Everything stays on-device until explicitly shared.
Storage Snapshots
UserDefaults, Keychain entries, Core Data stores, and file-system state — all captured locally and diffable across sessions.
Breadcrumb Trail
Automatic navigation and lifecycle breadcrumbs so you can retrace exactly what the user did before the issue. Never sent to a server.
Unified Log Stream
Consolidates os_log, print, and NSLog output into one searchable, filterable stream. All processing happens on-device.
Nothing else bridges both worlds
FLEX is dev-only. Sentry is production-only and sends data to external servers. DevLens works in both contexts — fully offline, with zero data collection.
Every Apple platform. One library.
Including Mac Catalyst. Add DevLens via Swift Package Manager and it works everywhere.