We use cookies to enhance your experience on the site
CodeWorlds
Back to collections
Guide30 min read

Framer - No-Code Website Builder z Profesjonalnymi Animacjami

Framer is a no-code platform for creating responsive websites with professional animations, CMS and hosting. Design visually and publish with one click.

Framer - No-Code Website Builder z Profesjonalnymi Animacjami

Czym jest Framer?

Framer to rewolucyjna platforma do tworzenia stron internetowych bez pisania kodu, ktΓ³ra Ε‚Δ…czy moc profesjonalnego narzΔ™dzia designerskiego z prostotΔ… publikacji jednym klikniΔ™ciem. ZaΕ‚oΕΌona w 2013 roku przez Koen Bok i Jorn van Dijk, Framer przeszedΕ‚ transformacjΔ™ z narzΔ™dzia do prototypowania (Framer Classic) do peΕ‚noprawnego website buildera, ktΓ³ry dziΕ› konkuruje z Webflow, Squarespace i Wix.

To co wyrΓ³ΕΌnia Framer na tle konkurencji to niezrΓ³wnana jakoΕ›Δ‡ animacji. Pod spodem Framer wykorzystuje Framer Motion - najpopularniejszΔ… bibliotekΔ™ animacji dla React, z ktΓ³rej korzystajΔ… tysiΔ…ce deweloperΓ³w na caΕ‚ym Ε›wiecie. DziΔ™ki temu strony tworzone w Framer majΔ… animacje klasy produkcyjnej - pΕ‚ynne 60fps transitions, micro-interactions i hover effects, ktΓ³re zwykle wymagaΕ‚yby tygodni pracy programisty.

Framer generuje prawdziwy, zoptymalizowany kod React, co przekΕ‚ada siΔ™ na doskonaΕ‚Δ… wydajnoΕ›Δ‡ i SEO. Strony sΔ… automatycznie hostowane na globalnej sieci CDN, osiΔ…gajΔ…c wyniki Lighthouse czΔ™sto powyΕΌej 95/100.

Dlaczego Framer?

Kluczowe zalety

  1. Design-first Approach - Projektuj jak w Figma, publikuj jak WordPress
  2. Animacje premium - Framer Motion pod spodem daje jakoΕ›Δ‡ produkcyjnΔ…
  3. Zero kodu - Wszystko przez visual editor
  4. Wbudowany CMS - Blog, portfolio, produkty bez zewnΔ™trznych narzΔ™dzi
  5. Hosting included - CDN, SSL, custom domains w pakiecie
  6. SEO-ready - Meta tags, OG images, sitemap automatycznie
  7. Responsive - Breakpoints i auto-layout jak w Figma
  8. Components - Wielokrotnie uΕΌywalne bloki z variants

Framer vs Webflow vs Squarespace vs Wix

CechaFramerWebflowSquarespaceWix
AnimacjeNajlepszeBardzo dobrePodstawowePodstawowe
Learning curveŁatwyTrudnyŁatwyŁatwy
CMSProsty, elastycznyZaawansowanyProstyProsty
Custom codeTak (React)Tak (HTML/JS)OgraniczonyVelo
SEOŚwietneŚwietneDobreŚrednie
Performance95+ Lighthouse80-9570-8560-80
Cena (start)$5/mo$14/mo$16/mo$16/mo
TargetDesigners, DevsDevelopersMaΕ‚e biznesyBeginners

RozpoczΔ™cie pracy z Framer

Tworzenie konta i projektu

Code
TEXT
1. PrzejdΕΊ na framer.com
2. Zarejestruj siΔ™ (Google, GitHub lub email)
3. Kliknij "New Project"
4. Wybierz template lub zacznij od zera

Interfejs Framer:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  [Layers]  β”‚     Canvas      β”‚  [Properties]        β”‚
β”‚            β”‚                 β”‚                      β”‚
β”‚  β€’ Page 1  β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚  Layout:             β”‚
β”‚    β€’ Frame β”‚   β”‚         β”‚   β”‚  β”œβ”€β”€ Width: Auto     β”‚
β”‚      β€’ Nav β”‚   β”‚  Your   β”‚   β”‚  β”œβ”€β”€ Height: Auto    β”‚
β”‚      β€’ Heroβ”‚   β”‚  Design β”‚   β”‚  └── Direction: V    β”‚
β”‚      β€’ CTA β”‚   β”‚         β”‚   β”‚                      β”‚
β”‚            β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚  Fill: #FFFFFF       β”‚
β”‚            β”‚                 β”‚  Effects: Shadow     β”‚
β”‚  [Assets]  β”‚   [Breakpoints] β”‚  [Interactions]      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Podstawowe elementy

Code
TEXT
FRAMER ELEMENTS:

πŸ“¦ Frame (F)
   └── Kontener - odpowiednik <div>
   └── Auto-layout: Row/Column
   └── Constraints i responsive

πŸ“ Text (T)
   └── Rich text editing
   └── Typography styles
   └── Google Fonts built-in

πŸ–ΌοΈ Image (I)
   └── Drag & drop upload
   └── Optimized delivery
   └── Alt text dla SEO

πŸ”— Link
   └── Page navigation
   └── External URLs
   └── Scroll to section

🧩 Components
   └── Reusable elements
   └── Variants
   └── Overrides

πŸ“Ή Video
   └── Self-hosted
   └── YouTube/Vimeo embed
   └── Autoplay, loop

πŸ–₯️ Code Component
   └── Custom React components
   └── npm packages

Layout i Responsive Design

Auto-layout (Stack)

Code
TEXT
Framer Stack = CSS Flexbox

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  STACK PROPERTIES                                    β”‚
β”‚                                                      β”‚
β”‚  Direction:                                         β”‚
β”‚  β”œβ”€β”€ Horizontal (Row)    β†’ β†’ β†’                     β”‚
β”‚  β”œβ”€β”€ Vertical (Column)   ↓                         β”‚
β”‚  └── Wrap                β†’ β†’ ↓ β†’                   β”‚
β”‚                                                      β”‚
β”‚  Alignment:                                         β”‚
β”‚  β”œβ”€β”€ Start   [β–  β–  β–         ]                       β”‚
β”‚  β”œβ”€β”€ Center  [   β–  β–  β–      ]                       β”‚
β”‚  β”œβ”€β”€ End     [        β–  β–  β– ]                       β”‚
β”‚  └── Space Between [β–     β–     β– ]                   β”‚
β”‚                                                      β”‚
β”‚  Distribution:                                      β”‚
β”‚  β”œβ”€β”€ Start   ↑ β–  β–  β–                                β”‚
β”‚  β”œβ”€β”€ Center  β–  β–  β–                                  β”‚
β”‚  └── End     β–  β–  β–  ↓                               β”‚
β”‚                                                      β”‚
β”‚  Gap: 16px                                          β”‚
β”‚  Padding: 24px                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Breakpoints

