A thin wrapper for InjectionIII that provides hot reloading for Swift applications, saving hours of development time.
Inject is a hot reloading library for Swift applications that allows developers to edit running app code and see changes reflected in near real-time. It wraps the underlying InjectionIII tool to provide a seamless developer experience, eliminating the need for full recompilation and app restart cycles. This saves significant development time by reducing wait times and enabling rapid iteration.
Swift developers building iOS or macOS applications with UIKit, AppKit, or SwiftUI who want to accelerate their development workflow through live coding.
Developers choose Inject because it requires minimal code changes, is production-safe with no-op behavior in release builds, and integrates effortlessly with existing Swift projects. Its thin wrapper design maximizes productivity without adding complexity.
Hot Reloading for Swift applications!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Adding @ObserveInjection and .enableInjection() allows real-time UI updates without full recompilation, as demonstrated in the README's integration example.
ViewControllerHost and ViewHost wrap classes to enable hot reloading in imperative frameworks, facilitating rapid iteration on complex views without restarting the app.
Code is inlined as a no-op and stripped by LLVM in non-debug builds, so developers don't need to remove Inject code for production releases.
Requires downloading the InjectionIII app, adding linker flags, and configuring build settings like EMIT_FRONTEND_COMMAND_LINES, which can be error-prone and time-consuming.
As a thin wrapper over InjectionIII, Inject inherits its bugs and limitations, and updates to InjectionIII might break compatibility or require reconfiguration.
The optional build phase script modifies source code automatically, which could introduce unintended changes or conflicts in team environments, as warned in the README.