Beginner15 min

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:

Terminal
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:

Terminal
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:

  1. Click the Code tab
  2. Click Copy
  3. Paste into your project

Understanding v0 Output

Component Structure

v0 generates clean, organized code:

Terminal
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

Terminal
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

Terminal
Contact form with:
- Name, email, subject fields
- Message textarea
- Submit button with loading state
- Validation error display
Clean design with proper spacing.

Navigation

Terminal
Responsive navbar with:
- Logo on left
- Navigation links in center
- Search bar
- User avatar with dropdown on right
Mobile: hamburger menu

Dashboards

Terminal
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

Terminal
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:

Terminal
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

Terminal
 "A sidebar"

 "Vertical sidebar, 280px wide, with:
- Logo at top
- Navigation links with icons
- Collapsible sections
- User profile at bottom"

Mention Visual Details

Terminal
 "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

Terminal
Include hover states on buttons and links.
The dropdown should open on click.
Show a loading spinner while submitting.

Reference Design Systems

Terminal
Match the Apple design aesthetic—clean, lots
of white space, SF Pro-like typography.

Common First Projects

Portfolio Hero Section

Terminal
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

Terminal
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

Terminal
Testimonial slider:
- Quote text
- Customer photo, name, and company
- Navigation dots
- Previous/next arrows
- Auto-rotate with pause on hover

v0 vs Other Tools

ToolFocusOutput
v0UI componentsReact + shadcn/ui
Bolt.newFull appsComplete projects
LovableFull appsApps with Supabase
FigmaDesignDesign 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.

Mark this lesson as complete to track your progress