App Store Insights

Designing for the Unexpected

play store algorithm

I’m undecided once I first heard this quote, however it’s one thing that has stayed with me through the years. How do you create providers for conditions you may’t think about? Or design merchandise that work on gadgets but to be invented?


Table of Contents:

Flash, Photoshop, and responsive design

After I first began designing web sites, my go-to software program was Photoshop. I created a 960px canvas and set about making a structure that I might later drop content material in. The event section was about attaining pixel-perfect accuracy utilizing mounted widths, mounted heights, and absolute positioning.

Ethan Marcotte’s speak at An Occasion Aside and subsequent article “Responsive Internet Design” in A Listing Aside in 2010 modified all this. I used to be bought on responsive design as quickly as I heard about it, however I used to be additionally terrified. The pixel-perfect designs filled with magic numbers that I had beforehand prided myself on producing had been now not ok.

The worry wasn’t helped by my first expertise with responsive design. My first venture was to take an present fixed-width web site and make it responsive. What I discovered the exhausting means was which you could’t simply add responsiveness on the finish of a venture. To create fluid layouts, it’s worthwhile to plan all through the design section.


The second ingredient for responsive design is media queries. With out them, content material would shrink to suit the accessible house no matter whether or not that content material remained readable (The precise reverse drawback occurred with the introduction of a mobile-first strategy).

Parts changing into too small at cell breakpoints

Media queries prevented this by permitting us so as to add breakpoints the place the design might adapt. Like most individuals, I began out with three breakpoints: one for desktop, one for tablets, and one for cell. Through the years, I added increasingly for phablets, huge screens, and so forth.

For years, I fortunately labored this fashion and improved each my design and front-end expertise within the course of. The one drawback I encountered was making adjustments to content material, since with our Sass grid system in place, there was no means for the location house owners so as to add content material with out amending the markup—one thing a small enterprise proprietor would possibly wrestle with. It is because every row within the grid was outlined utilizing a div as a container. Including content material meant creating new row markup, which requires a stage of HTML information.

Row markup was a staple of early responsive design, current in all of the extensively used frameworks like Bootstrap and Skeleton.

Parts positioned within the rows of a Sass grid

One other drawback arose as I moved from a design company constructing web sites for small- to medium-sized companies, to bigger in-house groups the place I labored throughout a set of associated websites. In these roles I began to work rather more with reusable elements.

Our reliance on media queries resulted in elements that had been tied to widespread viewport sizes. If the purpose of part libraries is reuse, then it is a actual drawback as a result of you may solely use these elements if the gadgets you’re designing for correspond to the viewport sizes used within the sample library—within the course of not likely hitting that “gadgets that don’t but exist”  purpose.

Then there’s the issue of house. Media queries enable elements to adapt based mostly on the viewport dimension, however what if I put a part right into a sidebar, like within the determine under?

Parts responding to the viewport width with media queries


Container queries have lengthy been touted as an enchancment upon media queries, however on the time of writing are unsupported in most browsers. There are JavaScript workarounds, however they will create dependency and compatibility points. The essential idea underlying container queries is that parts ought to change based mostly on the scale of their dad or mum container and never the viewport width, as seen within the following illustrations.

Parts responding to their dad or mum container with container queries

One of many greatest arguments in favor of container queries is that they assist us create elements or design patterns which are really reusable as a result of they are often picked up and positioned wherever in a structure. This is a vital step in shifting towards a type of component-based design that works at any dimension on any gadget.

In different phrases, responsive elements to switch responsive layouts.

Container queries will assist us transfer from designing pages that reply to the browser or gadget dimension to designing elements that may be positioned in a sidebar or in the principle content material, and reply accordingly.

My concern is that we’re nonetheless utilizing structure to find out when a design must adapt. This strategy will at all times be restrictive, as we are going to nonetheless want pre-defined breakpoints. For that reason, my primary query with container queries is, How would we resolve when to alter the CSS utilized by a part?

A part library faraway from context and actual content material might be not the perfect place for that call.

