Design Guidelines

In this guide, we'll explore essential principles and practical tips to ensure your extensions engage users and seamlessly integrate with the Webflow ecosystem.

By focusing on user-centered design, thoughtful layout strategies, and effective color and typography choices, you'll create extensions that not only enhance functionality but also delight users. Let's dive in and discover how to make your extensions feel like a natural part of the Webflow experience. If you’re looking to publish your App on the Marketplace, please review our Design and Usability section of our Marketplace App Guidelines.

📘

Looking to build a native looking Webflow App?

We’ve provided a simplified version of our design system with colors, typography, components, patterns, and App examples to help kickstart the design and build of your App. Access the Webflow Apps Figma UI kit here.

Crafting your user interface

Since Designer Extensions run within an iframe, you can use traditional HTML, CSS, and JavaScript to design and develop your user interface like you would any single-page application. You can use frameworks and libraries to help with this process. For instance, you might use React or Vue.js for creating your UI components, and Tailwind CSS or Bootstrap for styling.

Webflow doesn’t require Designer Extensions to feel native to the Designer, but we do believe Apps that feel native will resonate with our customers and provide a higher-level experience.

Design principles

Your UI should adhere to the following key principles:

  1. Customer-focused: The App's purpose and value should be defined around the needs of Webflow users. It should solve a unique problem for them.
  2. Simplicity & approachability: Your App should be simple to use and not require extensive learning to get started. It should complement Webflow's visual abstraction of code, not complicate it.
  3. Consistent design: Use consistent design elements like color, typography, and button styles throughout your App. This improves the user experience and makes your App easier to navigate.
  4. Foster creative momentum: Your App should not hinder the creative process. Avoid unnecessary steps or options that could break the user's flow state.
  5. Clear Language: Use clear and concise copy throughout your App. It should guide users and connect the dots between visuals, layouts, and usability.
  6. Inclusive & Accessible: Strive to make your App accessible to all users. This means ensuring it adheres to accessibility standards and best practices.

Layout guidelines

  1. Vertical component arrangement: For the narrow, default interface, components should be stacked vertically rather than horizontally.
  2. Full-width buttons & components: Full-width elements enforce a vertical orientation and make your App easier to scan.
  3. Avoid horizontal scrolling: Ensure your UI elements fit within the iframe's width to prevent horizontal scrolling.
  4. Consistent spacing: Use a consistent spacing rhythm (e.g., multiples of 4px) to create a visually pleasing App. Use white space effectively to create a balanced layout and highlight important information.
  5. Clear & concise copy: Use sentence case for all text, including headings and buttons. Make error states helpful and actionable, and always strive for clarity over complexity.
  6. Consistent design language: Use a consistent design language, including typography, color schemes, and button styles. This will create a more cohesive user experience and help users navigate your plugin more easily.
  7. Iconography: Use recognizable and intuitive icons throughout your App. Icons can help users navigate your App more easily and quickly.

Enhancing with colors & typography

Choose a color scheme that aligns with the purpose and tone of your App. Webflow primarily uses the Inter font for its interface. You can consider adopting it for consistency.

Fonts

To use Webflow’s main font face, Inter, you will need to download the files into your App or access them via Google Font’s API. Access Inter font family on Google Fonts.

CSS variables

To design and build an App that feels native to Webflow’s Designer, you can use the following CSS variables. Implement these variables by pasting and defining them within a ruleset like :root or body, and calling them in your CSS selectors with the var() function:

Buttons

Primary buttons --actionPrimaryBackground
Primary button text --actionPrimaryText
Secondary and default buttons --actionSecondaryBackground
Secondary and default button text --actionSecondaryText

Typography

--font-stack: 'Inter', sans-serif;

Highlighted text, headlines, emphasized text --text1 #d9d9d9
Default text color, labels, descriptions --text2 #ababab
Default font sizes for labels, inputs, text --font-size-small 11px
Large text for headlines --font-size-large 12px
default text weight for buttons, labels, inputs --font-weight-normal 400
text weight for headlines and emphasized text --font-weight-medium 500

Borders

Default border color for buttons, inputs, dividing lines --border1 #363636
Default border color for buttons, inputs, dividing lines --border-radius-small 2px

Backgrounds

Default app background color --background1 #404040;

