I'm failing to load this image in Image using Coil in Jetpack Compose
Coil doesn't support SVG by default.
According to documentation, you need to:
Add following dependency:
implementation("io.coil-kt:coil-svg:$coil_version")
Set SvgDecoder as decoder:
Coil 2.0.0 version:
AsyncImage(
    model = ImageRequest.Builder(LocalContext.current)
        .data(svgImageUrl)
        .decoderFactory(SvgDecoder.Factory())
        .build(),
    contentDescription = null
)
Coil 1.4.0 version:
Image(
    rememberImagePainter(
        data = svgImageUrl,
        builder = {
            decoder(SvgDecoder(LocalContext.current))
        }
    ),
    contentDescription = null
)
p.s. note that if you set the decoder this way, Coil will not be able to work with non-SVG images in this painter, so if you want some general solution, you should check the url extension and add the decoder accordingly.
I was working on Jetpack Compose app and the urls I received from a remote API contained both .png/jpeg and .svg file extensions.
I added dependencies for both Coil Compose and SVG flavors for Coil Version 2.0.0 which is the latest version as of January 2023.
// Coil
implementation("io.coil-kt:coil-compose:2.2.2")
implementation("io.coil-kt:coil-svg:2.2.2")
I then chained decoderFactory(SvgDecoder.Factory()) to Image.Request builder.
val painter = rememberAsyncImagePainter(
                model = ImageRequest.Builder(context = LocalContext.current)
                    .data(urlPng or urlSvg)
                    .decoderFactory(SvgDecoder.Factory())
                    .error(R.drawable.empty_flag)
                    .placeholder(R.drawable.empty_logo)
                    .build()
            )
            Image(painter = painter, contentDescription = null)
            
The updated .components { add(SvgDecoder.Factory())} call mentioned by @jendress was not resolved in my case and so I went with decoderFactory().
Both urls with .png/.jpeg and .svg worked well and rendered the correct image without errors.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With