finds.dev← search

// the find

Brooooooklyn/canvas

★ 2,284 · Rust · MIT · updated Jul 2026

High performance Skia canvas implementation. Zero system dependencies.

A Node.js native addon that wraps Google's Skia rendering engine via napi-rs, giving you a drop-in Canvas 2D API with no system dependencies. It ships prebuilt binaries for every major platform, so you install it and it works — no libcairo, no ImageMagick, no Pango. The target audience is Node.js backends that need server-side image generation: social card generators, chart renderers, PDF thumbnails.

The zero-system-dependency claim actually holds — prebuilt binaries bundle everything, which is a real win in Docker and Lambda where you don't control the system image. Performance is measurably better than node-canvas on the benchmarks shown (~15ms vs ~17ms for the same gradient workload). The Path2D extensions (boolean ops, fill-type conversion, path simplification) go well beyond the browser spec and are genuinely useful for SVG tooling. Lottie animation rendering via Skottie is a feature you won't find in any competing canvas library.

Lambda support requires a third-party layer (Canvas-Lambda-Layer) maintained by someone else — if that repo goes stale, you're on your own. The glibc 2.18 minimum will quietly bite you on older Linux distributions or certain Alpine-based images, and the error won't be obvious. Building from source requires pulling Skia as a submodule and the build process is genuinely painful — the README tells you to sudo install clang as a one-liner, which is not how you want to document a production dependency. Test coverage is solid for rendering correctness but there are no documented compatibility guarantees against which browser Canvas spec version, so edge-case behavior differences can surface unexpectedly.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →