This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This project uses Fastlane for primary build automation. Key commands:
# Install dependencies
bundle install
# Run all tests across platforms (iOS, macOS, tvOS, watchOS)
bundle exec fastlane tests
# Run specific platform tests (used in CI)
bundle exec fastlane test_ci
# Build for specific platform
bundle exec fastlane build_ci
# Lint CocoaPods spec and Swift Package Manager
bundle exec fastlane lint
# Swift Package Manager (alternative)
swift build
swift test
# Full release workflow (tests, linting, versioning, GitHub release, CocoaPods push)
bundle exec fastlane release version:X.X.X
Kingfisher is a modular image loading and caching library with clear separation of concerns:
Sources/General/KingfisherManager.swift) - Central coordinatorSources/Networking/ImageDownloader.swift) - Network layerSources/Cache/ImageCache.swift) - Dual-layer caching (memory + disk)Sources/Image/ImageProcessor.swift) - Image transformation pipelineKingfisherCompatible protocol.kf propertyKF.url()... method chainingKingfisherOptionsInfo for configurationSources/
├── General/ # Core managers, options, data providers
├── Networking/ # Download, prefetch, session management
├── Cache/ # Multi-layer caching system
├── Image/ # Processing, filters, formats, transitions
├── Extensions/ # UIKit/AppKit/SwiftUI integration
├── SwiftUI/ # SwiftUI-specific components
├── Utility/ # Helper utilities and extensions
└── Views/ # Custom UI components
UIImageView, UIButton via .kf namespaceKFImage and KFAnimatedImage componentsTests/KingfisherTests/KingfisherTestHelperdancing-banana.gif, single-frame.gif# All platforms (preferred)
bundle exec fastlane tests
# Swift Package Manager only
swift test
# Single platform via destination
bundle exec fastlane test destination:"platform=iOS Simulator,name=iPhone 15"
Sources/General/Kingfisher.swift - Base types, protocols, and KingfisherCompatibleSources/General/KingfisherManager.swift - Central coordinator managing all operationsSources/General/KingfisherOptionsInfo.swift - Options system and configurationSources/Extensions/ImageView+Kingfisher.swift - Primary UIKit integrationSources/SwiftUI/KFImage.swift - Primary SwiftUI integrationPackage.swift / Package@swift-5.9.swift - Swift Package Manager configurationKingfisher.podspec - CocoaPods specificationfastlane/Fastfile - Build automation and release processSources/PrivacyInfo.xcprivacy - App Store privacy complianceSources/Documentation.docc/