Serving Images Since 2015
Load images from different sources and display them in your app using simple and flexible APIs. Take advantage of the powerful image processing capabilities and a robust caching system.
The framework is lean and has an automated test suite 2x the codebase size, ensuring excellent reliability. Nuke is optimized for performance, and its advanced architecture enables virtually unlimited possibilities for customization.
Memory and Disk Cache · Image Processing & Decompression · Request Coalescing & Priority · Prefetching · Resumable Downloads · Progressive JPEG · HEIF, WebP, GIF · Animated Images · SwiftUI · Async/Await
Proxyman |
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.
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 |
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.
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.
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 |
Nuke is available under the MIT license. See the LICENSE file for more info.
