Contents

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-optimize measures and fixes slow images, and nuke-migrate upgrades 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, and llms-api.txt. They're also in your project's checkout of the package, at the version you resolved.
  • Debugging: launch with NUKE_DIAGNOSTICS_LOG=1 to get a line in the console for every task, or run po ImagePipeline.shared.diagnostics in the debugger. See Troubleshooting.
  • Contributing: AGENTS.md has 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 main and 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