Responsive Web Design: What Matters in 2026
Review responsive design across seven areas: viewport behavior, content-led breakpoints, fluid sizing, component containers, images, touch targets and measured performance. Good Core Web Vitals thresholds are LCP at 2.5 seconds or less, INP at 200 milliseconds or less and CLS at 0.1 or less, evaluated at the 75th percentile. Those measures complement layout and accessibility checks. The examples below use dated source counts and audits from our own site.
The source counts and audits below are dated project observations, not current performance measurements. Core Web Vitals, Resize Text and Reflow provide primary definitions for the performance and accessibility checks.
Key Takeaways
- Match layout changes to content, not a device catalog.
- Test text enlargement, targets and real interaction states.
- Treat lab results and field performance as separate evidence.
- Inspect viewport, sizing, containers, images, targets and measured behavior together.
1. One line of HTML that everything depends on
Without a viewport tag, mobile browsers render the page at a desktop width and shrink it. Every responsive technique after this depends on getting it right:
<meta name="viewport" content="width=device-width, initial-scale=1">
That is the viewport value recorded in our October 6, 2026 source check. MDN's viewport reference explains two behaviors worth testing:
- Never disable zoom. MDN warns that
user-scalable=nostops people with low vision from reading your content, and notes that WCAG requires at least 2x scaling, with 5x as best practice. - Check keyboard behavior. On supporting browsers,
interactive-widget=resizes-contentrequests resizing of the layout viewport as well as the visual viewport when an on-screen keyboard appears. Support and behavior vary; test sticky controls on your supported browsers instead of assuming the directive resolves every overlap.
2. Breakpoints: fewer than you think
Old guides publish tables of device widths. Devices change every year; your content does not. Pick a breakpoint where the layout actually breaks, and keep the list short.
Our own site defines its breakpoints as tokens in the Tailwind v4 theme in src/app/globals.css: 544px, 768px, 992px and 1170px, with content capped at 1,320px wide. When we counted how often each one is actually used across the site's source on 6 October 2026, the answer was lopsided.
Two breakpoints, 768px and 992px, carry almost the entire site. The widest one is used four times. That is not a flaw. It is what happens when the layout is designed mobile first and only changes when it has to: a single column on phones, a split at tablet width, the full grid on laptops, and fluid sizing in between doing the rest of the work.
If your stylesheet has eight breakpoints, count how often each is used. The rarely used ones are often patching a layout that a fluid value would handle better.
3. Fluid sizing between breakpoints
Breakpoints are steps. Most of a good responsive layout is a slope:
clamp()for type and spacing.font-size: clamp(2rem, 5vw, 4.5rem)scales a headline smoothly between a floor and a ceiling. suur.io usesclamp()in 21 source files.- Dynamic viewport units for full-height sections.
100vhon mobile includes the area behind the browser's address bar, which is why "full screen" heroes get cut off.100dvh(dynamic) or100svh(small) account for the browser chrome. Seven of our stylesheets use them, mostly in the interactive brand guides. - Relative units for text.
remis relative to the root font size. It can follow the user's default when the root preserves that preference; a fixed root size can defeat that benefit. Browser zoom also affects pixel-based text, so test text enlargement and reflow rather than treating a unit choice as conformance.
4. Container queries: for components, not pages
Viewport media queries can respond to the browser viewport's width. Size container queries respond to an eligible ancestor container, which is useful when the same card sits in a grid on one page and a sidebar on another. MDN's container-query guide describes containment and query behavior.
.card-list { container-type: inline-size; }
@container (min-width: 480px) {
.card { display: grid; grid-template-columns: 160px 1fr; }
}
Tailwind's responsive-design documentation includes container-query variants: mark a parent with @container and style children with @md: and similar.
Our October 6, 2026 source check found no container queries. Our components mostly occupied one layout each, where we used media queries. A component reused at different widths, such as a pricing card in a grid and sidebar, would be a candidate for a container query.
5. Images: inspect payload and loading behavior
In our August 28, 2026 audit, three pages scored between 54 and 66 on Lighthouse mobile with LCP between 6.8 and 8.5 seconds; a comparison page on the same stack scored 98 at 1.7 seconds. Image opportunities included a 776KB JPEG with a reported 93% potential saving, a 309KB PNG photograph and a 201KB hero. These warnings identify candidates to investigate. Scores and file sizes alone do not establish what caused the slow LCP; inspect the trace, LCP element and request timing, then retest a change. The audit is documented in which attribute describes a good landing page experience.
The responsive fixes are well known and still under-used:
srcsetandsizesso a phone downloads a phone-sized file.<picture>when the crop should change, not just the size, for example a tall portrait crop on mobile and a wide one on desktop.- Modern formats such as WebP or AVIF for photographs, SVG for icons and diagrams.
loading="lazy"on images below the fold, and never on the hero, which should load first.- Explicit
widthandheightso the browser reserves space and the layout does not jump.
For a separate dated example, the InFlight launch-site case study records Lighthouse mobile scores of 98 for performance and 100 for automated accessibility at 186 KiB total. Those results do not isolate an image optimization effect, establish field performance or prove full accessibility conformance.
6. Touch targets and thumbs
A link that is easy to click with a mouse can be impossible to tap with a thumb. Two current references:
- WCAG 2.2, Success Criterion 2.5.8, Level AA: pointer targets must be at least 24 by 24 CSS pixels, with exceptions for targets that have enough spacing around them, inline text links and a few others.
- Design target: a larger primary control can be easier to operate; choose dimensions for the platform and task rather than equating native points with CSS pixels.
The WCAG target-size guidance explains spacing, equivalent, inline, user-agent and essential exceptions; 24px is not a universal legal floor. A 44-CSS-pixel primary target is a practical starting preference for this web design, not a blanket conformance rule. Check the reading order too: on the InFlight site, the headline and App Store action precede the photograph on mobile.
7. Core Web Vitals on real phones
Responsive is not only how a page looks at a width. It is how it behaves on the slower devices that use that width. Google's three Core Web Vitals, per web.dev on 6 October 2026:
| Metric | Good | What it measures |
|---|---|---|
| Largest Contentful Paint | 2.5 s or less | When the main content appears |
| Interaction to Next Paint | 200 ms or less (over 500 ms is poor) | How fast the page responds to taps and clicks |
| Cumulative Layout Shift | 0.1 or less | Unexpected layout movement over the page's lifetime |
web.dev recommends judging these at the 75th percentile, segmented by mobile and desktop. A standard Lighthouse navigation audit does not exercise the user interactions needed to measure INP and reports Total Blocking Time as a diagnostic loading metric. Interaction traces and user-flow measurements can examine responsiveness in a lab, while field data describes actual visits. Do not equate a low TBT with a passing field INP. Our Three.js vs WebGL investigation recorded a WebGL context request taking 2.5 seconds on a software renderer before we moved it off the loading path; that is a specific finding, not a diagnosis for every slow page.
How to test without a device lab
- Resize, do not just switch presets. Drag the browser from 320px to 1,600px slowly and watch for the width where something breaks. That width is a real breakpoint.
- Use one real, older phone. Throttled desktop emulation misses touch and memory problems.
- Check field data. PageSpeed Insights shows Chrome user experience data where your page has enough traffic.
- Audit on a schedule. A website audit gives you a dated baseline, so you know whether the next redesign made things better or worse.
The short answer
Use a viewport that permits zoom, content-led breakpoints, fluid sizing and correctly sized images. Consider container queries when components live in different layouts. Test targets against the relevant criteria and exceptions, then measure loading, responsiveness and stability under appropriate conditions. A responsive screenshot alone does not establish a usable responsive product.
Have a product idea?
Designed, built, and shipped in about 5 days.