# Nuke 14 Migration

Upgrades an app from Nuke 13 to Nuke 14 and finds dead delegate methods.

- Repository: https://github.com/kean/Nuke (8688 stars)
- Category: Mobile
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add kean/Nuke --skill nuke-migrate -g -a claude-code -y`
Codex: `npx skills add kean/Nuke --skill nuke-migrate -g -a codex -y`
Cursor: `npx skills add kean/Nuke --skill nuke-migrate -g -a cursor -y`
Gemini CLI: `npx skills add kean/Nuke --skill nuke-migrate -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add kean/Nuke`

## Description

Upgrade an app to Nuke 14 from Nuke 13 or earlier. Use when bumping the Nuke, NukeUI, or NukeExtensions dependency, when a Nuke upgrade doesn't compile, or when asked to replace NukeExtensions, Combine publishers, or a hand-written GIF view with current Nuke APIs. Finds what the compiler can't report, such as pipeline delegate methods that compile and are never called.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Migrating to Nuke 14

The compiler finds most of this migration, and its errors name the replacements. What it can't find is the dangerous part: code that keeps compiling and stops working. **A green build doesn't mean the migration is done.** Follow the steps in order.

## 1. Check that the app can move

```bash
grep -A6 '"identity" : "nuke"' Package.resolved *.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
grep -rnE 'IPHONEOS_DEPLOYMENT_TARGET|\.iOS\(' --include='*.pbxproj' --include='Package.swift' .
git ls-remote --tags https://github.com/kean/Nuke 'refs/tags/14.*'
```

If there's no `Package.resolved`, read the version from `Package.swift`. Nuke 14 needs iOS 16, tvOS 16, macOS 13, watchOS 9, or visionOS 1, and Xcode 26.0 with Swift 6.2. If the app deploys to something lower, stop and ask. The choice is between raising the target and staying on 13.x, which still gets fixes, and it isn't yours to make.

If the app is on 12.x or earlier, read [From Nuke 12 or earlier](#from-nuke-12-or-earlier) as well.

## 2. List what the compiler won't report

Do this before you touch the dependency, and keep the list. Every hit gets resolved in step 5, whatever the build says.

```bash
# Every conformance to the pipeline delegate
grep -rnE 'ImagePipeline\.Delegate|ImagePipelineDelegate' --include='*.swift' .

# `nil` passed to a LazyImage modifier, and modifiers that take an optional
grep -rnE '\.(processors|priority)\(' --include='*.swift' .

# Error text that reaches people, and errors matched by type in NukeUI callbacks
grep -rn 'localizedDescription' --include='*.swift' .
grep -rnE 'onCompletion|onFailure|\.result|state\.error' --include='*.swift' .

# Views that start playing animations, and repeated loads that used to restart the task
grep -rnE 'LazyImage\(|LazyImageView|FetchImage|onStart' --include='*.swift' .

The rest: https://github.com/kean/Nuke/blob/HEAD/skills/nuke-migrate/SKILL.md