Code
TEXT
RESPONSIVE BREAKPOINTS:

Desktop (default): 1200px+
β”œβ”€β”€ Tablet: 810px - 1199px
β”œβ”€β”€ Mobile: 390px - 809px
└── Custom: dowolna wartoΕ›Δ‡

Ustawienia per breakpoint:
- Visibility (show/hide elements)
- Layout direction
- Font sizes
- Spacing
- Image sizes

PrzykΕ‚ad Card:
Desktop: Row layout, 3 columns
Tablet: Row layout, 2 columns
Mobile: Column layout, 1 column

Constraints

Code
CSS
/* Odpowiednik CSS constraints w Framer */

/* Fill Container (stretch) */
.element {
  width: 100%;
  height: 100%;
}

/* Hug Content (fit-content) */
.element {
  width: fit-content;
  height: fit-content;
}

/* Fixed */
.element {
  width: 200px;
  height: 100px;
}

/* Relative (%) */
.element {
  width: 50%;
  min-width: 200px;
  max-width: 600px;
}

Animacje w Framer

Hover Effects

Code
TEXT
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  HOVER INTERACTIONS                                  β”‚
β”‚                                                      β”‚
β”‚  1. Zaznacz element                                 β”‚
β”‚  2. Properties β†’ Interactions β†’ Hover               β”‚
β”‚  3. Ustaw zmiany:                                   β”‚
β”‚                                                      β”‚
β”‚  Transform:                                         β”‚
β”‚  β”œβ”€β”€ Scale: 1.05                                    β”‚
β”‚  β”œβ”€β”€ Rotate: 5deg                                   β”‚
β”‚  β”œβ”€β”€ X/Y offset: 0, -4px                           β”‚
β”‚                                                      β”‚
β”‚  Style:                                             β”‚
β”‚  β”œβ”€β”€ Opacity: 0.9                                   β”‚
β”‚  β”œβ”€β”€ Background: #darkerColor                       β”‚
β”‚  β”œβ”€β”€ Shadow: larger                                 β”‚
β”‚                                                      β”‚
β”‚  Transition:                                        β”‚
β”‚  β”œβ”€β”€ Type: Spring / Tween                          β”‚
β”‚  β”œβ”€β”€ Duration: 0.3s                                 β”‚
β”‚  β”œβ”€β”€ Ease: ease-out                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Page Transitions

Code
TEXT
TRANSITION TYPES:

1. Instant
   └── Brak animacji (default dla linkΓ³w)

2. Fade
   └── Opacity: 1 β†’ 0 β†’ 1
   └── Duration: 0.3s

3. Slide
   └── Directions: left, right, up, down
   └── Push lub overlay

4. Scale
   └── Scale: 1 β†’ 0.95 β†’ 1
   └── Z gΕ‚Δ™bokoΕ›ciΔ…

5. Custom
   └── Kombinacja powyΕΌszych
   └── Staggered animations

Scroll Animations

Code
JavaScript
// Framer scroll animations (visual editor)

// Scroll Into View - animacja przy scrollowaniu
{
  "trigger": "onScrollIntoView",
  "initial": {
    "opacity": 0,
    "y": 50
  },
  "animate": {
    "opacity": 1,
    "y": 0
  },
  "transition": {
    "duration": 0.6,
    "ease": "easeOut"
  }
}

// Parallax Effect
{
  "trigger": "onScroll",
  "parallax": {
    "speed": 0.5,  // 0 = static, 1 = scroll speed
    "direction": "up"
  }
}

// Scroll Progress Animation
{
  "trigger": "onScrollProgress",
  "transform": {
    "rotate": [0, 360],  // Start to end values
    "scale": [1, 1.2]
  }
}

Variants i States

Code
TEXT
COMPONENT VARIANTS:

Button Component:
β”œβ”€β”€ Variant: Primary
β”‚   β”œβ”€β”€ Background: #3366FF
β”‚   β”œβ”€β”€ Color: white
β”‚   └── States: default, hover, pressed, disabled
β”œβ”€β”€ Variant: Secondary
β”‚   β”œβ”€β”€ Background: transparent
β”‚   β”œβ”€β”€ Border: #3366FF
β”‚   └── States: default, hover, pressed, disabled
└── Variant: Ghost
    β”œβ”€β”€ Background: transparent
    β”œβ”€β”€ Color: #3366FF
    └── States: default, hover, pressed, disabled

Każdy state może mieć inne:
- Kolory
- Shadows
- Scale
- Opacity
- Border

Framer CMS

Collections

Code
TEXT
CMS STRUCTURE:

Collection: Blog Posts
β”œβ”€β”€ Title (text, required)
β”œβ”€β”€ Slug (auto-generated)
β”œβ”€β”€ Content (rich text)
β”œβ”€β”€ Cover Image (image)
β”œβ”€β”€ Author (reference β†’ Authors)
β”œβ”€β”€ Category (reference β†’ Categories)
β”œβ”€β”€ Published Date (date)
β”œβ”€β”€ Tags (multi-reference β†’ Tags)
└── Featured (boolean)

Collection: Authors
β”œβ”€β”€ Name (text)
β”œβ”€β”€ Avatar (image)
β”œβ”€β”€ Bio (text)
└── Social Links (link)

Collection: Categories
β”œβ”€β”€ Name (text)
β”œβ”€β”€ Color (color)
└── Icon (image)

Dynamic Pages

Code
TEXT
DYNAMIC PAGE SETUP:

1. Create Collection (np. "Blog Posts")
2. Add fields (title, content, image, etc.)
3. Create CMS Page:
   - New Page β†’ CMS Page
   - Connect to Collection

4. Design template:
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  {coverImage}                           β”‚
   β”‚                                         β”‚
   β”‚  {title}           {publishedDate}      β”‚
   β”‚                                         β”‚
   β”‚  {content}                              β”‚
   β”‚                                         β”‚
   β”‚  Author: {author.name}                  β”‚
   β”‚  Tags: {tags}                           β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5. URL structure: /blog/{slug}

6. Collection List (na stronie gΕ‚Γ³wnej):
   - Display: Grid/List
   - Filter: category == "Tech"
   - Sort: publishedDate DESC
   - Limit: 6

CMS Filters i Sorting

Code
JavaScript
// Filtrowanie collection list

// Po wartoΕ›ci pola
{
  "filter": {
    "field": "category",
    "operator": "equals",
    "value": "Technology"
  }
}

// Po boolean
{
  "filter": {
    "field": "featured",
    "operator": "equals",
    "value": true
  }
}

// Po dacie
{
  "filter": {
    "field": "publishedDate",
    "operator": "lessThan",
    "value": "now"
  }
}

