npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@microsoft/dynwinrt

v0.1.0-preview.6

Published

Dynamic WinRT bindings for Node.js — call any Windows Runtime API without native code generation

Downloads

1,001

Readme

@microsoft/dynwinrt

Call any Windows Runtime (WinRT) API from JavaScript — without writing a native addon.

dynwinrt is a runtime library that lets your Node.js or Electron code call modern Windows APIs (WinAppSDK, Windows AI, notifications, file pickers, sensors, storage, networking, …) directly from JavaScript / TypeScript, with full IntelliSense, no MSBuild step, no C++ or C# project, and no per-Windows-version recompile.

Why use this?

If you've ever tried to call a Windows API from an Electron or Node app, you've probably run into one of these:

  • Writing a C++ node-addon-api addon. Needs node-gyp, MSVC, Python, the right Windows SDK, and a CI matrix per Electron version.
  • Writing a C# addon via node-api-dotnet. Needs the .NET SDK, a separate csproj build step, and a manually-maintained C# wrapper for every API surface you want to expose.
  • Waiting for a typed projection. Some Windows APIs ship .winmd metadata months before any JavaScript-friendly projection appears in a published package.

dynwinrt removes all of that. It reads the .winmd metadata that ships with the Windows SDK (and WinAppSDK NuGet packages) at runtime, resolves the COM vtables, and invokes WinRT methods dynamically. There is no native build step in your Electron project. There is no version pinning — the same generated bindings work across Windows SDK / WinAppSDK revisions as long as the metadata is forward-compatible. You just install @microsoft/dynwinrt from npm and call the API.

The trade-off: dynwinrt is designed for data-style WinRT APIs (AI, storage, notifications, networking, globalization, …). It is not intended for XAML / WinUI hosting — those scenarios need composable-class aggregation and a UI thread the library doesn't model. For everything else, this is the easiest path from JavaScript to native Windows.

Quick start

@microsoft/dynwinrt is the runtime. You generate the typed bindings ahead of time with @microsoft/dynwinrt-codegen, then import them at runtime:

npm install @microsoft/dynwinrt
npm install -D @microsoft/dynwinrt-codegen

# Generate a binding for Windows.Foundation.Uri
npx dynwinrt-codegen generate \
  --namespace Windows.Foundation \
  --class-name Uri \
  --output ./generated
const { roInitialize } = require('@microsoft/dynwinrt');
const { Uri } = require('./generated');

roInitialize(1);                                      // MTA
const uri = Uri.createUri('https://example.com/path?q=1');
console.log(uri.host);                                // "example.com"
console.log(uri.port);                                // 443

Platform support

  • Windows 10 / 11 — x64 and arm64 native binaries shipped via napi-rs prebuilds
  • Node.js ≥ 16 (Electron, plain Node, vscode extensions, …)

Links

License

MIT