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

rn-shad-cli

v1.1.1

Published

A CLI for adding premium React Native components to your project - shadcn/ui for React Native

Downloads

2,644

Readme

@rn-shad/cli

A command-line interface for adding premium React Native components to your project.

Features

  • 🚀 Quick Setup - Initialize your project in seconds
  • 📦 30+ Components - All essential and advanced components
  • 🎨 Theme Support - Preview and manage color themes
  • 🔍 Health Checks - Validate your project setup
  • 📱 Universal - Works on iOS, Android, and Web
  • Smart Dependencies - Auto-install required packages
  • 🎯 Type-Safe - Full TypeScript support

Installation

npx @rn-shad/cli@latest init

Or install globally:

npm install -g @rn-shad/cli

Commands

init

Initialize your project with rn-shad components.

npx @rn-shad/cli init

This command will:

  • Create a components.json configuration file
  • Install required dependencies (Reanimated, Gesture Handler, SVG, Icons)
  • Set up Babel module resolver for @ imports
  • Configure TypeScript path aliases
  • Create utility files

Options:

  • -y, --yes - Skip prompts and use defaults
  • -d, --defaults - Use default configuration

add

Add components to your project.

# Add a single component
npx @rn-shad/cli add button

# Add multiple components
npx @rn-shad/cli add button input card

# Add all components
npx @rn-shad/cli add --all

# Interactive selection
npx @rn-shad/cli add

Options:

  • -a, --all - Add all components
  • -y, --yes - Skip confirmation prompts
  • -o, --overwrite - Overwrite existing files

theme

Preview and manage themes.

npx @rn-shad/cli theme

Available themes:

  • Zinc (Default)
  • Slate

doctor

Check your project setup and dependencies.

npx @rn-shad/cli doctor

This command checks:

  • package.json existence
  • React Native installation
  • Required dependencies (Reanimated, Gesture Handler, SVG)
  • Icon library installation
  • Configuration files
  • Utils file

Available Components

Core Components (15)

  1. Button - Customizable button with variants and animations
  2. Input - Text input with icons and labels
  3. Card - Container with header, content, footer
  4. Text - Typography with variants and colors
  5. Badge - Status indicator with variants
  6. Avatar - User avatar with fallback
  7. Switch - Animated toggle
  8. Checkbox - Selection control with animations
  9. Alert - Notification banner
  10. Skeleton - Loading placeholder
  11. Progress - Progress bar
  12. Spinner - Loading spinner
  13. Dialog - Modal dialog
  14. Sheet - Bottom sheet
  15. Toast - Toast notification

Advanced Components (15)

  1. Select - Dropdown select
  2. Combobox - Autocomplete input
  3. Dropdown Menu - Context menu
  4. Popover - Floating content
  5. Tooltip - Hover/press hint
  6. Tabs - Tab navigation
  7. Accordion - Collapsible sections
  8. Form - Form wrapper
  9. Label - Form label
  10. Radio Group - Radio buttons
  11. Slider - Range input
  12. DatePicker - Date selection
  13. Calendar - Calendar view
  14. Command - Command palette
  15. Table - Data table

Platform Compatibility

All components are designed to work across iOS, Android, and Web platforms. However, some components have platform-specific behaviors or limitations:

