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
- Design-first Approach - Projektuj jak w Figma, publikuj jak WordPress
- Animacje premium - Framer Motion pod spodem daje jakoΕΔ produkcyjnΔ
- Zero kodu - Wszystko przez visual editor
- Wbudowany CMS - Blog, portfolio, produkty bez zewnΔtrznych narzΔdzi
- Hosting included - CDN, SSL, custom domains w pakiecie
- SEO-ready - Meta tags, OG images, sitemap automatycznie
- Responsive - Breakpoints i auto-layout jak w Figma
- Components - Wielokrotnie uΕΌywalne bloki z variants
Framer vs Webflow vs Squarespace vs Wix
| Cecha | Framer | Webflow | Squarespace | Wix |
|---|---|---|---|---|
| Animacje | Najlepsze | Bardzo dobre | Podstawowe | Podstawowe |
| Learning curve | Εatwy | Trudny | Εatwy | Εatwy |
| CMS | Prosty, elastyczny | Zaawansowany | Prosty | Prosty |
| Custom code | Tak (React) | Tak (HTML/JS) | Ograniczony | Velo |
| SEO | Εwietne | Εwietne | Dobre | Εrednie |
| Performance | 95+ Lighthouse | 80-95 | 70-85 | 60-80 |
| Cena (start) | $5/mo | $14/mo | $16/mo | $16/mo |
| Target | Designers, Devs | Developers | MaΕe biznesy | Beginners |
RozpoczΔcie pracy z Framer
Tworzenie konta i projektu
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
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 packagesLayout i Responsive Design
Auto-layout (Stack)
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
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 columnConstraints
/* 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
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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
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 animationsScroll Animations
// 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
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
- BorderFramer CMS
Collections
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
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: 6CMS Filters i Sorting
// 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
// 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
// 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 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
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 tagsPerformance Optimization
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 CMSIntegracje
Built-in Integrations
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 OAuthFramer Forms
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
<!-- 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
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 productionDomain Configuration
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-renewalTemplates i Components
Framer Templates
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
βββ ServicesComponent Libraries
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 sectionsFramer dla zespoΕΓ³w
Collaboration Features
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)
βββ CommenterBranching (Beta)
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 experimentationCennik
| Plan | Cena | ZawartoΕΔ |
|---|---|---|
| Free | $0/mo | 1 projekt, framer.site subdomain |
| Mini | $5/mo | Custom domain, basic analytics |
| Basic | $15/mo | CMS, forms, more pages |
| Pro | $30/mo | Advanced CMS, password protection |
| Team | Custom | Collaboration, 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
- Design-first approach - Design like in Figma, publish like WordPress
- Premium animations - Framer Motion under the hood delivers production quality
- Zero code - Everything through the visual editor
- Built-in CMS - Blog, portfolio, products without external tools
- Hosting included - CDN, SSL, custom domains in the package
- SEO-ready - Meta tags, OG images, sitemap automatically
- Responsive - Breakpoints and auto-layout like in Figma
- Components - Reusable blocks with variants
Framer vs Webflow vs Squarespace vs Wix
| Feature | Framer | Webflow | Squarespace | Wix |
|---|---|---|---|---|
| Animations | Best | Very good | Basic | Basic |
| Learning curve | Easy | Difficult | Easy | Easy |
| CMS | Simple, flexible | Advanced | Simple | Simple |
| Custom code | Yes (React) | Yes (HTML/JS) | Limited | Velo |
| SEO | Excellent | Excellent | Good | Average |
| Performance | 95+ Lighthouse | 80-95 | 70-85 | 60-80 |
| Price (start) | $5/mo | $14/mo | $16/mo | $16/mo |
| Target | Designers, Devs | Developers | Small businesses | Beginners |
Getting started with Framer
Creating an account and project
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
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 packagesLayout and responsive design
Auto-layout (Stack)
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
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 columnConstraints
/* 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
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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
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 animationsScroll animations
// 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
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
- BorderFramer CMS
Collections
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
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: 6CMS filters and sorting
// 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
// 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
// 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 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
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 tagsPerformance optimization
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 CMSIntegrations
Built-in integrations
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 OAuthFramer Forms
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
<!-- 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
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 productionDomain configuration
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-renewalTemplates and components
Framer templates
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
βββ ServicesComponent libraries
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 sectionsFramer for teams
Collaboration features
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)
βββ CommenterBranching (Beta)
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 experimentationPricing
| Plan | Price | Includes |
|---|---|---|
| Free | $0/mo | 1 project, framer.site subdomain |
| Mini | $5/mo | Custom domain, basic analytics |
| Basic | $15/mo | CMS, forms, more pages |
| Pro | $30/mo | Advanced CMS, password protection |
| Team | Custom | Collaboration, 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.