#ffi #node #nodejs #napi #n-api

sys nodejs-sys

Native bindings to the nodejs’ n-api

12 breaking releases

0.13.0 Mar 27, 2021
0.11.0 Oct 29, 2020
0.4.1 Jul 11, 2020
0.2.0 Sep 5, 2019
0.1.1 May 6, 2019

#7 in #n-api

Download history 573/week @ 2022-06-06 114/week @ 2022-06-13 63/week @ 2022-06-20 159/week @ 2022-06-27 253/week @ 2022-07-04 157/week @ 2022-07-11 293/week @ 2022-07-18 83/week @ 2022-07-25 138/week @ 2022-08-01 50/week @ 2022-08-08 30/week @ 2022-08-15 252/week @ 2022-08-22 21/week @ 2022-08-29 37/week @ 2022-09-05 258/week @ 2022-09-12 109/week @ 2022-09-19

466 downloads per month
Used in neon-runtime

MIT license

55 lines

Rust build crates.io badge docs.rs badge


Bindings for NodeJS' N-API.


This crate needs llvm at build-time, since it generates bindings at build-time (by using bindgen).

For Debian/Ubuntu that's a simple apt install llvm libclang-dev.


Different API versions may be selected via feature-flag. See the N-API Version Matrix for details.

  • napi_v5 supported by all actively maintained NodeJS releases
  • napi_v6 supported by all actively maintained NodeJS releases
  • napi_v7 supported by all actively maintained NodeJS releases
  • napi_v8 requires at least 15.12.0, this is the default (if no flag is given)
  • the experimental N-API features may be enabled via feature flag experimental (off by default)


Not all NodeJS Versions change the N-API, so nodejs-sys gets an update only if the relevant headers have been changed between node versions.

See the (autogenerated) changelog for links to detailed upstream commits.


This crate is very low-level. See neon, they provide N-API Support.

But of course you may also use this crate directly, LogRocket has a nice blog post: Rust and Node.js: A match made in heaven.

No runtime deps

~30K SLoC