// Sortowanie
{
  "sort": {
    "field": "publishedDate",
    "direction": "desc"
  },
  "limit": 10
}

Custom Code w Framer

Code Components

Code
TypeScript
// Tworzenie custom component w Framer
// Components β†’ New Component β†’ Code Component

import { addPropertyControls, ControlType } from "framer"

interface Props {
  text: string
  backgroundColor: string
  onClick: () => void
}

export function CustomButton(props: Props) {
  const { text, backgroundColor, onClick } = props

  return (
    <button
      onClick={onClick}
      style={{
        backgroundColor,
        color: "white",
        padding: "12px 24px",
        border: "none",
        borderRadius: "8px",
        fontSize: "16px",
        fontWeight: 600,
        cursor: "pointer",
        transition: "transform 0.2s, box-shadow 0.2s",
      }}
      onMouseEnter={(e) => {
        e.currentTarget.style.transform = "translateY(-2px)"
        e.currentTarget.style.boxShadow = "0 4px 12px rgba(0,0,0,0.15)"
      }}
      onMouseLeave={(e) => {
        e.currentTarget.style.transform = "translateY(0)"
        e.currentTarget.style.boxShadow = "none"
      }}
    >
      {text}
    </button>
  )
}

// Property Controls - edytowalne w UI
addPropertyControls(CustomButton, {
  text: {
    type: ControlType.String,
    title: "Button Text",
    defaultValue: "Click me",
  },
  backgroundColor: {
    type: ControlType.Color,
    title: "Background",
    defaultValue: "#3366FF",
  },
  onClick: {
    type: ControlType.EventHandler,
  },
})

UΕΌywanie npm packages

Code
TypeScript
// PrzykΕ‚ad z zewnΔ™trznΔ… bibliotekΔ…
import { motion } from "framer-motion"
import confetti from "canvas-confetti"

export function CelebrationButton({ text }: { text: string }) {
  const handleClick = () => {
    confetti({
      particleCount: 100,
      spread: 70,
      origin: { y: 0.6 },
    })
  }

  return (
    <motion.button
      onClick={handleClick}
      whileHover={{ scale: 1.05 }}
      whileTap={{ scale: 0.95 }}
      style={{
        background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
        color: "white",
        border: "none",
        padding: "16px 32px",
        borderRadius: "12px",
        fontSize: "18px",
        fontWeight: "bold",
        cursor: "pointer",
      }}
    >
      {text}
    </motion.button>
  )
}

Code Overrides

Code
TypeScript
// Code Overrides - modyfikacja istniejΔ…cych elementΓ³w
// Assets β†’ Code β†’ New Override

import type { ComponentType } from "react"

// Animacja przy scroll
export function withScrollAnimation(Component: ComponentType): ComponentType {
  return (props: any) => {
    return (
      <Component
        {...props}
        initial={{ opacity: 0, y: 20 }}
        whileInView={{ opacity: 1, y: 0 }}
        viewport={{ once: true }}
        transition={{ duration: 0.5 }}
      />
    )
  }
}

// Counter animation
export function withCounter(Component: ComponentType): ComponentType {
  return (props: any) => {
    const [count, setCount] = React.useState(0)

    React.useEffect(() => {
      const target = 1000
      const duration = 2000
      const steps = 60
      const increment = target / steps
      let current = 0

      const timer = setInterval(() => {
        current += increment
        if (current >= target) {
          setCount(target)
          clearInterval(timer)
        } else {
          setCount(Math.floor(current))
        }
      }, duration / steps)

      return () => clearInterval(timer)
    }, [])

    return <Component {...props} text={count.toLocaleString()} />
  }
}

SEO i Performance

SEO Settings

Code
TEXT
PAGE SEO SETTINGS:

1. Page Settings β†’ SEO
   β”œβ”€β”€ Title: "Your Page Title | Brand"
   β”œβ”€β”€ Description: "Meta description (155 chars)"
   β”œβ”€β”€ Open Graph Image: 1200x630px
   └── Favicon: 32x32px

2. Site Settings β†’ SEO
   β”œβ”€β”€ Site Title
   β”œβ”€β”€ Site Description
   β”œβ”€β”€ Default OG Image
   β”œβ”€β”€ Robots.txt (auto)
   └── Sitemap.xml (auto)

3. Advanced:
   β”œβ”€β”€ Canonical URL
   β”œβ”€β”€ No-index option
   └── Custom meta tags

Performance Optimization

Code
TEXT
FRAMER PERFORMANCE FEATURES:

1. Automatic optimizations:
   β”œβ”€β”€ Image compression (WebP)
   β”œβ”€β”€ Lazy loading
   β”œβ”€β”€ Code splitting
   β”œβ”€β”€ Tree shaking
   └── Minification

2. CDN hosting:
   β”œβ”€β”€ Global edge network
   β”œβ”€β”€ Automatic SSL
   └── HTTP/2

3. Core Web Vitals:
   β”œβ”€β”€ LCP: < 2.5s (Largest Contentful Paint)
   β”œβ”€β”€ FID: < 100ms (First Input Delay)
   └── CLS: < 0.1 (Cumulative Layout Shift)

4. Tips for better performance:
   β”œβ”€β”€ Optimize images before upload
   β”œβ”€β”€ Limit animations on mobile
   β”œβ”€β”€ Use system fonts when possible
   β”œβ”€β”€ Minimize code components
   └── Enable caching for CMS

Integracje

Built-in Integrations

Code
TEXT
NATIVE INTEGRATIONS:

Analytics:
β”œβ”€β”€ Google Analytics 4
β”œβ”€β”€ Plausible
β”œβ”€β”€ Fathom
└── Custom scripts

Forms:
β”œβ”€β”€ Framer Forms (native)
β”œβ”€β”€ Formspree
β”œβ”€β”€ Typeform embed
└── Tally

E-commerce:
β”œβ”€β”€ Stripe (payments)
β”œβ”€β”€ Gumroad
β”œβ”€β”€ Lemonsqueezy
└── Shopify (embed)

Marketing:
β”œβ”€β”€ Mailchimp
β”œβ”€β”€ ConvertKit
β”œβ”€β”€ HubSpot
└── Intercom

Authentication:
β”œβ”€β”€ Clerk
β”œβ”€β”€ Auth0
└── Custom OAuth

Framer Forms

Code
TEXT
FRAMER FORMS SETUP:

1. Add Form component
2. Configure fields:
   β”œβ”€β”€ Text Input
   β”œβ”€β”€ Email Input
   β”œβ”€β”€ Textarea
   β”œβ”€β”€ Select/Dropdown
   β”œβ”€β”€ Checkbox
   β”œβ”€β”€ Radio buttons
   └── File upload

3. Success/Error states:
   β”œβ”€β”€ Success message
   β”œβ”€β”€ Redirect URL
   └── Error handling

