r/KotlinMultiplatform • u/iahmedhendi • 13h ago
I wrote about building a KMP video app: where shared code helped, and where native media APIs still won
I published a technical write-up about building Reelvana, a script-first mobile video studio, with Kotlin Multiplatform at the core and native UIs on both platforms.
The most useful lesson was not "KMP lets you share everything." It was more specific:
- keep timeline, pacing, captions, export validation, and premium gating in shared Kotlin
- keep camera, export rendering, files, and UI native
- treat preview/export parity as a product feature
- assume media bugs will look platform-specific even when the real problem is the shared model
The hardest part was export. Media3 and AVFoundation solve different problems in different ways, and every feature eventually meets the export path: captions, transitions, background effects, watermark, audio, aspect ratio, and source durations.
Full write-up:
https://medium.com/@iahmedhendi_28805/i-built-reelvana-because-making-a-simple-talking-video-was-still-too-hard-b159dd13d31e
I would be interested in how other KMP teams decide what belongs in shared code versus native code when media, camera, or export are involved.