Keep-alive for any app: - On TXM devices (iOS 26+), keep-alive now falls back to the bundled universal JIT script for apps with no assigned/name-matched script. Previously only known apps got a script callback, so a generic app's JIT brk syscalls went unserviced and the app hung / was killed in the background — the reason keep-alive "didn't work for any app". The fallback is read straight from the app bundle so the current, cancellation-aware script is always used. - Stopping a hold now reliably stops the script loop: the hold and its JIT script share one cancellation token, exposed to JS as should_continue() and honored by send_command(). universal.js checks should_continue() each iteration. On stop we interrupt + detach so the held app keeps running instead of being torn down. The cancellation flag is only read from the script's own thread, so there is no unsafe concurrent access to the (non-thread-safe) debug proxy. Banner from the "Other" tab: - Selecting an app in the "Other" (launch) tab while keep-alive is enabled now holds it in the background and shows the banner, instead of silently launching without a debugger. The launch rows show a green "Hold" action and a footer note in this mode. Dynamic Island / Live Activity: - New StikDebugWidgets widget-extension target hosting a keep-alive Live Activity, with compact/expanded/minimal Dynamic Island presentations and a Lock Screen view. Shared KeepAliveActivityAttributes lives in a StikDebugShared group used by both the app and the extension. - BackgroundAliveManager starts the activity when a hold begins and ends it when the hold stops; stale activities from a previous run are cleared at launch. - Added NSSupportsLiveActivities to the app Info.plist. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EpCxAimrBo9RA8v6BxSEXT |
||
|---|---|---|
| .github | ||
| assets | ||
| StikDebug | ||
| StikDebug.xcodeproj | ||
| StikDebugShared | ||
| StikDebugTests | ||
| StikDebugUITests | ||
| StikDebugWidgets | ||
| .gitignore | ||
| CODE_REVIEW_REPORT_BY_FABLE_5.md | ||
| info.md | ||
| LICENSE | ||
| README.md | ||
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-allowentitlement. - 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.
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
-
Obtain a pairing file
- Detailed guide: Pairing File Instructions (or ask in Discord).
-
Set up VPN
- Launch LocalDevVPN and enable the VPN.
-
Enable JIT for an app
- Launch StikDebug and tapp the
Enable JITbutton. - Select your sideloaded app from the list in StikDebug.
- Launch StikDebug and tapp the
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
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
-
Clone the repo
git clone https://github.com/StephenDev0/StikDebug.git cd StikDebug -
Open in Xcode
- Launch Xcode
- Open
StikDebug.xcodeproj
-
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)
-
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
License
StikDebug is licensed under AGPL-3.0. See LICENSE for details.