Because the diagrams under illustrate, we will use container queries to create designs for particular container widths, however what if I wish to change the design based mostly on the picture dimension or ratio?

Playing cards responding to their dad or mum container with container queriesCards responding based mostly on their very own content material

On this instance, the size of the container usually are not what ought to dictate the design; relatively, the picture is.

It’s exhausting to say for positive whether or not container queries will likely be a hit story till we now have strong cross-browser help for them. Responsive part libraries would positively evolve how we design and would enhance the probabilities for reuse and design at scale. However perhaps we are going to at all times want to regulate these elements to swimsuit our content material.


While the container question debate rumbles on, there have been quite a few advances in CSS that change the best way we take into consideration design. The times of fixed-width parts measured in pixels and floated div parts used to cobble layouts collectively are lengthy gone, consigned to historical past together with desk layouts. Flexbox and CSS Grid have revolutionized layouts for the net. We will now create parts that wrap onto new rows once they run out of house, not when the gadget adjustments.

The repeat() perform paired with auto-fit or auto-fill permits us to specify how a lot house every column ought to use whereas leaving it as much as the browser to resolve when to spill the columns onto a brand new line. Comparable issues might be achieved with Flexbox, as parts can wrap over a number of rows and “flex” to fill accessible house.

The most important advantage of all that is you don’t must wrap parts in container rows. With out rows, content material isn’t tied to web page markup in fairly the identical means, permitting for removals or additions of content material with out further growth.

A conventional Grid structure with out the standard row containers

This can be a massive step ahead with regards to creating designs that enable for evolving content material, however the true recreation changer for versatile designs is CSS Subgrid.

Bear in mind the times of crafting completely aligned interfaces, just for the client so as to add an unbelievably lengthy header virtually as quickly as they’re given CMS entry, just like the illustration under?

Playing cards unable to reply to a sibling’s content material adjustments

Subgrid permits parts to reply to changes in their very own content material and within the content material of sibling parts, serving to us create designs extra resilient to alter.

Playing cards responding to content material in sibling playing cards.

CSS Grid permits us to separate structure and content material, thereby enabling versatile designs. In the meantime, Subgrid permits us to create designs that may adapt as a way to swimsuit morphing content material. Subgrid on the time of writing is barely supported in Firefox however the above code might be carried out behind an @helps function question.


I’d be remiss to not point out intrinsic layouts, the time period created by Jen Simmons to explain a mix of latest and previous CSS options used to create layouts that reply to accessible house.

Responsive layouts have versatile columns utilizing percentages. Intrinsic layouts, then again, use the fr unit to create versatile columns that received’t ever shrink a lot that they render the content material illegible.

fr models is a solution to say I need you to distribute the additional house on this means, however…don’t ever make it smaller than the content material that’s inside it.

—Jen Simmons, “Designing Intrinsic Layouts”

Intrinsic layouts can even make the most of a mix of mounted and versatile models, permitting the content material to dictate the house it takes up.

Slide from “Designing Intrinsic Layouts” by Jen Simmons

What makes intrinsic design stand out is that it not solely creates designs that may stand up to future gadgets but in addition helps scale design with out shedding flexibility. Parts and patterns might be lifted and reused with out the prerequisite of getting the identical breakpoints or the identical quantity of content material as within the earlier implementation.

We will now create designs that adapt to the house they’ve, the content material inside them, and the content material round them. With an intrinsic strategy, we will assemble responsive elements with out relying on container queries.


This intrinsic strategy ought to for my part be each bit as groundbreaking as responsive net design was ten years in the past. For me, it’s one other “the whole lot modified” second.

But it surely doesn’t appear to be shifting fairly as quick; I haven’t but had that very same career-changing second I had with responsive design, regardless of the extensively shared and sensible speak that introduced it to my consideration.

One cause for that might be that I now work in a big group, which is kind of completely different from the design company function I had in 2010. In my company days, each new venture was a clear slate, an opportunity to strive one thing new. These days, tasks use present instruments and frameworks and are sometimes enhancements to present web sites with an present codebase.

