top of page

( SPEAKER )
Justin Brooks
Engineering at Chick-fil-A
( SESSION )
Shrinking Vector Graphics
R8 transforms your Kotlin into optimized bytecode through an intermediate representation — but what if the same idea were applied to vector artwork?
vgo is an open-source tool that parses SVGs, Vector Drawables, and Jetpack Compose ImageVectors into a shared IR, optimizes them with format-agnostic transformations, and writes the result into the format of your choice.
In this talk, we'll look at how vector path data works under the hood and its common opportunities for optimization: replacing curves with simpler commands, collapsing transforms into path data, trimming redundant precision, and merging paths. We'll explore how a format-agnostic IR makes all of this possible without duplicating optimization logic for each format — the same insight that makes R8 and LLVM so powerful. You'll walk away understanding how to shrink your vector assets, speed up their rendering, and integrate optimization directly into your Gradle build.
Takeaways:
- How vector path commands work and where size and rendering savings hide
- Why an intermediate representation enables format-agnostic optimization (and conversion for free)
- The parallel between compiler IRs (R8, LLVM) and vector graphic optimization
- How to integrate vgo into your Android build with the Gradle plugin
bottom of page


