5.21.3 - 5.21 Patch
See all tickets marked for the 5.21.3 release
- Switched image encoding to a context-aware approach with a safe fallback, allowing per-request encoder selection without changing the public API. #3844 @CloudlessMoon
5.21.2 - 5.21 Patch
See all tickets marked for the 5.21.2 release
- Do not ignore blendMode in SDImageTintTransformer #3831 @bdaz
- Fix the retryFailed option does not get modified by optionsProcessor #3829 @AirBlack
- Avoid self if be nil in block. #3826 @hawk0620
5.21.1 - Xcode 26 Compatible
See all tickets marked for the 5.21.1 release
- [Xcode 26] - Fix watchOS build error with UITraitCollection in the new SDK #3819
- Reduce memory peak when playing the GIF on SDAnimatedImageView #3813
5.21.0 - HDR Support
See all tickets marked for the 5.21.0 release
- Supports HDR decoding on Apple ImageIO coder (avif/heic/jpeg-xl, etc) #3778
-
- Note: Defaults to always use SDR, if you want HDR decoding, pass
SDWebImageContextDecodeToHDR: @(YES)
to context option. Pay attention even decoded CGImage is HDR ready, full rendering require display hardware support and per-image-view level control, it's recommended to read WWDC23 and use proper API to check for current display headroom to turn on HDR.
- Note: Defaults to always use SDR, if you want HDR decoding, pass
-
- Note: Apple ImageIO coder requires macOS 14/iOS 17+ for HDR decoding. For lower firmware you can consider AVIF/HEIF/JPEG-XL third-party codec
- Supports HDR encoding on Apple ImageIO coder #3799
-
- Note: Defaults to always use SDR, if you want HDR dencoding, pass
SDImageCoderEncodeToHDR: @(SDImageHDRTypeISOHDR)
for ISO HDR encoding. AndSDImageHDRTypeISOGainMap
for ISO Gain Map based HDR encoding (like JPEG for compatibility)
- Note: Defaults to always use SDR, if you want HDR dencoding, pass
-
- Note: Apple ImageIO coder requires macOS 15/iOS 18+ for HDR encoding. For lower firmware you can consider AVIF/HEIF/JPEG-XL third-party codec
- Allows user to directly customize preserveImageMetadata for our built-in transformers #3796
- Change the default callback queue policy to SafeAsyncMainThread, don't need main queue check at all #3797
-
- Note: This should make
sd_setImageWithURL
related UI API to work on case likeUICollectionViewDiffableDataSource
, which is running on main thread but not main queue.
- Note: This should make
- fix: sd_colorAtPoint/sd_colorsWithRect should early return when pixel format is not supported #3798
-
- Note: In history this may return a wrong color for RGB10/RGB16 pixel format. Now it just return nil, which may supported in the future.
5.20.1 - 5.20 Patch
See all tickets marked for the 5.20.1 release
- (macOS) Fix SDAnimatedImagePlayer leaking SDDisplayLink instances and leaving CVDisplayLink threads running #3776 #3779
- Fix the issue that previous optimization for special case (multiple same URL in prefetcher list) breaks the queryCacheType option sematic #3788
5.20.0 - Animation Transformer with tint color
See all tickets marked for the 5.20.0 release
- SDAniamtedImageView now supports to apply transformer (post-processing of frame), with the SDAnimatedImage. #3761
- You can apply transform like blurs, tint, CIFilters on animation frames.
-
- Detailed behavior: Transform is applied just after the frame been decoded, on the global decode queue.
-
- Detailed behavior: The transformed image replace the original decoded one, and re-use the design of
maxBufferSize
on SDAnimatedImageView
- Detailed behavior: The transformed image replace the original decoded one, and re-use the design of
- Supports LRU eviction on disk cache, change the default expire type to accessDate instead of modificationDate #3759
-
- In previous versions, the disk cache does not actually supports LRU (The NSFileManager read API does not update the
accessDate
), this version fix this issue and change the default behavior to useaccessDate
- In previous versions, the disk cache does not actually supports LRU (The NSFileManager read API does not update the
- Add blend mode to UIImage+Transform tint color API, default blend mode changed to sourceIn #3749
-
- In previous versions, the blend mode use
sourceAtop
and does not match UIKit'stintColor
naming. We now usesourceIn
to match it.
- In previous versions, the blend mode use
-
- Due to this changes, the
SDWebImageTintTransformer
defaults to usesourceIn
blend mode as well. You can use transformer to tint SDAnimatedImageView as well
- Due to this changes, the
- Fix sd_imageFormat sometimes returns undefined on static image #3760
5.19.7 - 5.19 Patch
See all tickets marked for the 5.19.7 release
- Fix the thumbnail decoding on JPEG which contains EXIF orientation, use the new way to workaround JFIF bug #3743
- Fix the crash when some special urls cause the cache path return nil and crash #3740
- Fix the issue that some URL which has percent-encoding with \0 will cause nil cache path #3744
5.19.6 - Thumbnail performance
See all tickets marked for the 5.19.5 release
- Use the better way to detect lazy/non-lazy CGImage. Only do force decoding for lazy image (avoid thumbnail image been decoded twice) #3736
- Remove the unused code for iOS 10 polyfill #3735
5.19.5 - Swift 6 Compatible
See all tickets marked for the 5.19.5 release
- Fix our HEIC coder to encode timed image sequences instead of non-timed image gallery for HEIC encoding #3727
-
- If you have use case to encode static multi-frame HEIC image, use ImageIO directly. SDWebImage currenly always assume multi-frame image to be animated.
- Use the new macro from Swift compiler and SDK to mark the UIImage/UIImageView subclass matching what they designed to be #3731
-
- This solve the Xcode 16 Beta issue when trun on Swift 6 mode with strict concurrency.
- Try to re-enable the HEIC encoding test and visionOS xctest #3728
5.19.4 - 5.19 Patch
See all tickets marked for the 5.19.4 release
- Fix the issue that SDAnimatedImage breaks the vector on macOS #3724