NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3915 most downloaded on npm
Canvas for Node.js with skia backend
Last release 9 days ago
09 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
120 releases · first in 2021
One column per quarter.
chore: upgrade llvm by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/789
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.48...v0.1.49
fix: memory leak in Canvas encode by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/786
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.47...v0.1.48
fix: DOMMatrix#transformPoint by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/782
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.46...v0.1.47
chore(deps): update dependency eslint-plugin-sonarjs to ^0.24.0 by @renovate in https://github.com/Brooooooklyn/canvas/pull/777
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.45...v0.1.46
chore(deps): update dependency eslint-plugin-sonarjs to ^0.21.0 by @renovate in https://github.com/Brooooooklyn/canvas/pull/712
drawPicture in some blending modes such as destination-in by @nieyuyao in https://github.com/Brooooooklyn/canvas/pull/755loadImage function to README.md by @jrc03c in https://github.com/Brooooooklyn/canvas/pull/732Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.44...v0.1.45
chore(deps): update dependency lint-staged to v14 by @renovate in https://github.com/Brooooooklyn/canvas/pull/710
loadFontsFromDir() are no longer case-sensitive by @yisibl in https://github.com/Brooooooklyn/canvas/pull/707Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.43...v0.1.44
loadFontsFromDir() are no longer case-sensitive (9342e33)chore: upgrade rust toolchain by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/700
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.42...v0.1.43
chore(deps): lock file maintenance by @renovate in https://github.com/Brooooooklyn/canvas/pull/677
ctx.canvas property on svg context by @skdhg in https://github.com/Brooooooklyn/canvas/pull/697Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.41...v0.1.42
docs: add note about AWS Lambda layer by @ShivamJoker in https://github.com/Brooooooklyn/canvas/pull/661
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.40...v0.1.41
chore(deps): update yarn to v3.5.0 by @renovate in https://github.com/Brooooooklyn/canvas/pull/650
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.39...v0.1.40
fix: set empty src to Image by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/649
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.38...v0.1.39
chore(deps): lock file maintenance by @renovate in https://github.com/Brooooooklyn/canvas/pull/643
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.37...v0.1.38
fix: reject if image is not supported by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/642
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.36...v0.1.37
ci: pin apple emoji version by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/640
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.35...v0.1.36
chore(deps): update dependency canvaskit-wasm to ^0.38.0 by @renovate in https://github.com/Brooooooklyn/canvas/pull/607
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.34...v0.1.35
chore(deps): update dependency eslint-plugin-sonarjs to ^0.18.0 by @renovate in https://github.com/Brooooooklyn/canvas/pull/605
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.33...v0.1.34
fix: maxWidth overflow paint_x position should power the scale ratio by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/603
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.32...v0.1.33
feat: chrome/m110 by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/599
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.31...v0.1.32
chore(deps): update yarn to v3.2.4 by @renovate in https://github.com/Brooooooklyn/canvas/pull/566
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.30...v0.1.31
refactor: use libavif rather than ravif by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/549
reference tags by @SuperchupuDev in https://github.com/Brooooooklyn/canvas/pull/563Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.29...v0.1.30
chore(deps): update dependency canvaskit-wasm to ^0.36.0 by @renovate in https://github.com/Brooooooklyn/canvas/pull/533
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.28...v0.1.29
fix: adjust Node.js external memory while creating Canvas by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/532
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.27...v0.1.28
chore(deps): update dependency eslint-plugin-sonarjs to ^0.15.0 by @renovate in https://github.com/Brooooooklyn/canvas/pull/523
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.26...v0.1.27
chore(deps): update dependency canvaskit-wasm to ^0.35.0 by @renovate in https://github.com/Brooooooklyn/canvas/pull/494
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.25...v0.1.26
fix: skia async prop deprecated in future release by @Jeve-Stobs in https://github.com/Brooooooklyn/canvas/pull/484
load-image.js in package.json by @BrooooooklynFull Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.23...v0.1.25
fix: skia async prop deprecated in future release by @Jeve-Stobs in https://github.com/Brooooooklyn/canvas/pull/484
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.23...v0.1.24
You can now use `@napi-rs/canvas` in older linux distribution, like debian:stretch
You can now use @napi-rs/canvas in older linux distribution, like debian:stretch
libc++ on x86_64-unknown-linux-gnu by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/482Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.22...v0.1.23
Skia now compiled with C++ 17 instread of C++ 11 https://skia.org/docs/user/build/#supported-and-preferred-compilers
Skia now compiled with C++ 17 instread of C++ 11 https://skia.org/docs/user/build/#supported-and-preferred-compilers
For docker users, you may need to switch to buster base image. For example, Node.js 12 and 14 docker images: node:12-buster and node:14-buster. For Node.js 16+ images, there are no effects for you.
TextMetrics when text is ending with spaces by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/468Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.21...v0.1.22
fix: BlendMode::Source should be copy instead of source by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/425
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.20...v0.1.21
Fix the issue of arc to + bezier to + quad to at empty path case
### Bug Fixes - text align and font fallback
feat: upgrade skia to chrome/m98 by @Brooooooklyn in https://github.com/Brooooooklyn/canvas/pull/395
Full Changelog: https://github.com/Brooooooklyn/canvas/compare/v0.1.17...v0.1.18
Nothing published for this version
vercel/nft and webpack compatible issue (f2e23f5) @Brooooooklyn
Now generating avif images is 10x+ faster.
## 0.1.13 (2021-10-20) ### Bug Fixes - text align position (435e102) #### Center !image #### End !image #### Left !image #### Right !image #### Start
support avif format output (f35b6ff) @Brooooooklyn
support colorSpace: 'display-p3'
image_filter to Image SamplingOptions conversion
<p> <img src="https://user-images.githubusercontent.com/3468483/134940852-7e222e85-de30-4fa7-b09a-e6a11ecf7b63.png"> <img src="https://user-images.githubusercontent.com/3468483/134940029-27c800cd-bdb4-4602-9de3-94fe67cc1968.png" /> </p>
<p> <img src="https://user-images.githubusercontent.com/3468483/134941274-d57c14b7-dd30-4db6-9d61-795592098979.png" /> <img src="https://user-images.githubusercontent.com/3468483/134940100-acce5769-ee29-470f-8df0-430d5e51166c.png"> </p>
<p> <img src="https://user-images.githubusercontent.com/3468483/134940852-7e222e85-de30-4fa7-b09a-e6a11ecf7b63.png"> <img src="https://user-images.githubusercontent.com/3468483/134941478-197e986e-9d42-47d8-b363-d0b07aae32d2.png"> </p>
<p> <img src="https://user-images.githubusercontent.com/3468483/134941622-1facaf65-24df-4700-aaf1-440e5d190b71.png"> <img src="https://user-images.githubusercontent.com/3468483/134941666-1bd149ba-8bf9-4f04-a47c-5090aeb719a0.png"> </p>
<p> <img src="https://user-images.githubusercontent.com/3468483/134940852-7e222e85-de30-4fa7-b09a-e6a11ecf7b63.png"> <img src="https://user-images.githubusercontent.com/3468483/134941784-84b7bee3-8567-4f2a-bb39-dbb979180364.png"> </p>
<p> <img src="https://user-images.githubusercontent.com/3468483/134940852-7e222e85-de30-4fa7-b09a-e6a11ecf7b63.png"> <img src="https://user-images.githubusercontent.com/3468483/134941874-dc943248-591b-4611-a988-cc676cb9e827.png"> </p>
<p> <img src="https://user-images.githubusercontent.com/3468483/134942024-8967c64e-f7d6-4987-9b0e-e2a3adea2233.png"> <img src="https://user-images.githubusercontent.com/3468483/134941966-5d7ec24e-0ab7-4624-9a8f-11cec2aa1c3d.png"> </p>
<p> <img src="https://user-images.githubusercontent.com/3468483/134942105-3d6b5f44-1b52-4e1e-8fef-bd9c7612d110.png"> <img src="https://user-images.githubusercontent.com/3468483/134942263-76f79efe-1f33-4e80-81fa-2a885b83aa6d.png"> </p>
<p> <img src="https://user-images.githubusercontent.com/3468483/134942424-52441a90-df75-4d62-81ce-214b504f9db5.png"> <img src="https://user-images.githubusercontent.com/3468483/134942369-d93d1e0f-26e9-45f7-a5f7-e214dc2d7332.png"> </p>
<p> <img src="https://user-images.githubusercontent.com/3468483/134942513-af5975b0-3b10-4aae-9cd7-f6f240b7cdd5.png"> <img src="https://user-images.githubusercontent.com/3468483/134942583-164295fb-9e9d-45a4-8765-fd0cdd183754.png"> </p>
aarch64-apple-darwin (macOS m1 chips) build [skip skia]
build: rollback CPU target for x86 platform https://github.com/Brooooooklyn/canvas/pull/359/commits/cc369b835fc6b5ad0668f35ffef253404bf5e709
deps: update rust crate cssparser to 0.29
pass the fabric.js visual tests
default value of FilterQuality in SamplingOptions should be high
## 0.1.4 (2021-08-11) ### Features - scale svg image if need
icudtl.dat download logic in publish job
Windows icudtl.data version and path
use viewbox as svg_container_size if width & height is empty
canvas.png() to canvas.encode('png')
support toDataURL and toDataURLAsync on canvas element
support maxWidth in fillText and strokeText
support maxWidth in fillText and strokeText (ccf33f3)
missing registerFromPath implementation
upgrade skia to chrome/m92 latest
### Features - support conic gradient (850b6ee) - support webp output
feat: support svg source on Image #299
windows setAssetFontManager crash
path: wrong Stroke type cast and miterLimit default value
parse error for single font size rules
### Bug Fixes - wrong package name in index.js
compat with Node.js readonly error messages
Your coding agent can read these notes before it upgrades. Set up the MCP server →