4. Submissions:
   β”œβ”€β”€ Email notification
   β”œβ”€β”€ Webhook integration
   └── Framer dashboard

PrzykΕ‚ad:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Contact Us                             β”‚
β”‚                                         β”‚
β”‚  Name:     [________________]           β”‚
β”‚  Email:    [________________]           β”‚
β”‚  Message:  [________________]           β”‚
β”‚            [________________]           β”‚
β”‚                                         β”‚
β”‚  [Submit]                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Custom Embed

Code
HTML
<!-- Embedding external content -->

<!-- YouTube -->
<iframe
  src="https://www.youtube.com/embed/VIDEO_ID"
  width="100%"
  height="400"
  frameborder="0"
  allowfullscreen
></iframe>

<!-- Calendly -->
<div class="calendly-inline-widget"
  data-url="https://calendly.com/YOUR_LINK"
  style="min-width:320px;height:630px;">
</div>

<!-- Custom scripts in <head> -->
<script>
  // Google Tag Manager, etc.
</script>

Publishing i Domains

Publishing Options

Code
TEXT
PUBLISH FLOW:

1. Preview
   └── framer.app preview link
   └── Share with clients for review

2. Publish to framer.site
   └── yoursite.framer.site (free)
   └── Instant deployment

3. Custom Domain
   └── Add domain in settings
   └── Update DNS records:
       A Record: @ β†’ 76.76.21.21
       CNAME: www β†’ cname.framer.website
   └── SSL automatic

4. Staging vs Production
   └── Publish to staging first
   └── Review changes
   └── Promote to production

Domain Configuration

Code
TEXT
DNS SETTINGS:

For apex domain (example.com):
Type: A
Name: @
Value: 76.76.21.21

For www subdomain:
Type: CNAME
Name: www
Value: cname.framer.website

For subdomains (blog.example.com):
Type: CNAME
Name: blog
Value: cname.framer.website

SSL Certificate:
└── Automatic provisioning
└── Let's Encrypt
└── Auto-renewal

Templates i Components

Framer Templates

Code
TEXT
TEMPLATE CATEGORIES:

Landing Pages:
β”œβ”€β”€ SaaS
β”œβ”€β”€ Agency
β”œβ”€β”€ Product launch
β”œβ”€β”€ App download
└── Coming soon

Portfolio:
β”œβ”€β”€ Designer
β”œβ”€β”€ Developer
β”œβ”€β”€ Photographer
β”œβ”€β”€ Artist
└── Freelancer

Business:
β”œβ”€β”€ Startup
β”œβ”€β”€ Corporate
β”œβ”€β”€ Restaurant
β”œβ”€β”€ Real estate
└── Consulting

Blog/Magazine:
β”œβ”€β”€ Personal blog
β”œβ”€β”€ News site
β”œβ”€β”€ Documentation
└── Knowledge base

E-commerce:
β”œβ”€β”€ Product showcase
β”œβ”€β”€ Digital products
└── Services

Component Libraries

Code
TEXT
POPULAR COMPONENT PACKS:

Buttons:
β”œβ”€β”€ Primary, Secondary, Ghost
β”œβ”€β”€ With icons
β”œβ”€β”€ Loading states
└── Sizes: sm, md, lg

Cards:
β”œβ”€β”€ Product cards
β”œβ”€β”€ Blog cards
β”œβ”€β”€ Pricing cards
β”œβ”€β”€ Team cards
└── Testimonial cards

Navigation:
β”œβ”€β”€ Navbar (desktop)
β”œβ”€β”€ Mobile menu
β”œβ”€β”€ Sidebar
β”œβ”€β”€ Breadcrumbs
└── Pagination

Forms:
β”œβ”€β”€ Contact form
β”œβ”€β”€ Newsletter signup
β”œβ”€β”€ Login/Register
└── Search

Sections:
β”œβ”€β”€ Hero sections
β”œβ”€β”€ Feature grids
β”œβ”€β”€ Pricing tables
β”œβ”€β”€ FAQ accordions
β”œβ”€β”€ Footer variants
└── CTA sections

Framer dla zespoΕ‚Γ³w

Collaboration Features

Code
TEXT
TEAM FEATURES:

1. Real-time editing
   └── Multiple editors
   └── Cursor presence
   └── Live changes

2. Comments
   └── Pin to elements
   └── Thread discussions
   └── @mentions
   └── Resolve/reopen

3. Version history
   └── Auto-save
   └── Named versions
   └── Restore previous

4. Permissions:
   └── Owner (full access)
   └── Editor (edit + publish)
   └── Viewer (view only)
   └── Commenter

Branching (Beta)

Code
TEXT
BRANCHING WORKFLOW:

Main branch (production)
β”‚
β”œβ”€β”€ Feature branch: "new-homepage"
β”‚   └── Make changes
β”‚   └── Preview independently
β”‚   └── Merge when ready
β”‚
└── Feature branch: "pricing-update"
    └── Isolated environment
    └── No conflicts
    └── Safe experimentation

Cennik

PlanCenaZawartoΕ›Δ‡
Free$0/mo1 projekt, framer.site subdomain
Mini$5/moCustom domain, basic analytics
Basic$15/moCMS, forms, more pages
Pro$30/moAdvanced CMS, password protection
TeamCustomCollaboration, branching, SSO

Co zawiera kaΕΌdy plan:

Free:

  • 1 projekt
  • framer.site subdomain
  • Unlimited pages (no CMS)
  • Basic templates
  • Community support

Mini ($5/mo):

  • Custom domain
  • 1,000 monthly visits included
  • Basic analytics
  • Remove Framer badge

Basic ($15/mo):

  • Everything in Mini
  • 10,000 monthly visits
  • CMS (3 collections)
  • Forms (100 submissions/mo)
  • Sitemap, robots.txt

Pro ($30/mo):

  • Everything in Basic
  • 50,000 monthly visits
  • Unlimited CMS collections
  • Password protection
  • Staging environment
  • Advanced analytics

FAQ - NajczΔ™Ε›ciej zadawane pytania

Czy Framer jest lepszy od Webflow?

To zaleΕΌy od potrzeb. Framer jest lepszy w animacjach i Ε‚atwiejszy do nauki. Webflow oferuje bardziej zaawansowany CMS i wiΔ™kszΔ… kontrolΔ™ nad kodem. Dla landing pages i portfolio - Framer. Dla duΕΌych stron z CMS - Webflow.

Czy mogę eksportować kod z Framer?

Nie, Framer nie oferuje eksportu kodu. Strony są hostowane na platformie Framer. Możesz jednak używać custom code components i integracji.

Czy Framer jest dobry dla SEO?

Tak, Framer generuje semantyczny HTML, automatyczne sitemaps, meta tags i ma Ε›wietnΔ… wydajnoΕ›Δ‡. Strony czΔ™sto osiΔ…gajΔ… 90+ w Lighthouse.

