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

@thinkhuman/react-native-simple-icons

v16.19.0

Published

React Native components generated from simple-icons data.

Readme

Installation

npm install @thinkhuman/react-native-simple-icons react-native-svg

Usage

import { SiReact } from "@thinkhuman/react-native-simple-icons";

export function Example() {
  return <SiReact size={32} color="default" />;
}
import { SiGithub } from "@thinkhuman/react-native-simple-icons";

export function Example() {
  return <SiGithub size={24} color="#000" accessibilityLabel="GitHub" />;
}

Each icon exports its component and metadata:

import { SiReact, SiReactHex, SiReactSlug, SiReactTitle } from "@thinkhuman/react-native-simple-icons";

color="default" uses the brand color from simple-icons. The regular color default is "black" because React Native support for "currentColor" is not consistent across targets.

API

import type { SvgProps } from "react-native-svg";

export type IconProps = Omit<SvgProps, "color"> & {
  size?: number | string;
  color?: string | "default";
  title?: string;
};

Icons render with viewBox="0 0 24 24". Remaining props are passed to Svg.

Generation

Generate icons with:

bun run generate:icons

The generator imports all icon data from simple-icons, writes src/icons, writes src/index.ts, and records the processed version plus per-icon hashes in src/simple-icons-manifest.json.

Generated output is deterministic. Running the generator twice with the same simple-icons version should not change files.

Validation

Run the full local check with:

bun run validate

CI runs the generator, checks git diff --exit-code, then runs typecheck, tests, and build.

Versioning

The npm package version matches the processed simple-icons version (for example 16.19.0). bun run generate:icons updates package.json and src/simple-icons-manifest.json together, so icon updates and the publishable version stay aligned.

Updates

.github/workflows/update-icons.yml runs every 3 days and can be started manually. It updates simple-icons, regenerates icons, classifies the changes, runs validation, and opens a PR when files changed.

The update PR body includes the previous and new processed versions, added icons, removed icons, changed icons, suggested release type, and detected breaking changes.

Expanding on this project

Install dependencies with:

bun install

Use Bun for local development. The package is ESM-only and builds with tsc through scripts/build-package.ts.

The following files are generated:

  • src/icons contains one generated component per icon.
  • src/index.ts contains generated named exports.
  • src/simple-icons-manifest.json records the processed simple-icons version, component API hash, icon names, and per-icon hashes.

dist is the build output and should not be committed.

Common commands:

bun run generate:icons
bun run classify:changes
bun run typecheck
bun run build
bun run smoke:react-native
bun run test
bun run validate

bun run smoke:react-native builds the package, creates a temporary React Native fixture, imports the package through Metro, and bundles it. This catches package export and React Native resolution problems that a plain Node import cannot catch.

To test the packed package in an app:

bun run validate
npm pack

Install the generated .tgz file into a fresh Expo or React Native app, then test both root imports and per-icon imports:

import { SiReact } from "@thinkhuman/react-native-simple-icons";
import { SiYoutube } from "@thinkhuman/react-native-simple-icons/icons/SiYoutube";

Before publishing locally, run:

bun run validate
npm pack --dry-run

prepublishOnly runs the same validation and dry-run pack check when you npm publish from your machine. The package publishes only dist, the manifest, README, license, notice, and package metadata.

Automated publish (GitHub Actions)

Pushes to main on the upstream repo run .github/workflows/publish.yml when package.json has a version that is not already on npm. Merging an icon update (or running generate:icons after bumping simple-icons) sets the version automatically; CI validates and publishes.

Forks cannot trigger a publish: the workflow checks github.repository, only runs on push to main (never on pull_request / pull_request_target), and does not use shared Actions caches.

One-time setup in ThinkHumanDotDev/react-native-simple-icons settings:

  1. Create an npm automation token with publish access to @thinkhuman/react-native-simple-icons.
  2. Add repository secret NPM_TOKEN with that token.
  3. Optional: in Settings → Environments → npm, add required reviewers or deployment-branch rules before publish runs.

You can also run the workflow manually from the Actions tab (workflow_dispatch).

When simple-icons releases a new version, use the update workflow or run the same steps locally:

bun add --dev --exact simple-icons@latest
bun run generate:icons
bun run classify:changes --markdown .github/update-summary.md --json .github/update-summary.json
bun run validate

Commit generated icon updates separately from tooling or documentation changes when possible. A typical update commit only changes bun.lock, package.json, src/icons, src/index.ts, and src/simple-icons-manifest.json.

License

This package is MIT licensed. Icon data is generated from simple-icons, which is CC0-1.0.