Skip to main content
RapidDev - Software Development Agency
weweb-tutorial

WeWeb Responsive Design: Breakpoints, Mobile-First, and Best Practices

WeWeb uses three fixed breakpoints — Desktop (≥992px), Tablet (768–991px), and Mobile (≤767px) — with a desktop-first cascade. Styles set on Desktop apply to all sizes unless overridden. Use flexbox containers, relative units, and breakpoint-specific overrides to build layouts that adapt cleanly across devices without duplicating your work.

What you'll learn

  • How WeWeb's three breakpoints work and how desktop-first cascade applies styles
  • How to switch breakpoints in the editor and make targeted per-breakpoint overrides
  • How to build flexible layouts using flexbox containers and relative units
  • How to hide or show elements per breakpoint without deleting them
  • Common responsive mistakes in WeWeb and how to avoid them
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner10 min read30–45 minWeWeb Free plan and aboveMarch 2026RapidDev Engineering Team
TL;DR

WeWeb uses three fixed breakpoints — Desktop (≥992px), Tablet (768–991px), and Mobile (≤767px) — with a desktop-first cascade. Styles set on Desktop apply to all sizes unless overridden. Use flexbox containers, relative units, and breakpoint-specific overrides to build layouts that adapt cleanly across devices without duplicating your work.

Building Responsive Layouts in WeWeb

WeWeb's responsive system is built on three fixed breakpoints with a desktop-first cascade. This means every style you set at the Desktop level automatically flows down to Tablet and Mobile unless you explicitly override it at a smaller breakpoint. This tutorial walks through that cascade model, shows you how to make breakpoint-specific adjustments in the editor, and covers layout strategies — flexbox, relative units, and conditional visibility — that produce genuinely responsive results. You will also learn the most common mistake beginners make: accidentally deleting elements on mobile instead of hiding them.

Prerequisites

  • A WeWeb project with at least one page
  • Basic familiarity with the WeWeb editor canvas and Styling panel
  • Understanding of what CSS flexbox is (no coding required)

Step-by-step guide

1

Understand the three-breakpoint cascade

WeWeb has exactly three breakpoints: Desktop (≥992px, the base), Tablet (768–991px), and Mobile (≤767px). The cascade flows one way: Desktop → Tablet → Mobile. If you set a font size of 48px on Desktop and do nothing else, it is also 48px on Tablet and Mobile. If you override it to 32px on Tablet, Mobile inherits the 32px override — not the Desktop value. Switch between breakpoints using the device icons in the top navigation bar of the editor. The currently active breakpoint is highlighted. Any style change you make in the Styling panel on the right applies only to the active breakpoint and below. There are no custom breakpoints available — 992px, 768px, and 767px are fixed. If your design requires a 1280px breakpoint, the workaround is to use relative units so styles scale gracefully rather than breaking at a fixed pixel threshold.

Expected result: You understand the cascade direction and can switch breakpoints in the top navigation bar.

2

Build your layout with flexbox containers

In the left panel, click Add element (+) → Container → Flexbox Container. Flexbox containers are the primary tool for responsive layout in WeWeb. In the Styling panel → Layout section, you can set: flex-direction (row or column), justify-content (how items are distributed along the main axis), align-items (alignment on the cross axis), gap (spacing between children), and flex-wrap (whether items wrap to new lines). For a two-column desktop layout that stacks on mobile: set direction to 'row' at Desktop, then switch to Mobile breakpoint and override direction to 'column'. The gap, alignment, and padding settings can be overridden per breakpoint the same way. Avoid using fixed-width columns with pixel values — they will not adapt. Use percentage widths or flex-grow settings instead. For a 50/50 split, set each child container's Flex → Grow to 1.

Expected result: You have a flexbox container whose direction switches from row on Desktop to column on Mobile.

3

Use relative units instead of fixed pixels

In the Styling panel, width, height, font-size, padding, and margin fields all accept relative units. Prefer these over fixed pixel values for any measurement that should scale. Percentage (%) works relative to the parent container — use it for widths. Viewport units (vw, vh) work relative to the screen size — use vw for full-width elements. rem is relative to the root font size (default 16px in browsers) — use it for typography and spacing. em is relative to the current element's font size — useful for component-scoped spacing. For fluid typography that scales smoothly between breakpoints without per-breakpoint overrides, use clamp() in the element's Custom CSS field in the Styling panel. Example: font-size: clamp(16px, 2vw, 24px) sets a minimum of 16px, preferred of 2vw, and maximum of 24px.

typescript
1/* Injection point: Styling panel → element Custom CSS field */
2/* Fluid font size that scales between breakpoints */
3.my-heading {
4 font-size: clamp(24px, 4vw, 56px);
5 line-height: 1.2;
6}
7
8/* Full-width section with responsive side padding */
9.hero-section {
10 width: 100%;
11 padding-left: clamp(16px, 5vw, 80px);
12 padding-right: clamp(16px, 5vw, 80px);
13}

Expected result: Your typography and container widths scale fluidly without requiring per-breakpoint pixel overrides.