Czy mogę użyć Framer do sklepu internetowego?

Framer nie jest pełną platformą e-commerce, ale możesz integrować Stripe dla płatności lub embedować Shopify produkty. Dla prostych digital products wystarczy.

Jak szybko mogę nauczyć się Framer?

Podstawy w 1-2 dni. JeΕ›li znasz Figma, przejΕ›cie jest naturalne. Zaawansowane funkcje (CMS, code components) wymagajΔ… wiΔ™cej czasu.

Czy Framer dziaΕ‚a offline?

Nie, Framer wymaga poΕ‚Δ…czenia z internetem. Projekty sΔ… przechowywane w chmurze.

Czy mogΔ™ przenieΕ›Δ‡ stronΔ™ z Webflow do Framer?

Nie ma automatycznej migracji. Trzeba odtworzyć design ręcznie. Struktura i koncepty są podobne, więc przejście nie jest trudne.

Podsumowanie

Framer to nowoczesna platforma website builder oferujΔ…ca:

  • Design-first approach z interfejsem jak Figma
  • Najlepsze animacje dziΔ™ki Framer Motion
  • Wbudowany CMS dla blogΓ³w i portfolio
  • Hosting i CDN w cenie
  • SEO-ready z automatycznym sitemap
  • Custom code dla zaawansowanych potrzeb
  • Responsive design z breakpoints

Idealne rozwiązanie dla designerów i marketerów, którzy chcą tworzyć piękne, szybkie strony bez kodowania.


Framer - no-code website builder with professional animations

What is Framer?

Framer is a revolutionary platform for creating websites without writing code that combines the power of a professional design tool with one-click publishing simplicity. Founded in 2013 by Koen Bok and Jorn van Dijk, Framer has undergone a transformation from a prototyping tool (Framer Classic) into a full-fledged website builder that today competes with Webflow, Squarespace and Wix.

What sets Framer apart from the competition is its unmatched animation quality. Under the hood, Framer uses Framer Motion - the most popular animation library for React, used by thousands of developers worldwide. Thanks to this, websites built with Framer have production-grade animations - smooth 60fps transitions, micro-interactions and hover effects that would typically require weeks of developer work.

Framer generates real, optimized React code, which translates into excellent performance and SEO. Sites are automatically hosted on a global CDN network, achieving Lighthouse scores often above 95/100.

Why Framer?

Key advantages

  1. Design-first approach - Design like in Figma, publish like WordPress
  2. Premium animations - Framer Motion under the hood delivers production quality
  3. Zero code - Everything through the visual editor
  4. Built-in CMS - Blog, portfolio, products without external tools
  5. Hosting included - CDN, SSL, custom domains in the package
  6. SEO-ready - Meta tags, OG images, sitemap automatically
  7. Responsive - Breakpoints and auto-layout like in Figma
  8. Components - Reusable blocks with variants

Framer vs Webflow vs Squarespace vs Wix

FeatureFramerWebflowSquarespaceWix
AnimationsBestVery goodBasicBasic
Learning curveEasyDifficultEasyEasy
CMSSimple, flexibleAdvancedSimpleSimple
Custom codeYes (React)Yes (HTML/JS)LimitedVelo
SEOExcellentExcellentGoodAverage
Performance95+ Lighthouse80-9570-8560-80
Price (start)$5/mo$14/mo$16/mo$16/mo
TargetDesigners, DevsDevelopersSmall businessesBeginners

Getting started with Framer

Creating an account and project

Code
TEXT
1. Go to framer.com
2. Sign up (Google, GitHub or email)
3. Click "New Project"
4. Choose a template or start from scratch

Framer interface:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  [Layers]  β”‚     Canvas      β”‚  [Properties]        β”‚
β”‚            β”‚                 β”‚                      β”‚
β”‚  β€’ Page 1  β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚  Layout:             β”‚
β”‚    β€’ Frame β”‚   β”‚         β”‚   β”‚  β”œβ”€β”€ Width: Auto     β”‚
β”‚      β€’ Nav β”‚   β”‚  Your   β”‚   β”‚  β”œβ”€β”€ Height: Auto    β”‚
β”‚      β€’ Heroβ”‚   β”‚  Design β”‚   β”‚  └── Direction: V    β”‚
β”‚      β€’ CTA β”‚   β”‚         β”‚   β”‚                      β”‚
β”‚            β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚  Fill: #FFFFFF       β”‚
β”‚            β”‚                 β”‚  Effects: Shadow     β”‚
β”‚  [Assets]  β”‚   [Breakpoints] β”‚  [Interactions]      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Basic elements

Code
TEXT
FRAMER ELEMENTS:

πŸ“¦ Frame (F)
   └── Container - equivalent of <div>
   └── Auto-layout: Row/Column
   └── Constraints and responsive

πŸ“ Text (T)
   └── Rich text editing
   └── Typography styles
   └── Google Fonts built-in

πŸ–ΌοΈ Image (I)
   └── Drag & drop upload
   └── Optimized delivery
   └── Alt text for SEO

πŸ”— Link
   └── Page navigation
   └── External URLs
   └── Scroll to section

🧩 Components
   └── Reusable elements
   └── Variants
   └── Overrides

πŸ“Ή Video
   └── Self-hosted
   └── YouTube/Vimeo embed
   └── Autoplay, loop

πŸ–₯️ Code Component
   └── Custom React components
   └── npm packages

Layout and responsive design

Auto-layout (Stack)

Code
TEXT
Framer Stack = CSS Flexbox

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  STACK PROPERTIES                                    β”‚
β”‚                                                      β”‚
β”‚  Direction:                                         β”‚
β”‚  β”œβ”€β”€ Horizontal (Row)    β†’ β†’ β†’                     β”‚
β”‚  β”œβ”€β”€ Vertical (Column)   ↓                         β”‚
β”‚  └── Wrap                β†’ β†’ ↓ β†’                   β”‚
β”‚                                                      β”‚
β”‚  Alignment:                                         β”‚
β”‚  β”œβ”€β”€ Start   [β–  β–  β–         ]                       β”‚
β”‚  β”œβ”€β”€ Center  [   β–  β–  β–      ]                       β”‚
β”‚  β”œβ”€β”€ End     [        β–  β–  β– ]                       β”‚
β”‚  └── Space Between [β–     β–     β– ]                   β”‚
β”‚                                                      β”‚
β”‚  Distribution:                                      β”‚
β”‚  β”œβ”€β”€ Start   ↑ β–  β–  β–                                β”‚
β”‚  β”œβ”€β”€ Center  β–  β–  β–                                  β”‚
β”‚  └── End     β–  β–  β–  ↓                               β”‚
β”‚                                                      β”‚
β”‚  Gap: 16px                                          β”‚
β”‚  Padding: 24px                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Breakpoints

