cashapp / redwood

Multiplatform reactive UI for Android, iOS, and web using Kotlin and Jetpack Compose
https://cashapp.github.io/redwood/0.x/docs/
Apache License 2.0
1.63k stars 70 forks source link

Track and validate public API #1044

Open JakeWharton opened 1 year ago

JakeWharton commented 1 year ago

Unfortunately there's no multiplatform API compatibility checker. The Kotlin one is JVM only, and our API surface has many platform-specific things for platforms other than the JVM.

A while ago I quickly hacked Metalava to generate files for every source set: https://github.com/cashapp/redwood/compare/trunk...jw/metalava/2022-10-20.

When we're ready to start doing this (which is not right now), we should modernize that code, integrate it into the build plugin, and start tracking the API surface.

JakeWharton commented 1 year ago

We should enable this automatically for any module whose build configures publishing().

JakeWharton commented 10 months ago

Was dragging my feet on doing this. Procrastination always pays off, kids!

https://blog.jetbrains.com/kotlin/2023/11/kotlin-multiplatform-development-roadmap-for-2024/

Provide a tool that ensures that your multiplatform library public API hasn’t changed in an incompatible way.

JakeWharton commented 6 months ago

We have both JVM and klib ABI tracking but no validation (yet).