- Learn
- AI App Builders
- v0
- Getting Started with v0
Learn what v0 is, how it generates UI components, and how to create your first components with natural language prompts.
Getting Started with v0
v0 is Vercel's AI-powered UI generation tool. Unlike full-stack AI builders, v0 focuses specifically on creating beautiful, production-ready React components. Describe what you want, and v0 generates the code—ready to copy into your project.
What is v0?
UI-First Approach
v0 generates individual UI components, not complete applications:
- Component-focused: Cards, forms, navbars, dashboards
- Design-oriented: Aesthetically pleasing by default
- Copy-paste ready: Output works in any React project
- Consistent styling: Uses shadcn/ui and Tailwind CSS
The v0 Stack
Every component v0 generates uses:
- React: Functional components with hooks
- TypeScript: Type-safe code
- Tailwind CSS: Utility-first styling
- shadcn/ui: Consistent, accessible components
- Radix UI: Under-the-hood primitives
This stack is popular, well-documented, and works seamlessly with Next.js.
What v0 Does Well
✅ Generating UI components quickly ✅ Creating consistent, professional designs ✅ Producing accessible, responsive layouts ✅ Iterating on visual designs ✅ Providing copy-ready code
What v0 Doesn't Do
❌ Build full applications ❌ Create backend logic ❌ Connect to databases ❌ Handle authentication ❌ Deploy your app
v0 is one piece of the puzzle—a powerful piece for UI.
Creating Your Account
Step 1: Visit v0.dev
Go to v0.dev in your browser.
Step 2: Sign In
Click "Sign In" and choose:
- GitHub: Recommended for developers
- Vercel account: If you already use Vercel
- Email: Traditional sign-up
Step 3: Understand the Plans
Free Tier:
- Limited generations per day
- Access to basic features
- Public generations
Premium Plans:
- More generations
- Private generations
- Priority support
Start free to learn the platform.
The v0 Interface
Main Elements
When you open v0, you'll see:
Prompt Input
- Large text area at the top
- Where you describe what you want
- Submit with Enter or button click
Generation Preview
- Live preview of generated component
- Interactive—click buttons, type in inputs
- Multiple variations (usually 3 options)
Code Panel
- Full source code
- Copy button for quick export
- Syntax highlighted
Iteration Controls
- Refine with follow-up prompts
- Select specific variations
- Edit and regenerate
Your First Component
Let's generate a simple component to understand the workflow.
Step 1: Write Your Prompt
In the prompt input, type:
A user profile card with:
- Avatar image on the left
- Name and title
- Short bio
- Follow button
- Stats for followers, following, posts
Step 2: Review the Generations
v0 generates multiple variations. Review each:
- Variation A: Maybe minimal, clean
- Variation B: Perhaps more detailed
- Variation C: Different layout approach
Click through each to see them in action.
Step 3: Select Your Favorite
Click on the variation you prefer. This becomes your working version.
Step 4: Iterate If Needed
Not quite right? Add a follow-up prompt:
Make the card wider and add a cover image behind the avatar.
Use a blue gradient for the cover.
Step 5: Copy the Code
When satisfied:
- Click the Code tab
- Click Copy
- Paste into your project
Understanding v0 Output
Component Structure
v0 generates clean, organized code:
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
import { Button } from "@/components/ui/button"
import { Card, CardContent } from "@/components/ui/card"
export default function ProfileCard() {
return (
<Card className="w-full max-w-md">
<CardContent className="pt-6">
<div className="flex items-start gap-4">
<Avatar className="h-16 w-16">
<AvatarImage src="/placeholder-avatar.jpg" alt="User" />
<AvatarFallback>JD</AvatarFallback>
</Avatar>
<div className="flex-1">
<h3 className="font-semibold">Jane Doe</h3>
<p className="text-sm text-muted-foreground">Product Designer</p>
<p className="mt-2 text-sm">
Creating beautiful interfaces and experiences.
</p>
</div>
</div>
<div className="mt-4 flex justify-between">
<div className="text-center">
<p className="font-semibold">1.2k</p>
<p className="text-xs text-muted-foreground">Followers</p>
</div>
<div className="text-center">
<p className="font-semibold">348</p>
<p className="text-xs text-muted-foreground">Following</p>
</div>
<div className="text-center">
<p className="font-semibold">52</p>
<p className="text-xs text-muted-foreground">Posts</p>
</div>
</div>
<Button className="mt-4 w-full">Follow</Button>
</CardContent>
</Card>
)
}
What You Get
- Imports: shadcn/ui components
- Default export: Standard React component
- Tailwind classes: Utility-based styling
- Placeholder content: Ready to replace with real data
What You Need to Add
- Real data: Replace placeholders
- Event handlers: onClick, onChange, etc.
- State management: If interactive
- API integration: Fetching/sending data
Component Types v0 Excels At
Cards and Content Blocks
Pricing card with three tiers:
- Basic: $9/mo, 5 features
- Pro: $29/mo, 15 features (highlighted as popular)
- Enterprise: Custom pricing, contact sales
Each tier has a feature list and CTA button.
Forms
Contact form with:
- Name, email, subject fields
- Message textarea
- Submit button with loading state
- Validation error display
Clean design with proper spacing.
Navigation
Responsive navbar with:
- Logo on left
- Navigation links in center
- Search bar
- User avatar with dropdown on right
Mobile: hamburger menu
Dashboards
Analytics dashboard header:
- Page title and date range picker
- Stats cards: Total Revenue, Orders, Customers, Growth
- Each card with icon, value, and change percentage
Data Display
User table with:
- Columns: Avatar, Name, Email, Role, Status, Actions
- Sortable headers
- Status badges (active/inactive)
- Action menu with Edit, Delete
- Pagination
Working with Variations
Why Multiple Options?
v0 generates several takes because:
- Design is subjective
- Your exact needs aren't always clear
- Different layouts suit different contexts
- Inspiration matters
Evaluating Variations
Ask yourself:
- Which layout fits my app?
- Which style matches my brand?
- Which is most user-friendly?
- Which code is cleanest?
Combining Ideas
If you like elements from different variations:
Use the layout from variation A but with the
color scheme from variation B and the button
style from variation C.
Tips for Better Results
Be Specific About Layout
❌ "A sidebar"
✅ "Vertical sidebar, 280px wide, with:
- Logo at top
- Navigation links with icons
- Collapsible sections
- User profile at bottom"
Mention Visual Details
❌ "A nice card"
✅ "Card with subtle shadow, rounded-xl corners,
white background with a thin gray border.
Hover effect that slightly lifts the card."
Specify Interactions
Include hover states on buttons and links.
The dropdown should open on click.
Show a loading spinner while submitting.
Reference Design Systems
Match the Apple design aesthetic—clean, lots
of white space, SF Pro-like typography.
Common First Projects
Portfolio Hero Section
Hero section for a developer portfolio:
- Large greeting text: "Hi, I'm [Name]"
- Animated subtitle with role titles
- Brief intro paragraph
- CTA buttons: View Work, Contact Me
- Subtle background pattern
Product Feature Section
Feature grid for a SaaS product:
- Section heading and subheading
- 6 feature cards in a 3x2 grid
- Each card: icon, title, description
- Alternating subtle background colors
Testimonial Carousel
Testimonial slider:
- Quote text
- Customer photo, name, and company
- Navigation dots
- Previous/next arrows
- Auto-rotate with pause on hover
v0 vs Other Tools
| Tool | Focus | Output |
|---|---|---|
| v0 | UI components | React + shadcn/ui |
| Bolt.new | Full apps | Complete projects |
| Lovable | Full apps | Apps with Supabase |
| Figma | Design | Design files |
v0's sweet spot: When you need production-ready UI code, not full applications.
Summary
- v0 generates UI components from natural language descriptions
- Focus on one component at a time—not full apps
- Output is React + TypeScript + Tailwind + shadcn/ui
- Multiple variations help you find the right design
- Copy-paste ready for your projects
Next Steps
Now that you understand v0's basics, let's dive into prompting techniques that produce the best results.