Hi HN,
For the past few months we’ve been building dotlottie-rs, a new Lottie and dotLottie player that aims to run everywhere with smooth, high frame rate rendering and guarantee visual and feature support consistency across a large number of platforms and device types. It is lightweight, has low resource requirements and is performant.
It is MIT-licensed and is available at: https://github.com/LottieFiles/dotlottie-rs
The player is written in Rust and uses a minimal number of external dependencies. We utilize uniffi-rs to generate FFI bindings for Kotlin, Swift, and WASM, which are then used in our platform native distributions for Android, iOS and Web while maintaining a consistent API and experience across them. We also provide distributions for React and Vue to make it easy to adopt in many existing web projects. The player is also ideal for use in backend systems and pipelines for high performance server-side rendering of Lottie/dotLottie, and can be used easily in NodeJS projects.
The player is named dotlottie-rs because, apart from the first class Lottie support, we aim to have first class support for dotLottie (https://www.dotlottie.io), a superset of Lottie we developed that builds on Lottie to add enhanced features like multi-animation support, improved resource bundling, theming, state machines and interactivity (latter two are currently in development).
Under the hood, the player uses the open-source, lightweight, high performance ThorVG library (https://www.thorvg.org/) for vector graphics and Lottie rendering, supporting software, OpenGL, and WebGPU (currently in beta) rasterization backends. We are working towards landing complete support of the Lottie format spec (https://lottie.github.io/) as soon as possible.
We are starting to test and deploy it across our platform and hope it helps achieve similar improvements in performance and support as we are seeing!
There’s a few demos:
Rust project: https://github.com/LottieFiles/dotlottie-rs/tree/main/demo-p...
Web: https://github.com/LottieFiles/dotlottie-web?tab=readme-ov-f...
Would love to hear your thoughts and feedback :)
To add a note, At the core of dotLottie is an super lightweight Lottie rendering engine(https://github.com/thorvg/thorvg). It is small enough (300kb) to run on low-spec devices like ESP, MPU, and MCU (it's proven within LVGL https://lvgl.io/ framework), and we can expect the hardware acceleration features for high-performance devices, including nested multi-threading task scheduler, SIMD, OpenGL, and WebGPU (though some of them are under the beta dev but aggresively working on). It has proven stable to be used in practical applications (even it's in Godot game engine) across various devices and also offers a web player through WebAssembly. We can check the ThorVG-based Lottie web player can be completed in less than 500KB (You can directly test Lottie animations at www.thorvg.org/viewer). This ensures the scalability of the dotLottie player from low-spec device environments to high-spec web environments & apps.