kean/nuke
Serving Images Since 2015
Sponsors
<table> <tr> <td valign="center" align="center"> <a href="https://proxyman.io"> <img src="https://kean.blog/images/logos/proxyman.png" height="50px" alt="Proxyman Logo"> <p>Proxyman</p> </a> </td> </tr> </table>
Usage
Load images using ImagePipeline from the lean core Nuke module:
func loadImage() async throws {
let imageTask = ImagePipeline.shared.imageTask(with: url)
for await progress in imageTask.progress {
// Update progress
}
imageView.image = try await imageTask.image
}Or use the built-in UI components from NukeUI:
struct ContentView: View {
var body: some View {
LazyImage(url: URL(string: "https://example.com/image.jpeg"))
}
}The Getting Started guide is the best place to start. The demo app in this repo covers the rest: open Nuke.xcodeproj and run the NukeDemo scheme.
<a href="https://kean-docs.github.io/nuke/documentation/nuke/getting-started"> <img width="747" alt="Nuke Docs and Demo" src="https://github.com/user-attachments/assets/c6bbac09-55f2-4824-a0ec-a3a467d9e9be" /> </a>
Installation
Nuke supports Swift Package Manager.
The package ships with four modules that you can install depending on your needs:
|Module|Description| |--|--| |Nuke|The lean core framework with ImagePipeline, ImageRequest, and more| |NukeUI|The UI components: LazyImage (SwiftUI), LazyImageView and ImageLoader (UIKit, AppKit)| |NukeExtensions|The extensions for UIImageView (UIKit, AppKit). Soft-deprecated: use ImageLoader from NukeUI| |NukeVideo|The components for decoding and playing short videos|
AI Agents
Nuke ships with what a coding agent needs to use its current API, and not the one it remembers.
- Skills:
nuke-optimizemeasures and fixes slow images, andnuke-migrateupgrades an app to Nuke 14, including what the compiler can't report. In Claude Code, run the commands below. For other agents, copy the folders to.agents/skills/in your project.
`` /plugin marketplace add kean/Nuke /plugin install nuke@nuke ``
- Docs:
llms.txt,llms-full.txt, andllms-api.txt. They're also in your project's checkout of the package, at the version you resolved. - Debugging: launch with
NUKE_DIAGNOSTICS_LOG=1to get a line in the console for every task, or runpo ImagePipeline.shared.diagnosticsin the debugger. See Troubleshooting. - Contributing:
AGENTS.mdhas the commands and the conventions for working on Nuke itself.
Extensions
The image pipeline is easy to customize and extend. Check out the following first-class extensions and packages built by the community. None of them resolves against Nuke 14 yet: the Status column has the versions each one supports.
|Name|Description|Status| |--|--|--| |Alamofire Plugin|Replace networking layer with Alamofire|Nuke 12. Updated for Nuke 14 at its release| |RxNuke|RxSwift extensions for Nuke with examples|Nuke 12. Updated for Nuke 14 at its release| |AVIF Plugin| Community. AVIF support, built by Denis|Nuke 11 and 12|
Looking for a way to log your network requests, including image requests? Check out Pulse.
Minimum Requirements
Upgrading from the previous version? Use a Migration Guide.
Nuke 14 is in development on
mainand its requirements aren't final. The latest release is Nuke 13.
| Nuke | Swift | Xcode | Platforms | |-----------------|-----------|------------|-------------------------------------------------------------| | Nuke 14.0 (WIP) | Swift 6.2 | Xcode 26.0 | iOS 16.0, watchOS 9.0, macOS 13.0, tvOS 16.0, visionOS 1.0 | | Nuke 13.0 | Swift 6.2 | Xcode 26.0 | iOS 15.0, watchOS 8.0, macOS 12.0, tvOS 15.0, visionOS 1.0 | | Nuke 12.0 | Swift 5.7 | Xcode 14.1 | iOS 13.0, watchOS 6.0, macOS 10.15, tvOS 13.0 |
License
Nuke is available under the MIT license. See the LICENSE file for more info.
Package Metadata
Repository: kean/nuke
Default branch: main
README: README.md