One other might be that I really feel extra ready for change now. In 2010 I used to be new to design generally; the shift was scary and required a whole lot of studying. Additionally, an intrinsic strategy isn’t precisely all-new; it’s about utilizing present expertise and present CSS information differently.


One more reason for the marginally slower adoption of intrinsic design might be the shortage of quick-fix framework options accessible to kick-start the change.

Responsive grid programs had been all over ten years in the past. With a framework like Bootstrap or Skeleton, you had a responsive design template at your fingertips.

Intrinsic design and frameworks don’t go hand in hand fairly so properly as a result of the good thing about having a collection of models is a hindrance with regards to creating structure templates. The fantastic thing about intrinsic design is combining completely different models and experimenting with methods to get the perfect in your content material.

After which there are design instruments. We most likely all, sooner or later in our careers, used Photoshop templates for desktop, pill, and cell gadgets to drop designs in and present how the location would take a look at all three phases.

How do you try this now, with every part responding to content material and layouts flexing as and when they should? One of these design should occur within the browser, which personally I’m a giant fan of.

The talk about “whether or not designers ought to code” is one other that has rumbled on for years. When designing a digital product, we must always, on the very least, design for a best- and worst-case situation with regards to content material. To do that in a graphics-based software program package deal is much from supreme. In code, we will add longer sentences, extra radio buttons, and additional tabs, and watch in actual time because the design adapts. Does it nonetheless work? Is the design too reliant on the present content material?

Personally, I sit up for the day intrinsic design is the usual for design, when a design part might be really versatile and adapt to each its house and content material with no reliance on gadget or container dimensions.

Content material first 

Content material isn’t fixed. In spite of everything, to design for the unknown or sudden we have to account for content material adjustments like our earlier Subgrid card instance that allowed the playing cards to reply to changes to their very own content material and the content material of sibling parts.

Fortunately, there’s extra to CSS than structure, and loads of properties and values can assist us put content material first. Subgrid and pseudo-elements like ::first-line and ::first-letter assist to separate design from markup so we will create designs that enable for adjustments.

A lot greater additions to CSS embrace logical properties, which change the best way we assemble designs utilizing logical dimensions (begin and finish) as a substitute of bodily ones (left and proper), one thing CSS Grid additionally does with capabilities like min()max(), and clamp().

This flexibility permits for directional adjustments in accordance with content material, a standard requirement when we have to current content material in a number of languages. Up to now, this was typically achieved with Sass mixins however was typically restricted to switching from left-to-right to right-to-left orientation.

Within the Sass model, directional variables should be set.

Nonetheless, now we now have native logical properties, eradicating the reliance on each Sass (or the same software) and pre-planning that necessitated utilizing variables all through a codebase. These properties additionally begin to break aside the tight coupling between a design and strict bodily dimensions, creating extra flexibility for adjustments in language and in path.

There are additionally native begin and finish values for properties like text-align, which suggests we will change text-align: proper with text-align: begin.

Like the sooner examples, these properties assist to construct out designs that aren’t constrained to 1 language; the design will mirror the content material’s wants.


We briefly lined the facility of mixing mounted widths with fluid widths with intrinsic layouts. The min() and max() capabilities are the same idea, permitting you to specify a hard and fast worth with a versatile different.

For min() this implies setting a fluid minimal worth and a most mounted worth.

The factor within the determine above will likely be 50% of its container so long as the factor’s width doesn’t exceed 300px.

For max() we will set a versatile max worth and a minimal mounted worth.

Now the factor will likely be 50% of its container so long as the factor’s width is at the very least 300px. This implies we will set limits however enable content material to react to the accessible house.

The clamp() perform builds on this by permitting us to set a most well-liked worth with a 3rd parameter. Now we will enable the factor to shrink or develop if it must with out getting to some extent the place it turns into unusable.

This time, the factor’s width will likely be 50% (the popular worth) of its container however by no means lower than 300px and by no means greater than 600px.

With these methods, we now have a content-first strategy to responsive design. We will separate content material from markup, that means the adjustments customers make is not going to have an effect on the design. We will begin to future-proof designs by planning for sudden adjustments in language or path. And we will enhance flexibility by setting desired dimensions alongside versatile alternate options, permitting for roughly content material to be displayed appropriately.

