An on-device debugger/JIT enabler for iOS versions 17.4+, powered by idevice. https://stikdebug.xyz/
Find a file
umarfatmi05 ef78da3c05 Make a held location survive interface changes and app restarts
Three fixes aimed at a simulation that stays up without manual intervention.

NetworkPathMonitor: ignore the utun (.other) interface when reporting which
interface is in use. LocalDevVPN is always present and always in use, so it
masked the real path — every state looked like "Other", a Wi-Fi<->cellular
handoff produced an identical signature, and no change was ever broadcast.

TunnelManager: stop trusting isConnected. It only records that the last
connect succeeded, and nothing in the app notices a tunnel that dies quietly,
which is precisely what a handoff causes — so the reconnect was skipped in the
exact case it existed for. Now a genuine interface change rebuilds the tunnel
regardless. startTunnel() is semaphore-guarded and recreates its adapter, so
reconnecting a live tunnel is safe.

LocationSimulationKeepAlive: persist the held coordinate and re-arm it on
launch. iOS gives sideloaded apps no way to start themselves, so a reboot or a
kill will always drop the simulation; restoring on launch means reconnecting
the VPN and opening the app is enough to get it back, with no need to re-pick
the location. Armed before the VPN is up is fine — the resend loop tolerates
failure and takes hold once the tunnel exists. Skipped when no pairing file
exists, since nothing could succeed and it would only burn battery.

Not verified on device.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 19:05:21 -04:00
.github CI: build this branch, and stop pinning a disappearing Xcode 2026-09-04 19:05:20 -04:00
assets Change StikJIT to StikDebug 2026-05-20 09:07:55 -04:00
StikDebug Make a held location survive interface changes and app restarts 2026-09-04 19:05:21 -04:00
StikDebug.xcodeproj Bump version to 3.1.10 2026-08-25 12:42:58 -04:00
StikDebugTests 3.1.5 2026-05-31 20:07:01 -04:00
StikDebugUITests Change StikJIT to StikDebug 2026-05-20 09:07:55 -04:00
.gitignore Hopefully fix some weird issues 2026-05-20 10:07:09 -04:00
info.md Clarify data collection statement for StikDebug 2026-02-25 13:52:13 -05:00
LICENSE Create LICENSE 2025-03-27 06:46:57 -04:00
README.md Keep the app unsuspended during a debug session so reconnect can run 2026-09-04 19:04:55 -04:00

Logo

StikDebug

An on-device debugger/JIT enabler for iOS versions 17.4+ powered by idevice.


Features

  • JIT: Enable Just In Time compilation for sideloaded apps that have the get-task-allow entitlement.
  • App Launching: Launch every app installed on your device.
  • Console: Live app and system logs.
  • Scripts: Manage automation scripts (mainly used for iOS 26 JIT).
  • App Expiry: See when apps will expire and install/remove profiles.
  • Device Info: View detailed device metadata.
  • Processes: Inspect running apps/processes and terminate them.
  • Location Simulator: Simulate the GPS location of your device.

Download

Note

Notice: StikDebug is no longer available on the App Store. Please use the official download methods below.

Add AltSource   Download .ipa

Compatibility

iOS Version Status Notes
1.0 – 17.3.X Not supported Uses Different Connection Protocols
17.4 – 18.x Fully supported Stable
26.0+ Supported Limited App Availability (Developers need to update their apps to work.)

How to Enable JIT

StikDebug enables JIT for sideloaded apps on iOS 17.4+ without needing a computer after the initial pairing setup.

Requirements

  • StikDebug installed (via AltSource, direct .ipa, or self-built)
  • A valid pairing file (.plist / .mobiledevicepairing) for your device
  • SideStore / AltStore / similar sideload tool (for app refreshing)
  • A loopback VPN such as LocalDevVPN

Steps

  1. Obtain a pairing file

  2. Set up VPN

    • Launch LocalDevVPN and enable the VPN.
  3. Enable JIT for an app

    • Launch StikDebug and tapp the Enable JIT button.
    • Select your sideloaded app from the list in StikDebug.

Troubleshooting

  • "Connection dropped" or loopback errors → Check iOS version compatibility / beta warnings.
  • Heartbeat errors → Ensure that LocalDevVPN is on. Any network works (Wi-Fi or cellular); the tunnel rides the VPN, so cellular-only is supported. It may also be a pairing file issue.
  • Session drops after switching to another app → Keep the background keep-alive enabled (Settings → Background Keep-Alive). While a JIT/debug session is active, StikDebug plays inaudible audio and holds a background assertion so the session survives being switched out of the app instead of timing out.
  • Pairing file issues → Replace file with device unlocked & trusted.
  • Still stuck? Join the Discord with logs/screenshots.

Building from Source

Important

Integrating StikDebug or StikJIT into your own project?
See the StikJIT Integration Guide for integration instructions.

Requirements

  • macOS (latest recommended)
  • Xcode 16+ (Xcode 26+ preferred for iOS 26+ support)
  • iOS device on iOS 17.4+ (for testing)
  • Git
  • Basic Xcode/Swift knowledge

Steps

  1. Clone the repo

    git clone https://github.com/StikDebug/StikDebug.git
    cd StikDebug
    
  2. Open in Xcode

    • Launch Xcode
    • Open StikDebug.xcodeproj
  3. Configure signing

    • Select the StikDebug target
    • Go to Signing & Capabilities
    • Sign in with your Apple ID (free or paid developer account)
    • Set a unique Bundle Identifier (e.g., com.yourname.StikDebug)
  4. Build & install

    • Select your connected device
    • Press Cmd + R (or Product → Run)
    • Trust the certificate on device: Settings → General → VPN & Device Management

After install, follow the JIT setup steps above (pairing import, etc.).

Contributing

Thank you for your interest in contributing to this project. Contributions of all kinds are welcome.

Reporting Bugs

If you discover a bug, please open an issue and include:

  • A clear and descriptive title
  • Steps to reproduce the issue
  • Expected behavior vs. actual behavior
  • Relevant logs, screenshots, or environment details (iOS version, device model, etc.)

Suggesting Features

To propose a new feature, open a feature request issue and provide:

  • A clear description of the feature
  • The problem it solves or the use case it addresses
  • Any relevant examples or implementation ideas

Code Contributions (Best Practices)

  • Follow normal Swift and SwiftUI style.
  • Write clear and easy to understand code.
  • Keep your changes consistent with how the project is already set up.
  • Make sure everything builds and works without errors.

We appreciate your time and effort in helping improve this project.

Code Help

Ask DeepWiki

License

StikDebug is licensed under AGPL-3.0. See LICENSE for details.