Webflow colors

Backgrounds

--background1: #404040;

--background2: #4d4d4d;

--background3: #363636;

--background4: #2b2b2b;

--background5: #212121;

--backgroundInactive: #4d4d4d;

--backgroundInverse: #EBEBEB;

Actions

--actionSecondaryBackground: #5e5e5e;

--actionSecondaryBackgroundHover: #696969;

--actionPrimaryText: #FFFFFF;

--actionPrimaryTextHover: #F6F6F6;

--actionSecondaryText: #EBEBEB;

--actionSecondaryTextHover: #F6F6F6;

--actionPrimaryBackground: #0073E6;

--actionPrimaryBackgroundHover: #1280EE;

Borders

--border1: #363636;

--border2: #2b2b2b;

--border3: #212121;

--border4: #5e5e5e;

Text

--text1: #d9d9d9;

--text2: #ababab;

--text3: #757575;

--text4: #696969;

--textInactive: #757575;

--textInverse: #363636;

Colors

BlueGreenYellowRedOrangePurple
--greenBackground: #008547;--yellowBackground: #996E00;--redBackground: #CF313B;--orangeBackground: #C75300;--purpleBackground: #7F5AE9;
--greenBackgroundHover: #00944F;--yellowBackgroundHover: #AD7D00;--redBackgroundHover: #DB434C;--orangeBackgroundHover: #DD7124;--purpleBackgroundHover: #8A61FF;
--blueText: #8AC2FF;--greenText: #63D489;--yellowText: #FFC700;--redText: #FF8A8A;--orangeText: #FFAB66;--purpleText: #B89EFF;
--blueIcon: #2496FF;--greenIcon: #2FC862;--yellowIcon: #FFC700;--redIcon: #FF424D;--orangeIcon: #F67E28;--purpleIcon: #A484FF;
--blueBorder: #2496FF;--greenBorder: #2FC862;--yellowBorder: #FFC700;--redBorder: #FF424D;--orangeBorder: #F67E28;--purpleBorder: #A484FF;
/* Webflow colors */
--background1: #404040;
--background2: #4d4d4d;
--background3: #363636;
--background4: #2b2b2b;
--background5: #212121;
--backgroundInactive: #4d4d4d;
--backgroundInverse: #EBEBEB;


--actionSecondaryBackground: #5e5e5e;
--actionSecondaryBackgroundHover: #696969;
--actionPrimaryText: #FFFFFF;
--actionPrimaryTextHover: #F6F6F6;
--actionSecondaryText: #EBEBEB;
--actionSecondaryTextHover: #F6F6F6;
--actionPrimaryBackground: #0073E6;
--actionPrimaryBackgroundHover: #1280EE;


--border1: #363636;
--border2: #2b2b2b;
--border3: #212121;
--border4: #5e5e5e;


--text1: #d9d9d9;
--text2: #ababab;
--text3: #757575;
--text4: #696969;
--textInactive: #757575;
--textInverse: #363636;


--blueText: #8AC2FF;
--blueIcon: #2496FF;
--blueBorder: #2496FF;


--greenBackground: #008547;
--greenBackgroundHover: #00944F;
--greenText: #63D489;
--greenIcon: #2FC862;
--greenBorder: #2FC862;


--yellowBackground: #996E00;
--yellowBackgroundHover: #AD7D00;
--yellowText: #FFC700;
--yellowIcon: #FFC700;
--yellowBorder: #FFC700;
--redBackground: #CF313B;
--redBackgroundHover: #DB434C;
--redText: #FF8A8A;
--redIcon: #FF424D;
--redBorder: #FF424D;


--orangeBackground: #C75300;
--orangeBackgroundHover: #DD7124;
--orangeText: #FFAB66;
--orangeIcon: #F67E28;
--orangeBorder: #F67E28;
--purpleBackground: #7F5AE9;
--purpleBackgroundHover: #8A61FF;
--purpleText: #B89EFF;
--purpleIcon: #A484FF;
--purpleBorder: #A484FF;


/* TYPOGRAPHY */
--font-stack: 'Inter', sans-serif;


--font-size-small: 11px;
--font-size-large: 12px;


--font-weight-normal: 400;
--font-weight-medium: 500;


--border-radius: 2px;