React + Vite Expert
Overview
Transform into a React + Vite expert with deep knowledge of modern React development patterns, optimal project organization, performance optimization techniques, and production-ready configurations. This skill provides everything needed to build fast, maintainable, and scalable React applications using Vite as the build tool.
Core Capabilities
1. Project Architecture & Organization
Guide users in structuring React applications for maximum maintainability and scalability.
Reference: references/project_architecture.md
This comprehensive guide covers:
- •Folder structure patterns: Feature-based, atomic design, domain-driven
- •File organization: Colocation strategies, naming conventions
- •Import strategies: Path aliases, barrel exports, tree-shaking
- •State management organization: Local vs global, where to put state
- •Scaling guidelines: How to evolve structure as app grows
When to consult:
- •User asks "how should I organize my React project?"
- •Starting a new project
- •Refactoring existing project structure
- •App is becoming hard to navigate
- •Need to establish team conventions
Key Decision Trees:
- •Feature-based vs Component-based: Read section "Optimal Folder Structure"
- •State management strategy: Read section "State Management Strategies"
- •Import organization: Read section "Import Strategies"
2. Code Generation & Scaffolding
Automate component, hook, and feature creation with production-ready templates.
Scripts available:
scripts/create_component.py
Generates complete component with all necessary files:
- •Component file (.tsx)
- •TypeScript types (.types.ts)
- •CSS Module (.module.css)
- •Tests (.test.tsx)
- •Storybook story (.stories.tsx) [optional]
- •Index file for clean imports
# Create a basic component python scripts/create_component.py Button --type component # Create a page component with lazy loading python scripts/create_component.py Dashboard --type page # Create component with children prop python scripts/create_component.py Card --children # Create component with Storybook story python scripts/create_component.py Button --story # Without tests python scripts/create_component.py SimpleComponent --no-tests
When to use:
- •Creating any new component
- •Setting up new feature modules
- •Need consistent component structure
- •Want to speed up development
scripts/create_hook.py
Generates custom hooks with templates for common patterns:
- •State management hooks
- •Effect hooks
- •Data fetching hooks
- •LocalStorage hooks
- •Debounce hooks
- •Interval hooks
# Create custom hook python scripts/create_hook.py useAuth --type custom # Create data fetching hook python scripts/create_hook.py useUserData --type fetch # Create localStorage hook python scripts/create_hook.py useSettings --type localStorage # Create debounce hook python scripts/create_hook.py useSearchDebounce --type debounce
When to use:
- •Extracting reusable logic
- •Creating custom state management
- •Need common hook patterns
- •Want hook with tests automatically
3. Performance Optimization
Optimize React applications for maximum performance and minimal bundle size.
Reference: references/performance_optimization.md
This guide covers:
- •React rendering optimization: React.memo(), useMemo(), useCallback()
- •Code splitting: React.lazy(), route-based splitting, component splitting
- •Virtualization: Long list optimization with react-window
- •Debouncing & throttling: Input optimization, scroll handling
- •Vite build optimization: Chunk splitting, minification, compression
- •Image optimization: WebP/AVIF, lazy loading, responsive images
- •Network optimization: API request optimization, prefetching
- •CSS performance: CSS Modules vs CSS-in-JS, critical CSS
- •Web Vitals tracking: Measuring LCP, FID, CLS
When to consult:
- •App feels slow or laggy
- •Large bundle sizes
- •Long initial load time
- •User asks about optimization
- •Preparing for production deployment
- •Performance audit reveals issues
Quick Performance Checklist:
- •Run
python scripts/analyze_bundle.pyto identify large dependencies - •Check
references/performance_optimization.mdfor optimization strategies - •Apply code splitting for routes:
React.lazy(() => import('./Page')) - •Memoize expensive components:
React.memo(Component) - •Use
useMemo()for expensive calculations - •Implement virtualization for long lists (react-window)
- •Optimize images (WebP, lazy loading)
- •Review Vite config in
assets/vite.config.optimized.ts
scripts/analyze_bundle.py
Analyzes build output and provides optimization recommendations:
# Run bundle analysis python scripts/analyze_bundle.py
What it analyzes:
- •Package.json dependencies (identifies large libraries)
- •Import patterns (suggests better imports for tree-shaking)
- •Build output (bundle sizes, chunk distribution)
- •Provides specific optimization recommendations
When to run:
- •Before production deployment
- •After adding new dependencies
- •When bundle size increases unexpectedly
- •Regular monthly audits
- •Performance optimization sessions
4. Production-Ready Configuration
Deploy optimized Vite configurations and project setups.
Assets available:
assets/vite.config.optimized.ts
Fully optimized Vite configuration with:
- •Path aliases: Clean imports (@/components, @/hooks, etc.)
- •Manual chunk splitting: Vendor, feature-based chunks for better caching
- •Minification: Terser with console.log removal in production
- •Bundle analyzer: Visualize bundle composition
- •Asset optimization: Image handling, font loading
- •Development proxy: API proxy configuration
- •Source maps: Conditional source map generation
- •CSS code splitting: Automatic CSS chunking
When to use:
- •Starting new project
- •Optimizing existing build
- •Setting up production pipeline
- •Need better caching strategy
- •Want to analyze bundle
How to use:
- •Copy
assets/vite.config.optimized.tsto project root - •Install dependencies:
npm install -D rollup-plugin-visualizer - •Customize manual chunks for your features
- •Run build with analyzer:
npm run build:analyze
assets/tsconfig.optimized.json
TypeScript configuration with:
- •Strict mode enabled: Catch more errors at compile time
- •Path aliases: Matching Vite config
- •Optimal compiler options: For Vite and modern React
- •Unused code detection: noUnusedLocals, noUnusedParameters
- •Type safety: noImplicitReturns, noUncheckedIndexedAccess
When to use:
- •Starting new TypeScript project
- •Want stricter type checking
- •Need path aliases
- •Improving type safety
assets/package.json.example
Complete package.json with:
- •All recommended scripts: dev, build, test, lint, format
- •Essential dependencies: React, React DOM, Router
- •Dev dependencies: TypeScript, ESLint, Prettier, Vitest
- •Recommended optional dependencies: Categorized by use case
- •Husky & lint-staged setup: Pre-commit hooks
- •CI/CD scripts: For automated pipelines
When to use:
- •Starting new project
- •Need script recommendations
- •Setting up CI/CD
- •Want git hooks
- •Need package reference
assets/project-structure-example.md
Complete project structure with:
- •Full directory tree: Feature-based architecture
- •Key file examples: App.tsx, router, providers, API setup
- •Configuration examples: vitest, eslint, prettier
- •Test setup: Testing utilities and mocks
- •Scaling guidelines: How to grow the structure
When to use:
- •Starting new project from scratch
- •Need structure reference
- •Refactoring existing project
- •Teaching team about organization
- •Creating project templates
5. React Best Practices & Patterns
Implement modern React patterns and avoid common pitfalls.
Reference: references/best_practices.md
This guide covers:
- •Component patterns: Compound components, render props, HOC, custom hooks
- •TypeScript best practices: Typing components, hooks, events, generic components
- •Error handling: Error boundaries, async error handling
- •Form handling: Controlled components, validation, form libraries
- •Testing: Component testing, hook testing, mocking
- •Common anti-patterns: What to avoid and why
- •Accessibility: a11y best practices, ARIA, keyboard navigation
When to consult:
- •Implementing complex component patterns
- •Need TypeScript guidance
- •Setting up error handling
- •Creating forms
- •Writing tests
- •User asks "what's the best way to...?"
- •Code review requests
- •Teaching React patterns
Pattern Decision Guide:
- •Compound Components: For flexible, composable UI (Tabs, Accordion)
- •Custom Hooks: Extract and reuse logic (useAuth, useDebounce)
- •Context + Hook: Share state across tree (Theme, Auth)
- •Render Props: Share code with render control (rare, mostly replaced by hooks)
- •HOC: Add cross-cutting concerns (rare, mostly replaced by hooks)
6. TypeScript Excellence
Write type-safe React code with proper TypeScript patterns.
Key TypeScript patterns in references/best_practices.md:
- •Component prop typing (interfaces vs types)
- •Event handler typing
- •Ref typing
- •Generic component typing
- •Hook typing
- •Type guards and narrowing
- •Utility types
When user asks about TypeScript:
- •Read relevant section in
references/best_practices.md - •Provide type-safe examples
- •Explain the "why" behind the pattern
- •Show both the wrong and right way
Common TypeScript Questions:
- •"How do I type this component?" → Component Props Typing section
- •"How do I type an event handler?" → Hooks Typing section
- •"How do I make a generic component?" → Generic Components section
- •"How do I type a ref?" → Hooks Typing section
7. Testing Strategy
Implement comprehensive testing for React applications.
Testing patterns in references/best_practices.md:
- •Component testing with React Testing Library
- •Custom hook testing
- •Test utilities and setup
- •Mocking strategies
- •Integration testing
Testing Philosophy:
- •Test user behavior, not implementation
- •Test what the user sees and does
- •Mock external dependencies
- •Use descriptive test names
- •Arrange-Act-Assert pattern
When user needs testing help:
- •Check if component generator created tests:
scripts/create_component.py - •Reference testing section in
references/best_practices.md - •Show test setup in
assets/project-structure-example.md - •Provide specific test examples for their use case
8. State Management Guidance
Choose and implement the right state management solution.
State management decision tree (from references/project_architecture.md):
Is it server data (from API)? └─ Yes → TanStack Query (React Query) Is it local to a component? └─ Yes → useState Is it shared between 2-3 components? └─ Yes → Lift state up (props) Is it global but simple (theme, auth)? └─ Yes → Context + useState Is it global and complex? ├─ Small/medium app → Zustand └─ Large app with complex async → Redux Toolkit
When to consult references/project_architecture.md:
- •Choosing state management solution
- •Need code examples for each approach
- •Understanding trade-offs
- •Migrating state management
- •Performance issues with re-renders
Workflow Examples
Example 1: "Help me start a new React project with best practices"
- •
Understand requirements:
- •Ask about: Project size, features, state needs, team size
- •Determine: Which patterns to use, structure complexity
- •
Provide structure:
- •Show
assets/project-structure-example.md - •Explain feature-based vs simpler architecture
- •Recommend based on project size
- •Show
- •
Set up configuration:
- •Copy
assets/vite.config.optimized.ts - •Copy
assets/tsconfig.optimized.json - •Reference
assets/package.json.examplefor scripts
- •Copy
- •
Generate initial components:
bash# Create basic UI components python scripts/create_component.py Button --type component --story python scripts/create_component.py Input --type component # Create pages python scripts/create_component.py HomePage --type page # Create hooks python scripts/create_hook.py useAuth --type custom
- •
Explain next steps:
- •Set up git hooks (husky)
- •Configure ESLint and Prettier
- •Set up testing
- •Create initial routes
Example 2: "My React app is slow, how do I optimize it?"
- •
Analyze current state:
bash# Run bundle analyzer python scripts/analyze_bundle.py
- •
Review analysis output:
- •Identify large dependencies
- •Check for duplicates
- •Review import patterns
- •
Consult optimization guide:
- •Read
references/performance_optimization.md - •Focus on relevant sections based on analysis
- •Read
- •
Apply optimizations (in order of impact):
- •Code splitting: Implement lazy loading for routes
- •Remove large dependencies: Suggest lighter alternatives
- •Memoization: Add React.memo() to expensive components
- •Virtualization: If rendering long lists
- •Image optimization: Implement lazy loading, WebP format
- •Build optimization: Apply
assets/vite.config.optimized.ts
- •
Measure improvement:
- •Run build before and after
- •Compare bundle sizes
- •Test Web Vitals
Example 3: "How should I organize my growing React project?"
- •
Assess current size:
- •Ask: How many components? How many features?
- •Determine: Current pain points
- •
Reference architecture guide:
- •Read
references/project_architecture.md - •Section: "Optimal Folder Structure"
- •Read
- •
Recommend structure:
- •Small (<10 components): Flat structure
- •Medium (10-50): Feature folders + shared components
- •Large (50+): Full feature-based architecture
- •
Show concrete example:
- •Display relevant section from
assets/project-structure-example.md - •Explain each folder's purpose
- •Display relevant section from
- •
Provide migration path:
- •Don't refactor everything at once
- •Start with new features in new structure
- •Gradually migrate old code
Example 4: "I need to create many similar components"
- •
Use component generator:
bash# Generate multiple components at once python scripts/create_component.py UserCard --type component python scripts/create_component.py ProductCard --type component python scripts/create_component.py OrderCard --type component
- •
Explain structure:
- •Show generated files
- •Explain each file's purpose
- •Customize as needed
- •
Create shared patterns:
- •Extract common props to shared type
- •Create base Card component
- •Use composition pattern
- •
Reference patterns guide:
- •Show compound component pattern from
references/best_practices.md - •Demonstrate component composition
- •Show compound component pattern from
Example 5: "Help me set up testing for my React app"
- •
Reference testing setup:
- •Show
assets/project-structure-example.md - •Section: "src/test/" folder structure
- •Show
- •
Set up test utilities:
- •Copy test setup from example
- •Configure vitest.config.ts
- •Create test utilities (render with providers)
- •
Generate components with tests:
bash# Components come with tests by default python scripts/create_component.py Button
- •
Explain testing patterns:
- •Reference
references/best_practices.md - •Section: "Testing Best Practices"
- •Show component and hook testing examples
- •Reference
- •
Set up CI/CD:
- •Add test scripts from
assets/package.json.example - •Configure pre-commit hooks
- •Set up GitHub Actions
- •Add test scripts from
Best Practices for Using This Skill
Be Comprehensive
- •Don't just answer questions - provide complete solutions
- •Show file structure, configuration, and examples
- •Explain the "why" behind recommendations
Use All Resources
- •Scripts: Generate code for consistency
- •References: Deep dives into concepts
- •Assets: Production-ready configs and examples
Follow This Order
- •Understand: Ask clarifying questions
- •Reference: Consult relevant documentation
- •Generate: Use scripts when applicable
- •Explain: Teach the pattern/concept
- •Provide: Give complete working examples
Prioritize Performance
- •Proactively suggest optimizations
- •Run bundle analyzer regularly
- •Recommend lazy loading by default
- •Use optimized configurations
Teach Best Practices
- •Show the wrong way vs the right way
- •Explain trade-offs
- •Reference TypeScript strict mode
- •Encourage testing
Stay Organized
- •Recommend feature-based structure early
- •Use path aliases from the start
- •Establish naming conventions
- •Plan for scale
Reference Documentation
references/project_architecture.md
Read when:
- •Structuring new project
- •Organizing existing project
- •Choosing state management
- •Setting up imports
- •User asks "how should I organize...?"
Key sections:
- •Optimal Folder Structure (2 patterns)
- •Naming Conventions
- •Component Organization Patterns
- •State Management Strategies
- •Import Strategies
- •Decision Matrix
references/performance_optimization.md
Read when:
- •App is slow
- •Large bundle sizes
- •Optimizing for production
- •User asks about performance
- •Before deployment
Key sections:
- •React Rendering Optimization (memo, useMemo, useCallback)
- •Code Splitting
- •Virtualization
- •Vite Build Optimization
- •Image Optimization
- •Network Performance
- •CSS Performance
- •Web Vitals Tracking
references/best_practices.md
Read when:
- •Implementing patterns
- •TypeScript questions
- •Error handling setup
- •Form implementation
- •Testing questions
- •Code review
Key sections:
- •Component Patterns (5 patterns)
- •TypeScript Best Practices
- •Error Handling Patterns
- •Form Handling
- •Testing Best Practices
- •Common Anti-Patterns
- •Accessibility
Quick Reference
Common Commands
# Generate component python scripts/create_component.py ComponentName --type component # Generate page python scripts/create_component.py PageName --type page # Generate hook python scripts/create_hook.py useHookName --type custom # Analyze bundle python scripts/analyze_bundle.py
Common Questions
- •"How do I structure my project?" →
references/project_architecture.md - •"How do I optimize performance?" →
references/performance_optimization.md+ runanalyze_bundle.py - •"What pattern should I use?" →
references/best_practices.md - •"How do I configure Vite?" →
assets/vite.config.optimized.ts - •"What should my package.json look like?" →
assets/package.json.example
File Structure Priority
- •Feature-based (large apps) - See
references/project_architecture.md - •Component-based (medium apps) - See simpler structure
- •Flat (small apps) - Minimal organization
Performance Priority
- •Code splitting (routes first)
- •Remove large dependencies
- •Lazy loading (images, components)
- •Memoization (expensive components)
- •Virtualization (long lists)
State Management Priority
- •Server data → React Query
- •Local state → useState
- •Shared simple state → Context
- •Global complex state → Zustand or Redux Toolkit
When NOT to Use This Skill
- •Non-React frameworks: Next.js has its own patterns (use Next.js skill)
- •React Native: Mobile has different patterns
- •Class components: Focus is on modern functional components
- •Non-Vite build tools: Webpack/Parcel have different configs
- •Backend development: This is frontend-focused
For these topics, provide general React guidance but acknowledge limitations.
Success Metrics
Your React + Vite project should achieve:
- •✅ Bundle size < 200KB (initial, gzipped)
- •✅ Lighthouse score > 90
- •✅ All tests passing
- •✅ No ESLint errors
- •✅ Consistent file structure
- •✅ Type-safe (TypeScript strict mode)
- •✅ Fast build times (< 30s for production)
- •✅ Fast HMR (< 100ms)