Make rememberAsyncImagePainter, AsyncImage, and SubcomposeAsyncImagerestartable and skippable. This improves performance by avoiding recomposition unless one of the composable's arguments changes.
Add an optional modelEqualityDelegate argument to rememberAsyncImagePainter, AsyncImage, and SubcomposeAsyncImage to control whether the model will trigger a recomposition.
Update ContentPainterModifier to implement Modifier.Node.
Fix: Lazily register component callbacks and the network observer on a background thread. This fixes slow initialization that would often occur on the main thread.
Fix: Avoid relaunching a new image request in rememberAsyncImagePainter, AsyncImage, and SubcomposeAsyncImage if ImageRequest.listener or ImageRequest.target change.
Fix: Don't observe the image request twice in AsyncImagePainter.
Update Kotlin to 1.9.22.
Update Compose to 1.6.1.
Update Okio to 3.8.0.
Update androidx.collection to 1.4.0.
Update androidx.lifecycle to 2.7.0.
[3.0.0-alpha04] - February 1, 2024
Breaking: Remove Lazy from OkHttpNetworkFetcherFactory and KtorNetworkFetcherFactory's public API.
Expose Call.Factory instead of OkHttpClient in OkHttpNetworkFetcherFactory.
Convert NetworkResponseBody to wrap a ByteString.
Downgrade Compose to 1.5.12.
[3.0.0-alpha03] - January 20, 2024
Breaking: coil-network has been renamed to coil-network-ktor. Additionally, there is a new coil-network-okhttp artifact that depends on OkHttp and doesn't require specifying a Ktor engine.
Depending on which artifact you import you can reference the Fetcher.Factory manually using KtorNetworkFetcherFactory or OkHttpNetworkFetcherFactory.
Breaking: coil-gif, coil-network, coil-svg, and coil-video's packages have been updated so all their classes are part of coil.gif, coil.network, coil.svg, and coil.video respectively. This helps avoid class name conflicts with other artifacts.
Breaking: ImageDecoderDecoder has been renamed to AnimatedImageDecoder.
New: coil-gif, coil-network, coil-svg, and coil-video's components are now automatically added to each ImageLoader's ComponentRegistry.
To be clear, unlike 3.0.0-alpha01you do not need to manually add NetworkFetcher.Factory() to your ComponentRegistry. Simply importing io.coil-kt.coil3:coil-network:[version] and a Ktor engine is enough to load network images.
It's safe to also add these components to ComponentRegistry manually. Any manually added components take precedence over components that are added automatically.
If preferred, this behaviour can be disabled using ImageLoader.Builder.serviceLoaderEnabled(false).
New: Support coil-svg on all platforms. It's backed by AndroidSVG on Android and SVGDOM on non-Android platforms.
Coil now uses Android's ImageDecoder API internally, which has performance benefits when decoding directly from a file, resource, or content URI.
New: Compose Multiplatform support. Coil is now a Kotlin Multiplatform library that supports Android, JVM, iOS, macOS, and Javascript.
Coil's Maven coordinates were updated to io.coil-kt.coil3 and its imports were updated to coil3. This allows Coil 3 to run side by side with Coil 2 without binary compatibility issues. For example, io.coil-kt:coil:[version] is now io.coil-kt.coil3:coil:[version].
The coil-base and coil-compose-base artifacts were renamed to coil-core and coil-compose-core respectively to align with the naming conventions used by Coroutines, Ktor, and AndroidX.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps io.coil-kt:coil-compose from 2.5.0 to 2.6.0.
Release notes
Sourced from io.coil-kt:coil-compose's releases.
Changelog
Sourced from io.coil-kt:coil-compose's changelog.
Commits
28338a8
Prepare 2.6.0.9a108e9
Update baseline profile.ade8ed1
Add 2.6.0 changes.5460933
Add more params to DefaultModelEqualityDelegate. (#2140)6e1c390
Update Okio to 3.8.0.ff7f412
Deploy snapshots for 2.x.9832a9e
Migrate ContentPainterModifier to implement Modifier.Node. (#2117)5e12570
Update Compose to 1.6.1.de0bf3a
Upstream Compose recomposition improvements to 2.x. (#2108)52f3d61
Upstream #2104 to 2.x. (#2110)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show