This project does not accept pull requests. It is faster to tell a coding agent what to change than it is to review someone else's diff, so contributions come in as descriptions rather than patches.
Open an issue and pick New library, Library edit, or Other. Be as descriptive as you want; a thorough issue is worth more than a patch.
It is now cheap to generate a plausible-looking library in an afternoon, so new entries must show they are established before being listed. A library must meet at least one of:
- Age: the GitHub repo or npm package was created at least 6 months ago and has had a commit or release in the last 6 months. Creation dates come from the GitHub and npm APIs, not from git commit dates.
- Stars: at least 100 GitHub stars.
- Downloads: at least 500 weekly npm downloads.
In addition, every entry must have an identifiable maintainer: a person or company with a public footprint that predates the library. Closed-source products without a GitHub repo meet this through the company behind them.
Entries that were listed before this rule are grandfathered. If your library does not qualify yet, wait until it does and open the issue then; it will be welcome.
These are the steps a maintainer follows when acting on an issue.
- Skim
lib/features.tsto learn the feature flags so you can describe the library's capabilities accurately. - Add or edit a YAML file in
data/— see the existing files for the schema (title, home URL, GitHub repo, npm package, license, supported frameworks, and features). This powers the interactive site. - Add or update the library's entry in
README.mdby hand, keeping the list alphabetical. Separate the link and description with a dash, start the description with an uppercase letter, and end it with a period. - Run
npx awesome-lintto confirm the README still conforms to the Awesome list format. - Commit, referencing the issue so it closes.
All library descriptions are adapted from each package's home page.
- Create a GitHub Personal Access Token. You don't need to give it any scopes — it's just to increase the API rate limit.
- (Optional) Create an NPM Access Token for more reliable NPM API reads and to avoid rate limits.
- Make sure you have Node.js version 22 or later and the pnpm package manager installed.
- Check out the repo and run
pnpm install. - Create a
.envfile in the root directory with your tokens:GITHUB_TOKEN=your_github_token_here NPM_TOKEN=your_npm_token_here - Run
pnpm dev. - Go to http://localhost:3000/ and bask in the wild splendor that is Awesome JavaScript Grids.
Information on each library lives in data/ and is parsed in lib/libraries.ts.
- This site is hosted on Vercel.
- It makes extensive use of Tailwind CSS, Next.js (with App Router), and TypeScript.
- Icons are from the various icon sets in react-icons.
- The GitHub corner thing is Tim Holman's fancy GitHub Corners.
The curated list itself (the contents of README.md and data/) is dedicated to the public domain under CC0 1.0. The source code that builds and serves this site is licensed under the MIT License.