Code
TEXT
RESPONSIVE BREAKPOINTS:

Desktop (default): 1200px+
β”œβ”€β”€ Tablet: 810px - 1199px
β”œβ”€β”€ Mobile: 390px - 809px
└── Custom: any value

Settings per breakpoint:
- Visibility (show/hide elements)
- Layout direction
- Font sizes
- Spacing
- Image sizes

Card example:
Desktop: Row layout, 3 columns
Tablet: Row layout, 2 columns
Mobile: Column layout, 1 column

Constraints

Code
CSS
/* CSS constraints equivalent in Framer */

/* Fill Container (stretch) */
.element {
  width: 100%;
  height: 100%;
}

/* Hug Content (fit-content) */
.element {
  width: fit-content;
  height: fit-content;
}

/* Fixed */
.element {
  width: 200px;
  height: 100px;
}

/* Relative (%) */
.element {
  width: 50%;
  min-width: 200px;
  max-width: 600px;
}

Animations in Framer

Hover effects

Code
TEXT
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  HOVER INTERACTIONS                                  β”‚
β”‚                                                      β”‚
β”‚  1. Select element                                  β”‚
β”‚  2. Properties β†’ Interactions β†’ Hover               β”‚
β”‚  3. Set changes:                                    β”‚
β”‚                                                      β”‚
β”‚  Transform:                                         β”‚
β”‚  β”œβ”€β”€ Scale: 1.05                                    β”‚
β”‚  β”œβ”€β”€ Rotate: 5deg                                   β”‚
β”‚  β”œβ”€β”€ X/Y offset: 0, -4px                           β”‚
β”‚                                                      β”‚
β”‚  Style:                                             β”‚
β”‚  β”œβ”€β”€ Opacity: 0.9                                   β”‚
β”‚  β”œβ”€β”€ Background: #darkerColor                       β”‚
β”‚  β”œβ”€β”€ Shadow: larger                                 β”‚
β”‚                                                      β”‚
β”‚  Transition:                                        β”‚
β”‚  β”œβ”€β”€ Type: Spring / Tween                          β”‚
β”‚  β”œβ”€β”€ Duration: 0.3s                                 β”‚
β”‚  β”œβ”€β”€ Ease: ease-out                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Page transitions

Code
TEXT
TRANSITION TYPES:

1. Instant
   └── No animation (default for links)

2. Fade
   └── Opacity: 1 β†’ 0 β†’ 1
   └── Duration: 0.3s

3. Slide
   └── Directions: left, right, up, down
   └── Push or overlay

4. Scale
   └── Scale: 1 β†’ 0.95 β†’ 1
   └── With depth

5. Custom
   └── Combination of the above
   └── Staggered animations

Scroll animations

Code
JavaScript
// Framer scroll animations (visual editor)

// Scroll Into View - animation on scroll
{
  "trigger": "onScrollIntoView",
  "initial": {
    "opacity": 0,
    "y": 50
  },
  "animate": {
    "opacity": 1,
    "y": 0
  },
  "transition": {
    "duration": 0.6,
    "ease": "easeOut"
  }
}

// Parallax Effect
{
  "trigger": "onScroll",
  "parallax": {
    "speed": 0.5,  // 0 = static, 1 = scroll speed
    "direction": "up"
  }
}

// Scroll Progress Animation
{
  "trigger": "onScrollProgress",
  "transform": {
    "rotate": [0, 360],  // Start to end values
    "scale": [1, 1.2]
  }
}

Variants and states

Code
TEXT
COMPONENT VARIANTS:

Button Component:
β”œβ”€β”€ Variant: Primary
β”‚   β”œβ”€β”€ Background: #3366FF
β”‚   β”œβ”€β”€ Color: white
β”‚   └── States: default, hover, pressed, disabled
β”œβ”€β”€ Variant: Secondary
β”‚   β”œβ”€β”€ Background: transparent
β”‚   β”œβ”€β”€ Border: #3366FF
β”‚   └── States: default, hover, pressed, disabled
└── Variant: Ghost
    β”œβ”€β”€ Background: transparent
    β”œβ”€β”€ Color: #3366FF
    └── States: default, hover, pressed, disabled

Each state can have different:
- Colors
- Shadows
- Scale
- Opacity
- Border

Framer CMS

Collections

Code
TEXT
CMS STRUCTURE:

Collection: Blog Posts
β”œβ”€β”€ Title (text, required)
β”œβ”€β”€ Slug (auto-generated)
β”œβ”€β”€ Content (rich text)
β”œβ”€β”€ Cover Image (image)
β”œβ”€β”€ Author (reference β†’ Authors)
β”œβ”€β”€ Category (reference β†’ Categories)
β”œβ”€β”€ Published Date (date)
β”œβ”€β”€ Tags (multi-reference β†’ Tags)
└── Featured (boolean)

Collection: Authors
β”œβ”€β”€ Name (text)
β”œβ”€β”€ Avatar (image)
β”œβ”€β”€ Bio (text)
└── Social Links (link)

Collection: Categories
β”œβ”€β”€ Name (text)
β”œβ”€β”€ Color (color)
└── Icon (image)

Dynamic pages

Code
TEXT
DYNAMIC PAGE SETUP:

1. Create Collection (e.g. "Blog Posts")
2. Add fields (title, content, image, etc.)
3. Create CMS Page:
   - New Page β†’ CMS Page
   - Connect to Collection

4. Design template:
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚  {coverImage}                           β”‚
   β”‚                                         β”‚
   β”‚  {title}           {publishedDate}      β”‚
   β”‚                                         β”‚
   β”‚  {content}                              β”‚
   β”‚                                         β”‚
   β”‚  Author: {author.name}                  β”‚
   β”‚  Tags: {tags}                           β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5. URL structure: /blog/{slug}

6. Collection List (on the main page):
   - Display: Grid/List
   - Filter: category == "Tech"
   - Sort: publishedDate DESC
   - Limit: 6

CMS filters and sorting

Code
JavaScript
// Filtering collection list

// By field value
{
  "filter": {
    "field": "category",
    "operator": "equals",
    "value": "Technology"
  }
}

// By boolean
{
  "filter": {
    "field": "featured",
    "operator": "equals",
    "value": true
  }
}

// By date
{
  "filter": {
    "field": "publishedDate",
    "operator": "lessThan",
    "value": "now"
  }
}

// Sorting
{
  "sort": {
    "field": "publishedDate",
    "direction": "desc"
  },
  "limit": 10
}

Custom code in Framer

Code components

Code
TypeScript
// Creating a custom component in Framer
// Components β†’ New Component β†’ Code Component

import { addPropertyControls, ControlType } from "framer"

interface Props {
  text: string
  backgroundColor: string
  onClick: () => void
}

