Available Stacks
| Stack | Focus Areas | Guidelines |
|---|---|---|
html-tailwind | Tailwind utilities, responsive, a11y | 45 rules |
react | State, hooks, performance, patterns | 38 rules |
nextjs | SSR, routing, images, API routes | 32 rules |
astro | Islands, SSG, integrations | 28 rules |
vue | Composition API, Pinia, Vue Router | 35 rules |
nuxtjs | SSR, routing, modules | 30 rules |
nuxt-ui | Nuxt UI components, theming | 25 rules |
svelte | Runes, stores, SvelteKit | 30 rules |
swiftui | Views, State, Navigation, Animation | 40 rules |
react-native | Components, Navigation, Lists | 35 rules |
flutter | Widgets, State, Layout, Theming | 42 rules |
shadcn | shadcn/ui components, theming, forms | 28 rules |
jetpack-compose | Composables, Modifiers, State Hoisting | 38 rules |
Basic Syntax
Stack Deep Dives
HTML + Tailwind (Default)
Best for: Static sites, landing pages, simple web apps Search example:- Use Tailwind spacing scale (p-4, m-6, gap-8) not arbitrary values
- Add
transition-colors duration-200to interactive elements - Use
aspect-videooraspect-squarefor images - Limit container width with
max-w-7xl mx-auto - Use
space-y-4instead of margin on each child
React
Best for: Interactive UIs, SPAs, component libraries Search example:- Use
React.memo()for components that render often with same props - Avoid inline function definitions in JSX (causes rerenders)
- Use
useCallback()anduseMemo()for expensive computations - Always provide stable
keyprop in lists (not array index) - Show loading/disabled states for async actions
Next.js
Best for: SEO-critical sites, full-stack apps, content platforms Search example:- Always use
next/imagefor images (automatic optimization) - Prefer Server Components (App Router) for data fetching
- Export
metadataobject for SEO instead of<Head> - Use
loading.tsxanderror.tsxfor loading/error states - Use
generateStaticParamsfor static routes
Vue
Best for: Progressive enhancement, enterprise apps, admin dashboards Search example:- Use Composition API (
<script setup>) over Options API - Use
ref()for primitives,reactive()for objects - Access
.valuein<script>, not in<template> - Use
computed()for derived state (not methods) - Use Pinia for state management (not Vuex)
SwiftUI
Best for: iOS, macOS, watchOS, visionOS apps Search example:- Use
@Statefor view-local state - Use
@Bindingfor child view state - Use
@StateObjectfor reference types (ObservableObject) - Extract complex views into computed properties
- Use
.task { }for async work, not.onAppear
React Native
Best for: Cross-platform mobile apps (iOS + Android) Search example:- Use
FlatListfor lists, neverScrollViewwith.map() - Use
Pressableinstead ofTouchableOpacity - Provide
getItemLayoutfor FlatList if items have fixed height - Use
React.memo()on list items to prevent rerenders - Use React Navigation for routing, not manual navigation
shadcn/ui
Best for: React apps with pre-built accessible components Search example:- Use Form component with React Hook Form + zod validation
- Use
asChildprop to avoid wrapper divs - Customize theme in
tailwind.config.ts(not component CSS) - Use
cn()utility for conditional classes - Import components from
@/components/ui/notshadcn
Default Stack
If user doesn’t specify a stack, default to
html-tailwind for universal compatibility.Combining Stack + Domain Search
Get stack-specific implementation for UX guidelines:Stack Detection
Auto-detect from project files:| File/Folder | Detected Stack |
|---|---|
package.json with "next" | nextjs |
package.json with "react" | react |
package.json with "vue" | vue |
package.json with "svelte" | svelte |
astro.config.mjs | astro |
nuxt.config.ts | nuxtjs |
*.swift files | swiftui |
pubspec.yaml | flutter |
android/ + ios/ | react-native |
JSON Output
Get machine-readable JSON:Common Anti-Patterns by Stack
React
- Using array index as key
- Inline function definitions in JSX
- Not memoizing expensive components
- Mutating state directly
- Missing loading/error states
Next.js
- Using
<img>instead ofnext/image - Client-side data fetching (use Server Components)
- Missing metadata for SEO
- Not using
loading.tsxanderror.tsx - Fetching data in
useEffectinstead of Server Components
Tailwind
- Arbitrary values like
p-[15px](use spacing scale) - No dark mode variants
- Missing focus states (
focus:outline-nonewithout replacement) - Same padding/margin for all screen sizes
- Using
@keyframesfor simple animations (useanimate-*)
Vue
- Using Options API instead of Composition API
- Forgetting
.valuein<script>for refs - Using methods instead of
computed()for derived state - Mutating props
- Not using Pinia for global state
Next Steps
Persist Design System
Save design systems for hierarchical retrieval across sessions
CLI Commands
Master the uipro-cli command-line tool