The fastest way to scaffold production-ready React applications
Quick Start • Why This? • What's Included • Docs
# npm
npm create ronins-react@latest my-app
# yarn
yarn create ronins-react@latest my-app
# pnpm
pnpm create ronins-react@latest my-app
# bun (recommended)
bun create ronins-react@latest my-appThen:
cd my-app
bun install # or npm install
bun dev # start dev server at localhost:5173# Scaffold in current directory
npm create ronins-react@latest .
# Minimal setup (no demo pages)
npm create ronins-react@latest my-app --clean| Feature | create-ronins-react | create-vite | CRA | create-t3-app |
|---|---|---|---|---|
| React 19 | ✅ | ✅ | ❌ | ✅ |
| Vite 7 | ✅ | ✅ | ❌ | ✅ |
| Tailwind CSS 4 | ✅ | ❌ | ❌ | ✅ |
| shadcn/ui ready | ✅ | ❌ | ❌ | ❌ |
| TypeScript 5.9 | ✅ | ✅ | ✅ | ✅ |
| React Router 7 | ✅ | ❌ | ❌ | ❌ |
| TanStack Query | ✅ | ❌ | ❌ | ✅ |
| Zod 4 | ✅ | ❌ | ❌ | ✅ |
| ESLint 9 (flat config) | ✅ | ✅ | ❌ | ✅ |
| Vitest | ✅ | ❌ | ❌ | ✅ |
| Husky + Git Hooks | ✅ | ❌ | ❌ | ❌ |
| Bun support | ✅ | ✅ | ❌ | ✅ |
| Zero config | ✅ | ✅ | ❌ | ❌ |
| Clean mode | ✅ | ❌ | ❌ | ❌ |
- create-react-app: Deprecated, uses Webpack, outdated dependencies
- create-vite: Minimal - you still need to set up routing, state, UI, testing
- create-t3-app: Great but opinionated toward Next.js and tRPC
create-ronins-react gives you:
- Latest stable versions of everything (React 19, Vite 7, Tailwind 4)
- Production-ready defaults (linting, formatting, testing, git hooks)
- shadcn/ui pre-configured - just run
bunx shadcn add button - Works with npm, yarn, pnpm, and bun
--cleanflag for minimal projects
| Category | Tool | Version |
|---|---|---|
| Build | Vite + SWC | 7.x |
| Framework | React | 19.x |
| Language | TypeScript | 5.9 |
| Styling | Tailwind CSS | 4.x |
| UI Components | shadcn/ui | latest |
| Routing | React Router | 7.x |
| Server State | TanStack Query | 5.x |
| Validation | Zod | 4.x |
| Linting | ESLint (flat config) | 9.x |
| Formatting | Prettier | 3.x |
| Testing | Vitest + Testing Library | latest |
| Git Hooks | Husky | 9.x |
| Dead Code | Knip | latest |
my-app/
├── src/
│ ├── app/
│ │ ├── routes/ # Page components
│ │ ├── providers.tsx # Global providers
│ │ └── router.tsx # Route definitions
│ ├── components/
│ │ └── ui/ # shadcn/ui components
│ ├── lib/
│ │ └── utils.ts # Utilities (cn, etc.)
│ ├── main.tsx # Entry point
│ └── index.css # Tailwind + theme
├── vite.config.ts
├── tsconfig.json
├── eslint.config.js
└── components.json # shadcn/ui config
bun dev # Start dev server
bun run build # Type check + build
bun check # Lint + format + typecheck
bun test # Run tests (watch)
bun test:run # Run tests once
bun knip # Find dead codeshadcn/ui is pre-configured. Just add components:
bunx shadcn add button
bunx shadcn add dialog
bunx shadcn add form inputFull documentation: package.roninslab.com
Contributions are welcome! Please read our Contributing Guide before submitting a PR.
MIT © RoninsLab