export function CustomButton(props: Props) {
  const { text, backgroundColor, onClick } = props

  return (
    <button
      onClick={onClick}
      style={{
        backgroundColor,
        color: "white",
        padding: "12px 24px",
        border: "none",
        borderRadius: "8px",
        fontSize: "16px",
        fontWeight: 600,
        cursor: "pointer",
        transition: "transform 0.2s, box-shadow 0.2s",
      }}
      onMouseEnter={(e) => {
        e.currentTarget.style.transform = "translateY(-2px)"
        e.currentTarget.style.boxShadow = "0 4px 12px rgba(0,0,0,0.15)"
      }}
      onMouseLeave={(e) => {
        e.currentTarget.style.transform = "translateY(0)"
        e.currentTarget.style.boxShadow = "none"
      }}
    >
      {text}
    </button>
  )
}

// Property Controls - editable in the UI
addPropertyControls(CustomButton, {
  text: {
    type: ControlType.String,
    title: "Button Text",
    defaultValue: "Click me",
  },
  backgroundColor: {
    type: ControlType.Color,
    title: "Background",
    defaultValue: "#3366FF",
  },
  onClick: {
    type: ControlType.EventHandler,
  },
})

Using npm packages

Code
TypeScript
// Example with an external library
import { motion } from "framer-motion"
import confetti from "canvas-confetti"

export function CelebrationButton({ text }: { text: string }) {
  const handleClick = () => {
    confetti({
      particleCount: 100,
      spread: 70,
      origin: { y: 0.6 },
    })
  }

  return (
    <motion.button
      onClick={handleClick}
      whileHover={{ scale: 1.05 }}
      whileTap={{ scale: 0.95 }}
      style={{
        background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
        color: "white",
        border: "none",
        padding: "16px 32px",
        borderRadius: "12px",
        fontSize: "18px",
        fontWeight: "bold",
        cursor: "pointer",
      }}
    >
      {text}
    </motion.button>
  )
}

Code overrides

Code
TypeScript
// Code Overrides - modifying existing elements
// Assets β†’ Code β†’ New Override

import type { ComponentType } from "react"

// Scroll animation
export function withScrollAnimation(Component: ComponentType): ComponentType {
  return (props: any) => {
    return (
      <Component
        {...props}
        initial={{ opacity: 0, y: 20 }}
        whileInView={{ opacity: 1, y: 0 }}
        viewport={{ once: true }}
        transition={{ duration: 0.5 }}
      />
    )
  }
}

// Counter animation
export function withCounter(Component: ComponentType): ComponentType {
  return (props: any) => {
    const [count, setCount] = React.useState(0)

    React.useEffect(() => {
      const target = 1000
      const duration = 2000
      const steps = 60
      const increment = target / steps
      let current = 0

      const timer = setInterval(() => {
        current += increment
        if (current >= target) {
          setCount(target)
          clearInterval(timer)
        } else {
          setCount(Math.floor(current))
        }
      }, duration / steps)

      return () => clearInterval(timer)
    }, [])

    return <Component {...props} text={count.toLocaleString()} />
  }
}

SEO and performance

SEO settings

Code
TEXT
PAGE SEO SETTINGS:

1. Page Settings β†’ SEO
   β”œβ”€β”€ Title: "Your Page Title | Brand"
   β”œβ”€β”€ Description: "Meta description (155 chars)"
   β”œβ”€β”€ Open Graph Image: 1200x630px
   └── Favicon: 32x32px

2. Site Settings β†’ SEO
   β”œβ”€β”€ Site Title
   β”œβ”€β”€ Site Description
   β”œβ”€β”€ Default OG Image
   β”œβ”€β”€ Robots.txt (auto)
   └── Sitemap.xml (auto)

3. Advanced:
   β”œβ”€β”€ Canonical URL
   β”œβ”€β”€ No-index option
   └── Custom meta tags

Performance optimization

Code
TEXT
FRAMER PERFORMANCE FEATURES:

1. Automatic optimizations:
   β”œβ”€β”€ Image compression (WebP)
   β”œβ”€β”€ Lazy loading
   β”œβ”€β”€ Code splitting
   β”œβ”€β”€ Tree shaking
   └── Minification

2. CDN hosting:
   β”œβ”€β”€ Global edge network
   β”œβ”€β”€ Automatic SSL
   └── HTTP/2

3. Core Web Vitals:
   β”œβ”€β”€ LCP: < 2.5s (Largest Contentful Paint)
   β”œβ”€β”€ FID: < 100ms (First Input Delay)
   └── CLS: < 0.1 (Cumulative Layout Shift)

4. Tips for better performance:
   β”œβ”€β”€ Optimize images before upload
   β”œβ”€β”€ Limit animations on mobile
   β”œβ”€β”€ Use system fonts when possible
   β”œβ”€β”€ Minimize code components
   └── Enable caching for CMS

Integrations

Built-in integrations

Code
TEXT
NATIVE INTEGRATIONS:

Analytics:
β”œβ”€β”€ Google Analytics 4
β”œβ”€β”€ Plausible
β”œβ”€β”€ Fathom
└── Custom scripts

Forms:
β”œβ”€β”€ Framer Forms (native)
β”œβ”€β”€ Formspree
β”œβ”€β”€ Typeform embed
└── Tally

E-commerce:
β”œβ”€β”€ Stripe (payments)
β”œβ”€β”€ Gumroad
β”œβ”€β”€ Lemonsqueezy
└── Shopify (embed)

Marketing:
β”œβ”€β”€ Mailchimp
β”œβ”€β”€ ConvertKit
β”œβ”€β”€ HubSpot
└── Intercom

Authentication:
β”œβ”€β”€ Clerk
β”œβ”€β”€ Auth0
└── Custom OAuth

Framer Forms

Code
TEXT
FRAMER FORMS SETUP:

1. Add Form component
2. Configure fields:
   β”œβ”€β”€ Text Input
   β”œβ”€β”€ Email Input
   β”œβ”€β”€ Textarea
   β”œβ”€β”€ Select/Dropdown
   β”œβ”€β”€ Checkbox
   β”œβ”€β”€ Radio buttons
   └── File upload

3. Success/Error states:
   β”œβ”€β”€ Success message
   β”œβ”€β”€ Redirect URL
   └── Error handling

4. Submissions:
   β”œβ”€β”€ Email notification
   β”œβ”€β”€ Webhook integration
   └── Framer dashboard

Example:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Contact Us                             β”‚
β”‚                                         β”‚
β”‚  Name:     [________________]           β”‚
β”‚  Email:    [________________]           β”‚
β”‚  Message:  [________________]           β”‚
β”‚            [________________]           β”‚
β”‚                                         β”‚
β”‚  [Submit]                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Custom embed

Code
HTML
<!-- Embedding external content -->

