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

create-tsreact

v0.0.32

Published

TS/React Scaffolder using esbuild compiler/bundler

Readme

TS/React Scaffolder

Scaffolds a TypeScript/React project in one of two lanes.

The esbuild lanereact, extension, pwa — is the original idea: the entire build is a single esbuild command you can read in one line. No config file, no plugin system, no abstraction to learn before you can change how your code is compiled.

The oxc lanevite-spa, rsbuild-spa, next-drizzle, fastify-react — is for when you want the ecosystem rather than the minimalism: Vite 8 (rolldown under it), Rsbuild 2 (Rspack), Next 16 and Tailwind 4 on by default.

Both lanes generate TypeScript 7 and React 19, both compose with --api, and every template — expo included — lints and formats with oxlint and oxfmt. No ESLint, no Prettier anywhere.

Use

pnpm create tsreact <appname>
cd <appname>
pnpm install
pnpm dev

Generated apps are pnpm workspaces: a private root that holds the lockfile and the scripts, and one directory per app under apps/. npm and bun work too — the CLI reads npm_config_user_agent and prints the commands for whichever one you launched it with.

Templates

| Template | What you get | | ----------------- | --------------------------------------------------------------- | | react (default) | Browser app, dev server with live reload | | extension | Chrome MV3 extension: React popup + content script + worker | | pwa | Installable offline app: web manifest + service worker | | expo | React Native app on Expo SDK 57 (bundled by metro, not esbuild) | | vite-spa | React SPA on Vite 8, Tailwind 4, oxlint + oxfmt | | rsbuild-spa | React SPA on Rsbuild 2 (Rspack), Tailwind 4, Fast Refresh | | next-drizzle | Next 16 on Turbopack + Drizzle ORM on SQLite/libsql | | fastify-react | Workspaces monorepo: Fastify API (rolldown) + React on Vite |

Two flags add styling to any of the browser templates:

| Flag | What it does | | ------------ | -------------------------------------------------------- | | --tailwind | Tailwind CSS v4, compiled by @tailwindcss/cli | | --daisyui | DaisyUI 5 components on top of it (implies --tailwind) |

The last three templates have Tailwind 4 already — their bundler compiles it, so there is no separate CSS watcher. --tailwind is accepted there as a no-op, and --daisyui still adds the plugin on top.

And two more work with any template:

| Flag | What it does | | ------------- | ------------------------------------------------------------ | | --api <dir> | Generates a typed client from a Bruno collection — see below | | --husky | Adds a pre-commit hook: format staged files, then lint |

--husky needs the repository to exist before you install: husky sets the hook up from a prepare script, and outside a repo it exits quietly. Run git init first, or pnpm run prepare afterwards.

--api reads a Bruno collection, executes its safe requests once, infers TypeScript types from the real responses, and emits a TanStack Query client. The samples are committed, so regeneration is deterministic and works offline.

pnpm create tsreact myapp
pnpm create tsreact myext --template extension
pnpm create tsreact myapp --template pwa --daisyui
pnpm create tsreact myapp --api ./bruno --api-env local
pnpm create tsreact myapp --template vite-spa
pnpm create tsreact .                            # scaffold into the current dir

Careful with npm create: npm swallows flags it doesn't recognise, so options have to go after a -- separator. pnpm create, pnpm dlx and npx forward them as-is and need no separator.

npm create tsreact@latest myext -- --template extension   # note the --
pnpm create tsreact myext --template extension            # no -- needed
npx create-tsreact myext --template extension             # no -- needed

To see the templates without the rest of --help:

pnpm create tsreact --list-templates
pnpm create tsreact --list-templates --json   # machine-readable

Other options: --help / -h, --version / -v.

Full documentation

Per-template details are in supported-stacks.md; the --api pipeline and the build commands are documented at ngmaibulat.github.io/packages.

MIT © Aibulat