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

@wisteenio/dovan

v0.1.0

Published

Use your Mac from your iPhone or iPad

Readme

Host distribution

Thin npm/npx launcher for the prebuilt macOS Rust host. Publish signed darwin-arm64 and darwin-x64 prebuilds with scripts/publish-host-npm.sh. Everyday development builds must not notarize or npm publish. Follow code organization and the host specification.

macOS Release Symbol Handling

1. Strip only unnecessary debug symbols

The macOS binary delivered to users does not need a symbol table or complete debug information. scripts/publish-host-npm.sh generates a dSYM, then strips the distributed executable before signing so nm does not publish Rust names. This reduces obvious inspection; it is not an anti-reverse-engineering guarantee.

Preserve every symbol required for execution, dynamic linking, ABI compatibility, plugins, or the runtime. Do not strip the file after it is signed.

2. Generate and retain dSYM files

Every official release must generate a dSYM that corresponds exactly to that build. The recommended Release debug information format is DWARF with dSYM File. Generate the dSYM before discarding the debugging information needed to produce it.

The dSYM need not be included in the normal user installation package, but it must be retained long-term as an internal Release Artifact. Stripping the distributed binary is not a reason to delete its dSYM.

3. Verify binary and dSYM correspondence

For every official release, verify that the distributed binary and retained dSYM belong to the same build by comparing their Mach-O and dSYM UUIDs:

dwarfdump --uuid <binary>
dwarfdump --uuid <path-to-dSYM>

The UUID must match for each architecture in the release binary. Retain the matching results with the internal Release Artifacts; version names alone are not sufficient to establish correspondence. A missing dSYM or UUID mismatch must block release until the correct matching artifacts are available.

Notarization timing

Notarization is an explicit near-release step, after the release artifact, symbols and signatures are finalized. Daily development builds, local tests and ordinary CI checks must not automatically submit artifacts to Apple.

Avoid repeated submissions: retain the artifact hash and submission ID, then query that submission's status and logs. A local wait timeout does not mean the upload failed. Reuse an accepted result for the unchanged artifact; submit a changed artifact only when it is again ready for release.

For an already accepted artifact, complete ticket stapling where supported and Gatekeeper verification without uploading it again. Acceptance is an automated distribution-security check, not App Store publication or functional acceptance. Credential-profile and artifact-verification rules live in the signing contract. Historical acceptance does not establish the status of a newly built artifact.