johnno1962/injectioniii

Re-write of Injection for Xcode in (mostly) Swift

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 38 minutes ago
Type:ApplicationCategory(s):Editors & IDEsiOS & macOSDeveloper Tools
Added to GitGenius on September 14th, 2026
Created on November 4th, 2017
Open Issues & Pull Requests: 5 (+0)
GitHub issues: Enabled
Number of forks: 348
Total Stargazers: 4,642 (+0)
Total Subscribers: 35 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 1.4 hours
Mean response time: 47.5 hours
90th percentile: 12.8 hours
Tracked items: 62

Most active contributors

Sign in to see contributor activity.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 3
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 150 days
Stale 30+ days: 2
Stale 90+ days: 1

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

InjectionIII is a hot-reloading tool for Swift development that enables code injection into running iOS simulator instances without full rebuilds.

The tool solves the iteration problem in iOS development by allowing developers to update function and method implementations incrementally while the app runs in the simulator. It works by recompiling edited source files into a dynamic library that gets loaded into the running application, effectively transforming Xcode from a source editor into a program editor where changes flow directly into the executing program. The mechanism relies on extracting compiler invocations from Xcode build logs and uses linker interposing to redirect old implementations to new ones.

Adoption requires adding startup code to your app and configuring linker flags with `-Xlinker` and `-interposable` options in Debug build settings. The tool works with the iOS simulator and macOS. One consideration is that injected code changes only take effect when that code path is actually executed, so view controllers and similar components may need to implement an optional `injected()` callback method to trigger screen updates. The README mentions the Inject Swift Package as an alternative approach to hosting that can complement injection workflows. Recent Xcode versions require an additional user-defined build setting to maintain compatibility.

The project maintains active engagement with compatibility issues, as evidenced by documented workarounds for Xcode version changes. Development appears responsive to platform evolution, with explicit guidance provided for adapting to new Xcode behavior rather than abandoning the approach.