State of affairs first

Due to what we’ve mentioned thus far, we will cowl gadget flexibility by altering our strategy, designing round content material and house as a substitute of catering to gadgets. However what about that final little bit of Jeffrey Zeldman’s quote, “…conditions you haven’t imagined”?

It’s a really completely different factor to design for somebody seated at a desktop laptop versus somebody utilizing a cell phone and shifting by a crowded avenue in obvious sunshine. Conditions and environments are exhausting to plan for or predict as a result of they alter as folks react to their very own distinctive challenges and duties.

For this reason alternative is so essential. One dimension by no means suits all, so we have to design for a number of situations to create equal experiences for all our customers.

Fortunately, there’s a lot we will do to supply alternative.


“There are components of the world the place cell knowledge is prohibitively costly, and the place there may be little or no broadband infrastructure.”

I Used the Internet for a Day on a 50 MB Price range

Chris Ashton

One of many greatest assumptions we make is that folks interacting with our designs have a great wifi connection and a large display monitor. However in the true world, our customers could also be commuters touring on trains or different types of transport utilizing smaller cell gadgets that may expertise drops in connectivity. There’s nothing extra irritating than an internet web page that received’t load, however there are methods we can assist customers use much less knowledge or cope with sporadic connectivity.

The srcset attribute permits the browser to resolve which picture to serve. This implies we will create smaller ‘cropped’ photographs to show on cell gadgets in flip utilizing much less bandwidth and fewer knowledge.

With srcsetpreload, and lazy loading, we will begin to tailor a person’s expertise based mostly on the state of affairs they discover themselves in. What none of this does, nevertheless, is enable the person themselves to resolve what they need downloaded, as the choice is normally the browser’s to make.

So how can we put customers in management?


Media queries have at all times been about rather more than gadget sizes. They permit content material to adapt to completely different conditions, with display dimension being simply certainly one of them.

We’ve lengthy been in a position to verify for media sorts like print and speech and options resembling hover, decision, and coloration. These checks enable us to supply choices that swimsuit multiple situation; it’s much less about one-size-fits-all and extra about serving adaptable content material.

As of this writing, the Media Queries Degree 5 spec continues to be below growth. It introduces some actually thrilling queries that sooner or later will assist us design for a number of different sudden conditions.

For instance, there’s a light-level function that permits you to modify kinds if a person is in daylight or darkness. Paired with customized properties, these options enable us to rapidly create designs or themes for particular environments.

One other key function of the Degree 5 spec is personalization. As an alternative of making designs which are the identical for everybody, customers can select what works for them. That is achieved through the use of options like prefers-reduced-dataprefers-color-scheme, and prefers-reduced-motion, the latter two of which already take pleasure in broad browser help. These options faucet into preferences set through the working system or browser so folks don’t should spend time making every website they go to extra usable.

Media queries like this transcend decisions made by a browser to grant extra management to the person.

Anticipate the sudden

In the long run, the one factor we must always at all times count on is for issues to alter. Units specifically change sooner than we will sustain, with foldable screens already available on the market.

We will’t design the identical means we now have for this ever-changing panorama, however we will design for content material. By placing content material first and permitting that content material to adapt to no matter house surrounds it, we will create extra sturdy, versatile designs that enhance the longevity of our merchandise.

A whole lot of the CSS mentioned right here is about shifting away from layouts and placing content material on the coronary heart of design. From responsive elements to mounted and fluid models, there may be a lot extra we will do to take a extra intrinsic strategy. Even higher, we will check these methods throughout the design section by designing in-browser and watching how our designs adapt in real-time.

With regards to sudden conditions, we want to verify our merchandise are usable when folks want them, at any time when and wherever that could be. We will transfer nearer to reaching this by involving customers in our design selections, by creating alternative through browsers, and by giving management to our customers with user-preference-based media queries.

Good design for the sudden ought to enable for change, present alternative, and provides management to these we serve: our customers themselves.