| Component | iOS | Android | Web | Notes | |-----------|-----|---------|-----|-------| | Core Components | | | | | | Button | ✅ | ✅ | ✅ | Full support, haptics on native | | Input | ✅ | ✅ | ✅ | Full support, platform-specific keyboards | | Card | ✅ | ✅ | ✅ | Full support | | Text | ✅ | ✅ | ✅ | Full support | | Badge | ✅ | ✅ | ✅ | Full support | | Avatar | ✅ | ✅ | ✅ | Full support | | Switch | ✅ | ✅ | ✅ | Full support, animated | | Checkbox | ✅ | ✅ | ✅ | Full support, animated | | Alert | ✅ | ✅ | ✅ | Full support | | Skeleton | ✅ | ✅ | ✅ | Full support, animated | | Progress | ✅ | ✅ | ✅ | Full support, animated | | Spinner | ✅ | ✅ | ✅ | Full support, animated | | Dialog | ✅ | ✅ | ✅ | Full support, modal on all platforms | | Sheet | ✅ | ✅ | ⚠️ | Limited gesture support on web | | Toast | ✅ | ✅ | ✅ | Full support | | Advanced Components | | | | | | Select | ✅ | ✅ | ⚠️ | Positioning may differ on web | | Combobox | ✅ | ✅ | ⚠️ | Keyboard behavior differs on web | | Dropdown Menu | ✅ | ✅ | ⚠️ | Positioning may differ on web | | Popover | ✅ | ✅ | ⚠️ | Positioning calculated differently | | Tooltip | ✅ | ✅ | ⚠️ | Hover vs press behavior | | Tabs | ✅ | ✅ | ✅ | Full support | | Accordion | ✅ | ✅ | ✅ | Full support | | Form | ✅ | ✅ | ✅ | Full support | | Label | ✅ | ✅ | ✅ | Full support | | Radio Group | ✅ | ✅ | ✅ | Full support | | Slider | ✅ | ✅ | ⚠️ | Touch vs mouse interaction | | DatePicker | ✅ | ✅ | ⚠️ | Native pickers on mobile, custom on web | | Calendar | ✅ | ✅ | ✅ | Full support | | Command | ✅ | ✅ | ✅ | Full support, keyboard shortcuts | | Table | ✅ | ✅ | ✅ | Full support, scrollable |

Legend:

  • Full support - Works identically across platforms
  • ⚠️ Partial support - Works but with platform-specific behavior or limitations
  • Not supported - Does not work on this platform

Platform-Specific Notes

iOS:

  • All gestures and animations work smoothly
  • Haptic feedback available on interactive components
  • Native keyboard handling

Android:

  • All gestures and animations work smoothly
  • Platform-specific styling (ripple effects where appropriate)
  • Native keyboard handling
  • Text alignment optimizations applied automatically

Web:

  • Most components work well on web
  • Gesture-based components (Sheet, Slider) may have limited functionality
  • Positioning components (Select, Popover, Dropdown) use different measurement APIs
  • Hover interactions available for Tooltip
  • Some components use polyfills for native APIs

Usage Example

After initialization, add components to your project:

npx @rn-shad/cli add button input card

Then use them in your code:

import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Card, CardHeader, CardContent } from '@/components/ui/card';

export function MyComponent() {
  return (
    <Card>
      <CardHeader>
        <Text variant="h3">Login</Text>
      </CardHeader>
      <CardContent>
        <Input placeholder="Email" icon="mail" />
        <Input placeholder="Password" icon="lock" secureTextEntry />
        <Button onPress={() => console.log('Login')}>
          Login
        </Button>
      </CardContent>
    </Card>
  );
}

Configuration

The components.json file configures your project:

{
  "style": "default",
  "rsc": false,
  "tsx": true,
  "tailwind": {
    "config": "tailwind.config.js",
    "css": "global.css",
    "baseColor": "zinc",
    "cssVariables": true
  },
  "aliases": {
    "components": "@/components",
    "utils": "@/lib/utils",
    "ui": "@/components/ui",
    "lib": "@/lib",
    "hooks": "@/hooks"
  },
  "iconLibrary": "lucide"
}

Requirements

  • React 18.2+ or React 19+
  • React Native 0.70+
  • Expo SDK 50+ (if using Expo) or bare React Native

Recommended for best compatibility:

  • React Native 0.74+
  • Expo SDK 54+

Core Dependencies

The CLI will automatically install:

  • react-native-reanimated@^4.0.0 (v4 for New Architecture support)
  • react-native-worklets@^0.6.0 (required by Reanimated v4)
  • react-native-gesture-handler@^2.14.0
  • react-native-svg@^15.0.0
  • lucide-react-native@^0.554.0 (or react-native-heroicons@^4.0.0)
  • babel-plugin-module-resolver@^5.0.0 (dev dependency)

Troubleshooting

If you encounter issues:

  1. Run the doctor command:

    npx rn-shad-cli doctor
  2. Clear cache and restart:

    rm -rf node_modules/.cache .expo
    npx expo start --clear
  3. Verify module resolver is configured:

    • Check babel.config.js has module-resolver plugin
    • Check tsconfig.json has path aliases (for TypeScript projects)
    • Restart Metro bundler after config changes

License

MIT

Links