Skip to content

Repository files navigation


Image

Image Loading System

Image Image

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 compiles in under 2 seconds¹. It 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

Sponsors

Proxyman Logo

Proxyman

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.

Nuke Docs and Demo

Installation

Nuke supports Swift Package Manager, which is the recommended option. If that doesn't work for you, you can use binary frameworks attached to the releases.

The package ships with three 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 UIImageView extensions (UIKit, AppKit)
NukeVideo The components for decoding and playing short videos

Extensions

The image pipeline is easy to customize and extend. Check out the following first-class extensions and packages built by the community.

Name Description
Alamofire Plugin Replace networking layer with Alamofire
NukeWebP Community. WebP support, built by Maxim Kolesnik
WebP Plugin Community. WebP support, built by Ryo Kosuge
AVIF Plugin Community. AVIF support, built by Denis
RxNuke RxSwift extensions for Nuke with examples

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 15.0 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.


¹ Measured on MacBook Pro 14" 2021 (10-core M1 Pro)

About

Image loading system

Topics

Resources

Stars

8.7k stars

Watchers

101 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages