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 🙏

© 2025 – Pkg Stats / Ryan Hefner

stage1

v0.10.0

Published

High-performance JavaScript micro framework

Downloads

651

Readme

CI status Coverage % NPM version Licence

Minified size Dependency count

stage1

High-performance JavaScript micro framework.

Warning: This is alpha software. Test thoroughly before using in production. Please report any bugs you find!

Originally a fork of the excellent https://github.com/Freak613/stage0 project.

TODO

  • Decide whether to keep multiple implementations
    • Browser "live" compile, browser runtime mode
    • Bun default precompiled mode
    • Bun "fast" precompiled mode (use this as the default implementation and remove "normal" precompiled mode?)
      • Downside is the API is different to the other modes (collect function return type)
  • Keep only the most used functionality in stage1 and move less used but still useful functionality to stage2
    • Should the reactive store be in stage1 or stage2?
    • Should less used DOM utilities be moved to stage2?
      • prepend
      • insert
      • replace
      • text?
    • How much focus should be given to stage1 used as a prebuilt/CDN browser/live package vs a build-time library?
      • Maybe we can actually include more functionality when used as a lib but intentionally reduce what's included in the prebuilt browser/live package.
  • Add documentation about:
    • Security:
    • New DOM utility functions
      • fragment
      • text
      • create
      • clone
      • append
      • prepend
      • insert
      • replace
      • onRemove
    • New reactive store feature
    • Differences from the original stage0 project:
      • There are now 3 runtime modes:
        • New precompiled runtime mode and a fast variant for ultimate performance. Compiles templates at build-time via a bun macro that minifies templates, generates metadata, and then includes minimal runtime code in your JS bundle. Currently only works with Bun.build.
          • The fast mode is a variant of the precompiled mode that uses a different API and is further optimized for performance.
        • The regular mode is still available which generates metadata when your JS is run in the browser. Regular mode can be used with or without a build process.
      • Ref nodes are now marked with @ rather than #
      • h is now function h(template: string): S1Node e.g., h('<p>@key<p>')
      • html is available to use as a string template literal tag function e.g., html`<p>@key<p>` (regular mode only)
      • view.collect is now a collect function that needs to be imported separately
      • Extra DOM utils
      • New reactive store factory can be imported from stage1/store
      • Improved TypeScript support
      • Reduced size and improved load and runtime performance
      • Import paths:
        • Other than reconcilers and the store, everything is a named export from stage1
        • Reconcilers all export a reconcile function
        • /keyed --> /reconcile/keyed
        • /reconcile --> /reconcile/non-keyed
        • /reuse-nodes --> /reconcile/reuse-nodes
    • Ref names must be lowercase because some browsers normalize element attribute names when rendering HTML
      • Note: No longer the case in "fast" mode (different API).
    • Comments may be used as refs
  • Add API and usage documentation
    • The regular mode h() function does not support skipping minification in whitespace sensitive HTML blocks like <pre> and <code> because it would be too slow. The precompiled mode compile() macro does however. Same for the other compile options.
  • Add more tests
  • Add examples
  • Set up benchmarking + compare to stage0 and other JS frameworks
  • Submit to https://github.com/krausest/js-framework-benchmark

Browser support

Note: Internet Explorer is not supported.

Minimum browser version required:

  • Chrome 26
  • Edge 13
  • Firefox 22
  • Safari 8
  • Opera 15

If using the browser runtime mode or synthetic click events:

  • Chrome 38
  • Edge 13
  • Firefox 36
  • Safari 9
  • Opera 25

Some optional features require a higher browser version:

SSR (server-side rendering) is not supported and is not the intended use of this library.

Build environment JS runtime support

The default precompiled mode runtime requires bun version 1.0.20 or above.

The regular mode browser bundle does not have any specific build requirements.

Bugs

Please report any bugs you encounter on the GitHub issue tracker.

Changelog

See releases on GitHub.

License

MIT license. See LICENSE.


© 2025 Max Milton