4

Override styles per breakpoint in the Styling panel

Switch to the Tablet breakpoint using the top nav icons. Now any change you make in the Styling panel applies only to Tablet and Mobile (not Desktop). To override the column layout: select your flexbox container, go to Styling panel → Layout, change flex-direction to 'column', and adjust gap and alignment as needed. To override text sizes: select a heading element, go to Styling panel → Typography, and change the font size. A small indicator dot appears next to overridden properties to show they differ from the Desktop value. To reset a property back to its inherited Desktop value, right-click the property or click the reset icon that appears on hover. Repeat this process for Mobile breakpoint. You do not need to rebuild the layout — you are only setting exceptions to the base Desktop styles.

Expected result: Your layout adapts at Tablet and Mobile breakpoints with targeted style overrides, and a small dot indicator confirms which properties are overridden.

5

Hide and show elements per breakpoint using conditional visibility

CRITICAL: Never delete an element while on Tablet or Mobile breakpoint. Deleting an element in WeWeb always removes it from all breakpoints regardless of which breakpoint is active — there is no breakpoint-scoped deletion. To hide an element on mobile only: with the Mobile breakpoint active, select the element, go to Styling panel → Layout → Display, and change display to 'none'. The element is hidden on Mobile but remains visible on Desktop and Tablet. Alternatively, use Conditional Rendering for a cleaner approach: select the element → Settings panel → Conditional Rendering → bind to a formula. For breakpoint-specific visibility, bind to a variable you control manually. To show a mobile-only element (like a hamburger menu), add it at Desktop breakpoint, set its display to 'none' at Desktop and Tablet, and 'flex' at Mobile.

Expected result: Desktop-only elements are hidden on Mobile. Mobile-only elements (like a hamburger menu) are hidden on Desktop. No elements are accidentally deleted.

6

Make navigation responsive with a hamburger menu

Drag a Top Navigation Bar element from Add element (+) → Navigation onto your page. The built-in Top Navigation Bar includes a hamburger menu that automatically appears at Mobile breakpoint — no configuration required. To customize when the mobile menu appears: select the Top Navigation Bar → Settings panel → find the 'Mobile breakpoint' or collapse threshold setting and adjust as needed. For a custom navigation (not using the built-in component): create a desktop nav container with your links, then create a separate mobile container with a hamburger icon. At Desktop breakpoint, set the desktop nav to display:flex and the mobile container to display:none. At Mobile breakpoint, reverse these display values. Add a workflow to the hamburger icon: On click → Change variable value (Boolean 'mobileMenuOpen' = true). Bind the mobile menu's display to that variable.

Expected result: A hamburger menu appears on Mobile while the full navigation bar shows on Desktop.

7

Test and validate your responsive layout

The WeWeb editor breakpoint preview is a starting point, but it does not always accurately reflect real device behavior — particularly because the editor renders at fixed canvas widths (1440px Desktop, ~768px Tablet, ~400px Mobile) while actual devices vary. After you are satisfied with the editor preview, publish your app and test in a real browser. In Chrome DevTools (F12 → device toolbar icon), you can test at arbitrary widths including 375px (iPhone SE), 390px (iPhone 14), 412px (Android), and 428px (iPhone 14 Pro Max). WeWeb's Mobile breakpoint activates at ≤767px, so all of these fall under the Mobile breakpoint. Also test at 768px (Tablet boundary) and 991px (Tablet/Desktop boundary) to verify your layout transitions look correct. Pay particular attention to text overflow, images that stretch or overflow containers, and form elements that may be too small to tap on mobile.

Expected result: Layout displays correctly across Desktop, Tablet, and Mobile on real devices and in Chrome DevTools at standard device widths.

Complete working example

responsive-global-styles.html
1<!-- Injection point: App Settings Custom Code Head section -->
2<!-- Global responsive utilities for WeWeb projects -->
3
4<style>
5 /* Root font size — all rem values scale from this */
6 :root {
7 font-size: 16px;
8 }
9
10 /* Thin scrollbar on Desktop */
11 body {
12 scrollbar-width: thin;
13 }
14
15 /* Fluid hero heading */
16 .hero-heading {
17 font-size: clamp(28px, 5vw, 64px);
18 line-height: 1.15;
19 letter-spacing: -0.02em;
20 }
21
22 /* Fluid body text */
23 .body-text {
24 font-size: clamp(14px, 1.5vw, 18px);
25 line-height: 1.6;
26 }
27
28 /* Responsive container max-width with side padding */
29 .content-container {
30 width: 100%;
31 max-width: 1200px;
32 margin-left: auto;
33 margin-right: auto;
34 padding-left: clamp(16px, 4vw, 80px);
35 padding-right: clamp(16px, 4vw, 80px);
36 }
37
38 /* Responsive grid: 3 columns Desktop, 2 Tablet, 1 Mobile */
39 .responsive-grid {
40 display: grid;
41 grid-template-columns: repeat(3, 1fr);
42 gap: clamp(16px, 2vw, 32px);
43 }
44
45 @media (max-width: 991px) {
46 .responsive-grid {
47 grid-template-columns: repeat(2, 1fr);
48 }
49 }
50
51 @media (max-width: 767px) {
52 .responsive-grid {
53 grid-template-columns: 1fr;
54 }
55 }
56
57 /* Touch target minimum size for mobile */
58 @media (max-width: 767px) {
59 button, a, [role="button"] {
60 min-height: 44px;
61 min-width: 44px;
62 }
63 }
64</style>

