An in-app debug toolkit for iOS
Shake to reveal a customizable Tab-view of tools—starting with a full Pulse-powered Network Logger.
- Shake-to-open debug console (no boilerplate window subclass or SceneDelegate changes).
- Pulse integration for logging and network inspection—all your
URLSession(and Alamofire/OpenAPI) calls show up. - TabView architecture—add new tools (feature toggles, performance monitors, etc.) alongside “Network.”
- Swift Package Manager delivery—drop it in and go.
- In Xcode go to File → Swift Packages → Add Package Dependency…
- Enter
https://github.com/poviolabs/ios-dev-kit.git - Choose a version (e.g.
Up to Next Major1.0.0).
The simplest way to integrate PovioDevKit in a SwiftUI app is with a single modifier:
import SwiftUI
import PovioDevKit
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
#if !PRODUCTION
.withDevKit()
#endif
}
}
}That's it! The .withDevKit() modifier:
- Registers network logging automatically
- Listens for shake gestures
- Presents the DevKit console as a sheet
Pass custom tools to add your own debug views:
.withDevKit(customTools: [
CustomTool(title: "Feature Flags", icon: "flag") {
FeatureFlagsView()
}
])For more control over presentation, use the .onShake modifier directly:
import SwiftUI
import PovioDevKit
import Pulse
@main
struct MyApp: App {
@State private var showDevKit = false
var body: some Scene {
WindowGroup {
ContentView()
#if !PRODUCTION
.onShake { showDevKit = true }
.sheet(isPresented: $showDevKit) {
DevKitTabView()
}
.onAppear {
URLSessionProxyDelegate.enableAutomaticRegistration(logger: .shared)
}
#endif
}
}
}import UIKit
import PovioDevKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Kick off logging, network proxy & shake trigger
PovioDevKit.shared.start()
return true
}
}