github facebook/fresco v3.8.0

4 hours ago

Highlights

  • Adds an encoded-image request transformation hook and makes disk-cache write producer creation overridable (58ac45f)
  • Adds EncodedImageDimensionsDecoder and a registry for custom image-dimension decoding (b0742d6)
  • Adds MultiPostprocessor for applying multiple postprocessors in sequence (ddc1db1)
  • Adds EmptyImageSource.isExpectedEmpty so intentional empty Vito sources can retain their placeholders without reporting failures (0b0bc9d, d838034)
  • Lets custom producer-sequence factories handle decoded HTTP(S) requests and encoded network prefetches (793dabc, 6bcf6e3)
  • Adds framework-neutral cache-key generation with UnifiedCacheKeyGenerator (f650f5d)
  • Adds request creation from complete SingleImageSource instances and request-based cache eviction that honors custom cache keys (7bf53df, 8366d27)
  • Adds opt-in streaming image decoding with byte- and time-based partial-result throttling (9e2b459, f2d88bb)
  • Adds an option to keep the progress indicator visible while intermediate Vito images are displayed (624a167)
  • Exposes the configured memory-chunk pool through PoolFactory.getMemoryChunkPool (06140ac)
  • Adds PrefetchData and prefetch telemetry plumbing (9366996)
  • Reduces final-image latency by letting completed decode results bypass the progressive-decode interval (02414e4, e0ecb75)
  • Supports building the OkHttp backend against both OkHttp 3.x and 4.x (288a34c, bc35d33)
  • Fixes an Android 16 null dereference when creating the default Vito drawable factory (7b7b29a)
  • Hardens native WebP decoding against invalid dimensions, oversized canvases, negative lengths, and unsafe byte-array ranges (a160b3b, 1566dd8)
  • Fixes recycled-bitmap rendering in Vito (41905be)
  • Fixes races and invalid-dimension handling in on-demand animations (762ed58, b57c874)
  • Fixes concurrency-related null dereferences in request listeners and Vito image tracking (2baa5d4, c6620d7)
  • Fixes source builds with JDK 25 and aligns the OSS Gradle build with Kotlin 2.2 (288cdbb, c90d7f0, 0209f24, 15df97e)

Breaking

Method signature changes:

  • Changes ProducerFactory.newDiskCacheWriteProducer to return Producer<EncodedImage> instead of DiskCacheWriteProducer (58ac45f)

Removed classes and options:

  • Removes EfficientPlatformDecoder, EfficientRawBitmapDecoder, DecodeValidationUtils, and the PlatformDecoderOptions.useEfficientDecoder and useBitmapFactoryDecoder options (d7ed19a, 5bc48b6, d4f7393)

Kotlin migration changes:

  • Makes MatrixDrawable and RoundedBitmapDrawable final and makes several previously overridable FadeDrawable methods final (f60d58d, dc82282, 9926a96)
  • Makes StreamUtil and UriUtil singletons; their static operations remain available, but construction and subclassing are no longer supported (e708aed, 5f2b04b)
  • Makes NativeJpegTranscoderFactory final and NativeJpegTranscoderSoLoader a singleton (f69ccbc)
  • Changes selected Kotlin getter calls on FrameScheduler, GifFrame, and WebPFrame to property access (d30727c, 0f7acde, 0266179)

Behavioral changes:

  • Cache-only decode misses now report errors; cancelDecodeOnCacheMiss no longer changes this behavior (0e7644e, 762ed58)

Full Changelog: v3.7.0...v3.8.0

Don't miss a new fresco release

NewReleases is sending notifications on new releases.