Common mistakes

Why it's a problem: Deleting an element while on Mobile or Tablet breakpoint

How to avoid: Deleting an element in WeWeb removes it from all breakpoints. To hide it on mobile only, switch to Mobile breakpoint → Styling panel → Layout → Display → set to 'none'. Never use the delete key when you only want to hide the element responsively.

Why it's a problem: Using fixed pixel widths for all containers, causing overflow on mobile

How to avoid: Use percentage widths or flex-grow instead of fixed pixel widths. For a 50/50 layout, set each child's Flex → Grow to 1 rather than width: 600px. This lets flexbox distribute space proportionally.

Why it's a problem: Expecting custom breakpoints to exist — designing for 1280px

How to avoid: WeWeb only supports three fixed breakpoints. Use clamp() in Custom CSS for fluid scaling between Desktop (≥992px) sizes, or use percentage/vw units so designs scale smoothly up to 1920px+ without needing a 1280px breakpoint.

Why it's a problem: Assuming Custom CSS renders in the editor preview

How to avoid: Custom CSS added via App Settings → Custom Code → Head does NOT render in the editor canvas. Publish the app to a staging or production URL to see CSS changes take effect. Design the structure in the editor and use CSS for fine-tuning only.

Best practices

  • Always design at Desktop breakpoint first and work down to Mobile — the cascade flows Desktop → Tablet → Mobile, never upward
  • Use flexbox containers as your primary layout tool; set flex-direction to 'column' at Mobile breakpoint for sections that should stack
  • Use percentage widths and flex-grow instead of pixel widths so columns adapt without per-breakpoint overrides
  • Hide desktop elements on mobile with display:none in the Styling panel — never delete elements while on a non-Desktop breakpoint
  • Test at real device widths (375px iPhone SE, 390px iPhone 14) not just the editor's 400px Mobile canvas
  • Use clamp() in Custom CSS for typography that scales fluidly without breakpoint-specific overrides
  • Set minimum touch target sizes of 44×44px for all interactive elements at Mobile breakpoint
  • Avoid deeply nested containers — they slow the editor and make responsive overrides harder to track

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

I'm building a WeWeb app and need help with responsive design. WeWeb uses desktop-first cascade with three fixed breakpoints: Desktop ≥992px, Tablet 768–991px, Mobile ≤767px. There are no custom breakpoints. How should I structure a [describe your layout] using flexbox containers so it adapts correctly? Please suggest relative units and clamp() values where pixel breakpoints aren't available.

WeWeb Prompt

In my WeWeb project, help me make this section responsive. It currently has a 3-column flexbox layout at Desktop. I need it to become 2 columns at Tablet and 1 column at Mobile. My flex container is named [container name]. What Styling panel settings should I change at each breakpoint, and should I use flex-wrap or flex-direction changes?

Frequently asked questions

Can I add custom breakpoints in WeWeb beyond the three defaults?

No. As of March 2026, WeWeb only supports three fixed breakpoints: Desktop (≥992px), Tablet (768–991px), and Mobile (≤767px). Custom breakpoints are a frequently requested feature but not yet available. The workaround is to use relative units (%, vw, rem) and clamp() in Custom CSS so your design scales fluidly rather than snapping at a custom pixel threshold.

Why do my styles look wrong on real mobile devices even though they look fine in the WeWeb editor?

The WeWeb editor renders the Mobile breakpoint at approximately 400px canvas width, but many iPhones have 375px screens (iPhone SE) or 390px (iPhone 14). Additionally, custom CSS injected via App Settings → Custom Code does not render in the editor — only after publishing. Always test your published app in Chrome DevTools at 375px and 390px widths, not just in the editor canvas.

I accidentally deleted an element while on Mobile breakpoint. How do I recover it?

Unfortunately, deleting an element in WeWeb removes it from all breakpoints permanently. Use Cmd+Z (or Ctrl+Z) immediately to undo if you haven't saved. Going forward, never delete elements when on Tablet or Mobile breakpoint if you only want to hide them on that breakpoint. Use Styling panel → Layout → Display → 'none' to hide without deleting.

How do I make images responsive in WeWeb so they don't overflow their containers?

Select the image element → Styling panel → Layout → set Width to 100% and Height to auto. This makes the image fill its container's width and scale proportionally. For containers that should cap the image size, set max-width on the parent container. You can also use the image's object-fit property (available in Styling panel → Advanced) to control how the image fills its container — 'cover' fills the container without stretching, 'contain' shows the full image.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.