{"id":49009136,"url":"https://github.com/LottieFiles/dotlottie-rs","last_synced_at":"2026-05-05T01:01:29.048Z","repository":{"id":221332227,"uuid":"694568050","full_name":"LottieFiles/dotlottie-rs","owner":"LottieFiles","description":"A universal, high-performance Lottie and dotLottie player built with Rust. Offers smooth rendering across platforms, low resource consumption, and extensive compatibility. Features FFI bindings for C/C++, Kotlin, Swift, and WASM for seamless integration in Android, iOS, and Web projects.","archived":false,"fork":false,"pushed_at":"2026-04-27T09:53:28.000Z","size":187319,"stargazers_count":244,"open_issues_count":20,"forks_count":19,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-04-27T10:25:19.906Z","etag":null,"topics":["animation","dotlottie","lottie","rust","thorvg","uniffi","wasm"],"latest_commit_sha":null,"homepage":"https://developers.lottiefiles.com/docs/dotlottie-player/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LottieFiles.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-09-21T09:00:30.000Z","updated_at":"2026-04-27T09:53:32.000Z","dependencies_parsed_at":"2026-03-09T18:03:51.934Z","dependency_job_id":"2e35bd1e-91d8-4c50-a8f9-c10401c90735","html_url":"https://github.com/LottieFiles/dotlottie-rs","commit_stats":null,"previous_names":["lottiefiles/dotlottie-rs"],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/LottieFiles/dotlottie-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LottieFiles%2Fdotlottie-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LottieFiles%2Fdotlottie-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LottieFiles%2Fdotlottie-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LottieFiles%2Fdotlottie-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LottieFiles","download_url":"https://codeload.github.com/LottieFiles/dotlottie-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LottieFiles%2Fdotlottie-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32631058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animation","dotlottie","lottie","rust","thorvg","uniffi","wasm"],"created_at":"2026-04-18T22:00:28.216Z","updated_at":"2026-05-05T01:01:29.012Z","avatar_url":"https://github.com/LottieFiles.png","language":"Rust","funding_links":[],"categories":["Libraries"],"sub_categories":["Creation Tools"],"readme":"# dotLottie Rust\n\n![CI](https://img.shields.io/github/v/release/LottieFiles/dotlottie-rs)\n![GitHub contributors](https://img.shields.io/github/contributors/LottieFiles/dotlottie-rs)\n![GitHub](https://img.shields.io/github/license/LottieFiles/dotlottie-rs)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/23125742/201124166-c2a0bc2a-018b-463b-b291-944fb767b5c2.png\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003edotLottie Rust\u003c/h1\u003e\n\n**dotlottie-rs** is the cross-platform [dotLottie](https://dotlottie.io/) runtime written in Rust. It is the engine powering all official dotLottie players — delivering the full dotLottie feature set (theming, state machines, multi-animation, and more) with guaranteed visual consistency across every platform.\n\nIt exposes a C API (via cbindgen) for native platforms and wasm-bindgen bindings for WebAssembly, serving as the core of the dotLottie players for [Web](https://github.com/LottieFiles/dotlottie-web), [Android](https://github.com/LottieFiles/dotlottie-android), [iOS](https://github.com/LottieFiles/dotlottie-ios), [Flutter](https://github.com/LottieFiles/dotlottie-flutter), and [React Native](https://github.com/LottieFiles/dotlottie-react-native).\n\n```mermaid\nflowchart TD\n  A[dotLottie-web] --\u003e WASM[WASM / wasm-bindgen]\n  B[dotLottie-ios] --\u003e CAPI[C API]\n  C[dotLottie-android] --\u003e CAPI\n  D[dotLottie-flutter] --\u003e CAPI\n  E[dotLottie-react-native] --\u003e CAPI\n\n  WASM --\u003e dotlottiers[dotlottie-rs]\n  CAPI --\u003e dotlottiers\n\n  dotlottiers --\u003e Thorvg[Thorvg\\Lottie renderer]\n```\n\n## What is dotLottie?\n\ndotLottie is an open-source file format that aggregates one or more Lottie files and their associated resources into a single file. They are ZIP archives compressed with the Deflate compression method and carry the file extension of \".lottie\".\n\n[Learn more about dotLottie](https://dotlottie.io/).\n\n## Features\n\n- **Cross-platform**: single Rust codebase targeting Android, iOS, Web, Flutter, React Native, and desktop\n- **Guaranteed visual consistency**: powered by the [ThorVG](https://github.com/thorvg/thorvg) renderer across all platforms\n- **Theming \u0026 slots**: runtime color, scalar, text, and vector slot overrides\n- **State machines**: declarative interactivity engine with guards, transitions, and actions\n- **Multi-animation**: playback control over multiple animations within a single `.lottie` file\n- **dotLottie format**: full support for the `.lottie` container (ZIP-based, manifest v1 \u0026 v2, embedded assets)\n- **C API**: cbindgen-generated header for native integration (Android NDK, iOS, desktop)\n- **WASM**: wasm-bindgen bindings for WebAssembly targets\n\n## Available Players\n\ndotlottie-rs is the runtime core used by all official dotLottie framework players:\n\n- [dotlottie-web](https://github.com/LottieFiles/dotlottie-web)\n- [dotlottie-android](https://github.com/LottieFiles/dotlottie-android)\n- [dotlottie-ios](https://github.com/LottieFiles/dotlottie-ios)\n- [dotlottie-flutter](https://github.com/LottieFiles/dotlottie-flutter)\n- [dotlottie-react-native](https://github.com/LottieFiles/dotlottie-react-native)\n\n## Repository contents\n\n- [Crates](#crates)\n- [Development](#development)\n- [License](#license)\n\n## Crates\n\n- [dotlottie-rs](./dotlottie-rs): The core library for dotLottie native players, including the C API (feature: `c_api`) and wasm-bindgen bindings (feature: `wasm-bindgen-api`)\n- [examples/c_api](./dotlottie-rs/examples/c_api/demo-player.c): Example usage of the native C API\n\n## Development\n\n### Cross-Platform Release Builds\n\nThe following instructions cover building release artifacts for Android, Apple, WASM, Linux, and native platforms using the Makefile-based build system. For Rust development, just use `cargo` as usual — no special setup is needed.\n\nYou will need GNU `make` installed. Note that Apple platform targets (iOS, macOS, tvOS, visionOS) require a Mac with Xcode. To ensure that your machine has all the necessary tools installed, run the following from the root of the repo:\n\n```bash\nmake setup\n```\n\nThis will configure all platforms. You can also setup individual platforms using:\n- `make android-setup` - Setup Android environment (requires Android NDK)\n- `make apple-setup` - Setup Apple environment (requires Xcode)\n- `make wasm-setup` - Setup WASM environment (installs wasm-pack and wasm32-unknown-unknown target)\n\n### Performing builds\n\nBuilds can be performed for the following groups of targets:\n\n- `android` - All Android architectures (ARM64, x86_64, x86, ARMv7)\n- `apple` - All Apple platforms (macOS, iOS, tvOS, visionOS, watchOS, macCatalyst)\n- `wasm` - WebAssembly (software renderer) via wasm-bindgen\n- `wasm-webgl` - WebAssembly with WebGL2 renderer via wasm-bindgen\n- `wasm-webgpu` - WebAssembly with WebGPU renderer via wasm-bindgen\n- `native` - Native library for current platform (C API via cbindgen)\n- `native-opengl` - Native library with OpenGL renderer\n- `native-webgpu` - Native library with WebGPU renderer\n- `linux` - Linux x86_64 and ARM64\n\nFor `android` and `apple`, builds will be performed for all supported architectures, whereas\nfor `wasm`, only a single target will be built. These names refer to Makefile targets that can be\nused to build them. For example, to build all `android` targets, execute the following:\n\n```bash\nmake android\n```\n\nYou can also build specific architectures:\n```bash\nmake android-aarch64          # Android ARM64 only\nmake apple-macos-arm64        # macOS ARM64 only\n```\n\nThe default target shows the help menu:\n```bash\nmake                          # Shows comprehensive help\n```\n\n### Native C-API\n\nThe C bindings can be generated by using the following command, which will place the include and library\nfiles in `release/native`:\n\n```bash\nmake native\n```\n\nOn Windows, use the Windows-specific targets (requires MSVC Build Tools):\n\n```bash\nmake windows-setup\nmake windows-x86_64\n```\n\nExamples for using the native interface can be found in the `examples` directory, which also contains a\n[README](./examples/README.md) with information on getting started.\n\n### Other useful targets\n\n- `test`: Run all tests with single-threaded execution\n- `clippy`: Run Rust linter with strict settings  \n- `clean`: Clean all build artifacts and Cargo cache\n- `list-platforms`: Show all supported platforms\n\nFor platform-specific cleanup:\n- `android-clean`: Clean Android artifacts\n- `apple-clean`: Clean Apple artifacts  \n- `wasm-clean`: Clean WASM artifacts\n- `native-clean`: Clean native artifacts\n\nMore information can be found by using the `help` target:\n\n```bash\nmake help\n```\n\n### Release Process\n\nManually execute the `Create Release PR` Github Action workflow to create a release PR. This will\ninclude all changes since the last release. This repo uses [changesets](https://github.com/changesets/changesets)\nto determine the new release version. The [knope](https://github.com/knope-dev/knope) tool can be installed locally\nand used to simply the creation of changeset files.\n\nThe release PR should be checked for correctness and then merged. Once that is done, the `Release`\nGithub Actions workflow will be started automatically to do the work of actually creating the new\nrelease and building \u0026 uploading the related release artifacts.\n\n### Relevant Tools\n\n- [For your dotLottie creation and modification needs](https://github.com/dotlottie/dotlottie-js)\n- [Tools for parsing Lottie animations](https://github.com/LottieFiles/relottie)\n\n### License\n\n[MIT](LICENSE) © [LottieFiles](https://www.lottiefiles.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLottieFiles%2Fdotlottie-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLottieFiles%2Fdotlottie-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLottieFiles%2Fdotlottie-rs/lists"}