<!-- YouTube -->
<iframe
  src="https://www.youtube.com/embed/VIDEO_ID"
  width="100%"
  height="400"
  frameborder="0"
  allowfullscreen
></iframe>

<!-- Calendly -->
<div class="calendly-inline-widget"
  data-url="https://calendly.com/YOUR_LINK"
  style="min-width:320px;height:630px;">
</div>

<!-- Custom scripts in <head> -->
<script>
  // Google Tag Manager, etc.
</script>

Publishing and domains

Publishing options

Code
TEXT
PUBLISH FLOW:

1. Preview
   └── framer.app preview link
   └── Share with clients for review

2. Publish to framer.site
   └── yoursite.framer.site (free)
   └── Instant deployment

3. Custom Domain
   └── Add domain in settings
   └── Update DNS records:
       A Record: @ β†’ 76.76.21.21
       CNAME: www β†’ cname.framer.website
   └── SSL automatic

4. Staging vs Production
   └── Publish to staging first
   └── Review changes
   └── Promote to production

Domain configuration

Code
TEXT
DNS SETTINGS:

For apex domain (example.com):
Type: A
Name: @
Value: 76.76.21.21

For www subdomain:
Type: CNAME
Name: www
Value: cname.framer.website

For subdomains (blog.example.com):
Type: CNAME
Name: blog
Value: cname.framer.website

SSL Certificate:
└── Automatic provisioning
└── Let's Encrypt
└── Auto-renewal

Templates and components

Framer templates

Code
TEXT
TEMPLATE CATEGORIES:

Landing Pages:
β”œβ”€β”€ SaaS
β”œβ”€β”€ Agency
β”œβ”€β”€ Product launch
β”œβ”€β”€ App download
└── Coming soon

Portfolio:
β”œβ”€β”€ Designer
β”œβ”€β”€ Developer
β”œβ”€β”€ Photographer
β”œβ”€β”€ Artist
└── Freelancer

Business:
β”œβ”€β”€ Startup
β”œβ”€β”€ Corporate
β”œβ”€β”€ Restaurant
β”œβ”€β”€ Real estate
└── Consulting

Blog/Magazine:
β”œβ”€β”€ Personal blog
β”œβ”€β”€ News site
β”œβ”€β”€ Documentation
└── Knowledge base

E-commerce:
β”œβ”€β”€ Product showcase
β”œβ”€β”€ Digital products
└── Services

Component libraries

Code
TEXT
POPULAR COMPONENT PACKS:

Buttons:
β”œβ”€β”€ Primary, Secondary, Ghost
β”œβ”€β”€ With icons
β”œβ”€β”€ Loading states
└── Sizes: sm, md, lg

Cards:
β”œβ”€β”€ Product cards
β”œβ”€β”€ Blog cards
β”œβ”€β”€ Pricing cards
β”œβ”€β”€ Team cards
└── Testimonial cards

Navigation:
β”œβ”€β”€ Navbar (desktop)
β”œβ”€β”€ Mobile menu
β”œβ”€β”€ Sidebar
β”œβ”€β”€ Breadcrumbs
└── Pagination

Forms:
β”œβ”€β”€ Contact form
β”œβ”€β”€ Newsletter signup
β”œβ”€β”€ Login/Register
└── Search

Sections:
β”œβ”€β”€ Hero sections
β”œβ”€β”€ Feature grids
β”œβ”€β”€ Pricing tables
β”œβ”€β”€ FAQ accordions
β”œβ”€β”€ Footer variants
└── CTA sections

Framer for teams

Collaboration features

Code
TEXT
TEAM FEATURES:

1. Real-time editing
   └── Multiple editors
   └── Cursor presence
   └── Live changes

2. Comments
   └── Pin to elements
   └── Thread discussions
   └── @mentions
   └── Resolve/reopen

3. Version history
   └── Auto-save
   └── Named versions
   └── Restore previous

4. Permissions:
   └── Owner (full access)
   └── Editor (edit + publish)
   └── Viewer (view only)
   └── Commenter

Branching (Beta)

Code
TEXT
BRANCHING WORKFLOW:

Main branch (production)
β”‚
β”œβ”€β”€ Feature branch: "new-homepage"
β”‚   └── Make changes
β”‚   └── Preview independently
β”‚   └── Merge when ready
β”‚
└── Feature branch: "pricing-update"
    └── Isolated environment
    └── No conflicts
    └── Safe experimentation

Pricing

PlanPriceIncludes
Free$0/mo1 project, framer.site subdomain
Mini$5/moCustom domain, basic analytics
Basic$15/moCMS, forms, more pages
Pro$30/moAdvanced CMS, password protection
TeamCustomCollaboration, branching, SSO

What each plan includes:

Free:

  • 1 project
  • framer.site subdomain
  • Unlimited pages (no CMS)
  • Basic templates
  • Community support

Mini ($5/mo):

  • Custom domain
  • 1,000 monthly visits included
  • Basic analytics
  • Remove Framer badge

Basic ($15/mo):

  • Everything in Mini
  • 10,000 monthly visits
  • CMS (3 collections)
  • Forms (100 submissions/mo)
  • Sitemap, robots.txt

Pro ($30/mo):

  • Everything in Basic
  • 50,000 monthly visits
  • Unlimited CMS collections
  • Password protection
  • Staging environment
  • Advanced analytics

FAQ - frequently asked questions

Is Framer better than Webflow?

It depends on your needs. Framer is better at animations and easier to learn. Webflow offers a more advanced CMS and greater control over code. For landing pages and portfolios - Framer. For large sites with CMS - Webflow.

Can I export code from Framer?

No, Framer does not offer code export. Sites are hosted on the Framer platform. However, you can use custom code components and integrations.

Is Framer good for SEO?

Yes, Framer generates semantic HTML, automatic sitemaps, meta tags and has excellent performance. Sites often achieve 90+ in Lighthouse.

Can I use Framer for an online store?

Framer is not a full e-commerce platform, but you can integrate Stripe for payments or embed Shopify products. For simple digital products it is sufficient.

How quickly can I learn Framer?

The basics in 1-2 days. If you know Figma, the transition is natural. Advanced features (CMS, code components) require more time.

Does Framer work offline?

No, Framer requires an internet connection. Projects are stored in the cloud.

Can I migrate a site from Webflow to Framer?

There is no automatic migration. You need to recreate the design manually. The structure and concepts are similar, so the transition is not difficult.

Summary

Framer is a modern website builder platform offering:

  • Design-first approach with an interface like Figma
  • Best-in-class animations thanks to Framer Motion
  • Built-in CMS for blogs and portfolios
  • Hosting and CDN included in the price
  • SEO-ready with automatic sitemap
  • Custom code for advanced needs
  • Responsive design with breakpoints

The ideal solution for designers and marketers who want to create beautiful, fast websites without coding.