Popular Design News of the Week: June 24, 2019 – June 30, 2019

Every week users submit a lot of interesting stuff on our sister site Webdesigner News, highlighting great content from around the web that can be of interest to web designers. 

The best way to keep track of all the great stories and news being posted is simply to check out the Webdesigner News site, however, in case you missed some here’s a quick and useful compilation of the most popular designer news that we curated from the past week.

Note that this is only a very small selection of the links that were posted, so don’t miss out and subscribe to our newsletter and follow the site daily for all the news.

HTML is the Web




11 Form Design Guidelines


CSS Shorthand Vs. Longhand – Which to Use


Is this Tokyo 2020 Logo Better than the Official Design?




Free Bootstrap HTML5 Templates


This is How Google will Collapse


Firefox Rebrand


Facebook’s Logo Drama is a Problem and for More Reasons than You Think


7 Absolute Truths I Unlearned as Junior Developer


Google’s New ReCAPTCHA has a Dark Side


Google Warns its Employees that Pride Protests are Against the Company’s CoC


Pizza Hut Resurrects its Classic Logo Because It’s Awesome


10 Habits that Lead to Great Results for Every Designer


A Learning Secret: Don’t Take Notes with a Laptop


There’s $70,000 Worth of Bitcoin Hidden Inside this Image


How UX Writing Can Make You a Better Designer


Design your Mobile Emails to Increase On-Site Conversion


Learning Synths


Gradient Generator – The Tool Generates a Stepped Gradient Between 2 Colors


Microsoft Bans Slack and Discourages AWS and Google Docs Use Internally


Great Products do Fewer Things, but Better


Google’s Six Rules for Great Data Design


History will not Be Kind to Jony Ive


Want more? No problem! Keep track of top design news from around the web with Webdesigner News.

p img {display:inline-block; margin-right:10px;}
.alignleft {float:left;}
p.showcase {clear:both;}
body#browserfriendly p, body#podcast p, div#emailbody p{margin:0;}

The Joys Of July (2019 Wallpapers Edition)

The Joys Of July (2019 Wallpapers Edition)

The Joys Of July (2019 Wallpapers Edition)

Cosima Mielke

A scoop of their favorite ice cream, a bike ride in the summer rain, or listening to the frog concert by the nearby lake — a lot of little things and precious moments have inspired the design community to create a wallpaper this July.

This monthly wallpapers challenge has been going on for more than nine years now, and each time anew, artists and designers from across the globe take it as an occasion to tickle their creativity and cater for beautiful, unique, and thought-provoking wallpaper designs. Wallpapers that are bound to get your ideas sparking, too.

The wallpapers in this collection all come in versions with and without a calendar for July 2019 and can be downloaded for free. A big thank-you to everyone who submitted their designs! At the end of this post, we also compiled some July favorites from past years’ editions that are just too good to be forgotten. Enjoy!

Please note that:

  • All images can be clicked on and lead to the preview of the wallpaper,
  • You can feature your work in our magazine, too. So if you have an idea for an August wallpaper design, please don’t hesitate to submit it. We’d love to see what you’ll come up with.

Further Reading on SmashingMag:

Hello, Strawberry Sundae!

“Is there anything more refreshing (and more delicious!) than a strawberry sundae on a hot summer day? Well, we don’t think so. And did you know that strawberry celebration is on its way in the U.S. Oh, yes! July 7th is the National Strawberry Sundae Day, and we predict that it’s going to be sweet and yummy. So, make your favorite dessert and start preparing yourself for the festive July days.” — Designed by PopArt Studio from Serbia.

Hello, Strawberry Sundae!

Riding In The Drizzle

“Rain has come, showering the existence with new seeds of life… Everywhere life is blooming, as if they were asleep and the falling music of raindrops have awakened them… Feel the drops of rain… Feel this beautiful mystery of life… Listen to its music, melt into it…” — Designed by DMS Software from India.

Riding In The Drizzle

We All Scream For Ice Cream

“There are two things that come to mind when I think about July: ice cream and the Fourth of July!” — Designed by Alyssa Merkel from the United States.

We All Scream For Ice Cream

My July

Designed by Cátia Pereira from Portugal.

My July

Alentejo Plain

“Based on the Alentejo region, south of Portugal, where there are large plains used for growing wheat. It thus represents the extensions of the fields of cultivation and their simplicity. Contrast of the plain with the few trees in the fields. Storks that at this time of year predominate in this region, being part of the Alentejo landscape and mentioned in the singing of Alentejo.” — Designed by José Guerra from Portugal.

Alentejo Plain

Frogs In The Night

“July is coming and the nights are warmer. Frogs look at the moon while they talk about their day.” — Designed by Veronica Valenzuela from Spain.

Frogs In The Night

July Rocks!

Designed by Joana Moreira from Portugal.

July Rocks!

Plastic Bag Free Day

“The objective of this date is to draw attention to the production and over-consumption of plastic bags worldwide, presenting alternatives to solve this serious environmental problem. It is urgent to change the behavior of all human beings regarding the use of plastic bags. For the preservation of the environment, we should use the same plastic bag for shopping, recycling or use paper bags. In this wallpaper I drew a plastic bag with a turtle inside it, as if it was imprisoned by its own bag, as if the ocean was reduced to a plastic bag, emphasizing the seriousness of this environmental problem, which has tortured both turtles and many others marine species.” — Designed by Carolina Santos from Portugal.

Plastic Bag Free Day

Save The Tigers

“Global Tiger Day, often called International Tiger Day, is an annual celebration to raise awareness for tiger conservation, held annually on July 29. It was created in 2010 at the Saint Petersburg Tiger Summit. The goal of the day is to promote a global system for protecting the natural habitats of tigers and to raise public awareness and support for tiger conservation issues.” — Designed by Athulya from Calicut.

Save The Tigers


“I was inspired by Hawaii type of scenarios with some reference to surf.” — Designed by Sónia Fernandes from Portugal.


Friendship Day

“The lower part of the image is represented in a more realistic and detailed form and represents the basis of the friendship, conveying a strong connection both in the simplicity and strength of the gestures, hands and medals that both children wear around their necks are symbols of this union. In terms of color I chose to use the ash scale, referring to the old photograph, implying the idea of a long duration of the relations of friendships and the memories we keep of our childhood friends, the illustration represented portrays a memory of mine, which makes it very personal. At the top of the wallpaper, the identity of the two characters appears pixelated, suggesting an idea of building deconstruction, through colored squares that come together and move away, as a symbol of connections and the sharing of emotions, which build and strengthen bonds of friendship.” — Designed by Carolina Santos from Portugal.

Friendship Day

Yellow Lemon Tree

“Summer is here, enjoy it and cool and stay hydrated!” — Designed by Melissa Bogemans from Belgium.

Yellow Lemon Tree

Summer Energy

Designed by IQUADART from Belarus.

Summer Energy

Heat Wave

Designed by Ricardo Gimenes from Sweden.

Heat Wave

Season Of Wind

“Summer is the season of wind. I like to stand on top of the mountains, hearing the song of the wind flying through the meadow.” — Designed by Anh Nguyet Tran from Vietnam.

Season Of Wind

Oldies But Goodies

Let’s go an a journey back in time: Down in our wallpaper archives, we rediscovered some July classics that are just too good to gather dust. May we present… (Please note that these designs don’t come with a calendar.)

Fire Camp

“What’s better than a starry summer night with an (unexpected) friend around a fire camp with some marshmallows? Happy July!” — Designed by Etienne Mansard from the UK.

Fire Camp

Heated Mountains

“Warm summer weather inspired the color palette.” — Designed by Marijana Pivac from Croatia.

Heated Mountains

Tutti Frutti

“July is National Ice Cream Month and who needs an invitation for a scoop or two, or three! Lacking the real thing, our Tutti Frutti wallpaper can satisfy until your next creamy indulgence.” — Designed by Karen Frolo from the United States.

Tutti Frutti

Memories In July

“Words are few, thoughts are deep, memories of you we’ll always keep.” — Designed by Suman Sil from India.

Memories In July

Cactus Hug

Designed by Ilaria Bagnasco from Italy.

Cactus Hug

Keep Moving Forward

“Snails can be inspiring! If you keep heading towards your goal, even if it is just tiny steps, enjoy the journey and hopefully it will be worth the effort.” — Designed by Glynnis Owen from Australia.

Keep Moving Forward

Sand And Waves

“What do you do in summer? You go to the beach. Even if you can’t go — feel the waves and sand and sun through this funny wallpaper.” — Designed by Olga Lepaeva from Russia.

Sand And Waves

Island River

“Make sure you have a refreshing source of ideas, plans and hopes this July. Especially if you are to escape from urban life for a while.” — Designed by Igor Izhik from Canada.

Island River

Ice Cream vs. Hot Dog

“It’s both ‘National Ice Cream Month’ and ‘National Hot Dog Month’ over in the US, which got me thinking — which is better? With this as your wallpaper, you can ponder the question all month!” — Designed by James Mitchell from the UK.

Ice Cream vs. Hot Dog

Summer Heat

Designed by Xenia Latii from Berlin, Germany.

Summer Heat

Peaceful Memories

“July is one of the most beautiful months of the year. Enjoy every day, every hour, which gives us this month!” — Designed by Nikolay Belikov from Russia.

Peaceful Memories

Floral Thing

“The wallpaper which I created consists of my personal sketches of Polish herbs and flowers and custom typography. I wanted it to be light and simple with a hint of romantic feeling. I hope you’ll enjoy it!” — Designed by Beata Kurek from Poland.

Smashing Desktop Wallpapers - July 2012

An Intrusion Of Cockroaches

“Ever watched Joe’s Apartment when you were a kid? Well that movie left a soft spot in my heart for the little critters. Don’t get me wrong: I won’t invite them over for dinner, but I won’t grab my flip flop and bring the wrath upon them when I see one running in the house. So there you have it… three roaches… bringing the smack down on that pesky human… ZZZZZZZAP!!” — Designed by Wonderland Collective from South Africa.

An Intrusion Of Cockroaches

Celebrate Freedom

“This wallpaper encourages you to appreciate and celebrate the country’s freedom as well as your own!” — Designed by Marina Zhukov from the USA.

Desktop Wallpaper

Hot Air Balloon

Designed by Studcréa from France

Hot Air Balloon

Only One

Designed by Elise Vanoorbeek from Belgium

Only one

Cool Summer

“Even though it is not summer in my country, I made a summer theme. A cool approach to summer themes, tough, very fresh and ‘twilighty’.” — Designed by Marcos Sandrini from Brazil.

Smashing Desktop Wallpapers - July 2012

Birdie Nam Nam

“I have created a pattern that has a summer feeling. For me July and summer is bright color, joy and lots of different flowers and birds. So naturally I incorporated all these elements in a crazy pattern.” — Designed by Lina Karlsson, Idadesign Ab from Sweden.

Smashing Desktop Wallpapers - July 2012

Sun In July

”…enjoy the sun in July!” — Designed by Marco Palma from Italy/Germany.

Smashing Desktop Wallpapers - July 2012

Join In Next Month!

Please note that we respect and carefully consider the ideas and motivation behind each and every artist’s work. This is why we give all artists the full freedom to explore their creativity and express emotions and experience throughout their works. This is also why the themes of the wallpapers weren’t anyhow influenced by us but rather designed from scratch by the artists themselves.

Thank you to all designers for their participation. Join in next month!

Smashing Editorial (il)
The (Developer’s) Growth Model

I really like the post “The Designer’s Growth Model” by Dennis Hambeukers. Dennis just invented this model, but it’s based on some existing ideas and it all rings true for me. Let me try to summarize the five stages as he lays them out for designers.

  1. Producers: You learn how to design. You learn fundamentals, you practice, you get good at doing design work and producing beautiful functional things. Then you have this “crisis” moment before the next stage where you find you can’t do enough work on your own and that you need to be able to scale your efforts, with multiple human beings and working on systems — and that’s an entirely new skill.
  2. Architects: Now that you’ve succeeded in scaling through team building and systems thinking, the next crisis moment is that that this the work still might be isolated, and too focused on internal thinking. To grow, you’ll need to work with people outside the design bubble, and understand problems more holistically.
  3. Connectors: Now that you’ve succeeded in being more collaborative across an entire organization and being a real problem solver, the next crisis moment is when everything becomes organizationally complicated. Just delivering products isn’t enough, because you’re involved deeply across the organization and you’re responsible for the success of what is delivered.
  4. Scientists: Now, you measure everything. You know what works and what doesn’t because you test it and can prove it, along with using all the skills you’ve honed along the way. Your next crisis is figuring out how to translate your work into actual change.
  5. Visionaries: You’re a leader now. You have an understanding of how the whole organization ticks, and you are a force for change.
From The Designer’s Growth Model

I think this can applies just as well to web development, with very little change. I can relate in many ways. I started plucking away at building sites alone. I found more success and was able to build bigger things by working with other people. At some point, it was clear to me that things don’t revolve around development. Development is merely one part of a car that doesn’t drive at all without many other parts. Even today, it’s clearer to me that I can be more effective and drive more positive change the more I know about all of the parts.

Not that I’ve completed my journey. If I had to map myself directly onto this model, I’m probably barely on step three — But a model is just a model. It’s not meant to be a perfect roadmap for everybody. Your own career path will be twistier than this. You might even experience bits from all the levels in different doses along the way.

The post The (Developer’s) Growth Model appeared first on CSS-Tricks.

Weekly Platform News: Event Timing, Google Earth for Web, undead session cookies

Šime posts regular content for web developers on webplatform.news.

In this week’s news, Wikipedia helps identify three slow click handlers, Google Earth comes to the web, SVG properties in CSS get more support, and what to do in the event of zombie cookies.

Tracking down slow event handlers with Event Timing

Event Timing is experimentally available in Chrome (as an Origin Trial) and Wikipedia is taking part in the trial. This API can be used to accurately determine the duration of event handlers with the goal of surfacing slow events.

We quickly identified 3 very frequent slow click handlers experienced frequently by real users on Wikipedia. […] Two of those issues are caused by expensive JavaScript calls causing style recalculation and layout.

(via Gilles Dubuc)

Google Earth for Web beta available

The preview version of Google Earth for Web (powered by WebAssembly) is now available. You can try it out in Chromium-based browsers and Firefox — it runs single-threaded in browsers that don’t yet have (re-)enabled SharedArrayBuffer — but not in Safari because of its lack of full support for WebGL2.

(via Jordon Mears)

SVG geometry properties in CSS

Firefox Nightly has implemented SVG geometry properties (x, y, r, etc.) in CSS. This feature is already supported in Chrome and Safari and is expected to ship in Firefox 69 in September.

See the Pen
Animating SVG geometry properties with CSS
by Šime Vidas (@simevidas)
on CodePen.

(via Jérémie Patonnier)

Browsers can keep session cookies alive

Chrome and Firefox allow users to restore the previous browser session on startup. With this option enabled, closing the browser will not delete the user’s session cookies, nor empty the sessionStorage of web pages.

Given this session resumption behavior, it’s more important than ever to ensure that your site behaves reasonably upon receipt of an outdated session cookie (e.g. redirect the user to the login page instead of showing an error).

(via Eric Lawrence)

The post Weekly Platform News: Event Timing, Google Earth for Web, undead session cookies appeared first on CSS-Tricks.


Matthias Ott, relaying an idea he heard from Derek Sivers:

Many personal websites, including this one here, have an “about” page. It’s a page that tells you something about the background of a person or about the services provided. But what this page often doesn’t answer – and neither do Twitter or Facebook pages – is what this person really is up to at the moment. A page that answers questions like: What are you focused on at this point in your life? What have you just started working on that excites you like nothing else? Did you just move to a new town? Did you start a new career as a Jengascript wrangler? To answer all those questions, Derek suggests to create a “now page”. A page that tells visitors of your site “what you’d tell a friend you hadn’t seen in a year.”

Very cool idea! Derek has a directory page of people who have done this.

I have more scattered thoughts:

  • It’s funny how social media sites aren’t very helpful with this. You’d think looking at someone’s social media profile would be the quickest and easiest way to catch up with what they are doing right now, but it just ain’t. That’s true for me, too. Random statements of what you’re working on don’t make very good social media posts. Maybe a pinned tweet could be like a “now” page, though.
  • I wonder if more homepages on people’s personal sites should be this. As I browse around some of the sites, I like a lot of the “now” pages more than I like the homepage.
  • I went with a “what I want you to do” section on my personal site. It’s a different vibe, but it almost doubles as a “now” page, as the things I want you to do are fairly related to the things I’m doing. Maybe the idea of a do page has some legs.

Direct Link to ArticlePermalink

The post Nownownow appeared first on CSS-Tricks.

8 Ways to Keep Your Startup Positively Aligned

When companies become misaligned, different departments may be working toward entirely different goals – in some cases, these goals may be at odds with each other. This is a challenge for the best companies out there, not to mention a startup in the midst of rapid growth. The result is a lack of collaboration as well as a lack of a shared vision and internal conflict.

In some cases, misalignment can even be fatal. More than 90 percent of startups have been known to fail; not because of the competition, but by self-destruction.

Company alignment may be simultaneously simple to understand and also abstract. Often, however, it’s a concept that’s difficult to execute and put into practice. That’s exactly why this blog post will take you through actionable ways that you can keep your startup in alignment.

1. Your Mission Should Be Your Foundation

The foundation of company alignment is having a shared mission or purpose. Before you can think about aligning your team along revenue targets and other objectives, you need to unite your team with a more powerful vision first – your mission.

Your mission should be one that’s short, memorable and specific

More specifically, what are you trying to do for your customers? Take Google’s mission statement, for instance: “To organize the world’s information and make it universally accessible and useful.”

Think of your mission as a “theme” or motto or phrase – just a few words. Your mission should be one that’s short, memorable and specific.

The purpose of this mission is that it provides your team with the a broader perspective about what they are doing and, most importantly, why. It unites them around a more powerful vision – one that transcends revenue-based objectives.

The second component is then aligning your mission with your specific revenue targets, growth goals and other similar objectives (more on this to come). The idea behind this is that your targets become tied to something arguably much more powerful that your team members can personally connect with.

As you will see, in the chaos of a startup, a motto is something that everyone will find easy to remember. It can serve as a powerful mechanism for keeping your entire team aligned and simultaneously moving together toward your goals.

2. Clearly Define Your Goals & Objectives at the Top

This may seem like an obvious step, but it bears repeating: Your startup likely has goals and priorities, but it’s important that these are as clear as possible.

there will be things that you will need to say ‘no’ to

You also need to figure out what’s most important at this very moment. There will always be other things that you could be devoting attention to, but it’s a CEO’s job to stay focused on the most important goals at the present moment.

To put it another way: there will be things that you will need to say ‘no’ to.

But, why is this so important? Because it ensures that the CEO models this behaviour from the top down. When other priorities start to trickle in, you risk contaminating the entire team by leading them in alternate directions. This can be disastrous for startups because it can slow progress whereas, by nature, startups have to move quickly.

3. Align Departmental Goals With The Company’s

Once you have clearly defined your company’s goals at the top level, the next step is to ensure that: a) Your entire team understands what you’re working toward at the highest level, and b) You determine sub-objectives for each department (sales, marketing, accounting, etc.) and that they are tied to and help accomplish your company’s broader goals.

Having your own company objectives is important, but what does this mean for all of the other departments? Make that clear and ensure everyone is contributing to the greater whole – which is ultimately at the essence of company alignment.

You can also take this one step further by connecting departmental sub-objectives with your broader mission. In doing so, your goals become infused with meaning. Put another way, employees start to believe in the ‘why’ of what you’re doing, which is essential in getting them to act.

It’s one thing for your employees to understand your goals but it’s a whole other thing for them to actually believe in them.

4. Translate Goals Into Clearly Defined Actions

Once you have set your goals (both at the top level and at the departmental level), it’s important to determine how these goals can be further refined into clearly defined actions that both you and departments can work toward.

Here’s an example: It’s one thing to set a goal of losing 10 pounds but in order to accomplish that goal you need to refine the action steps that will move you in that direction (for example: eating healthier, starting a fitness plan, etc.).

So, start off by outlining two or three objectives and then breaking those goals into more concrete steps and even measurable metrics that will actually be your team’s focus.

5. Repetition is Key

In a startup, things move quickly. The content of meetings just a week ago can become like a distant memory. That’s why it’s so important for management to make it a point to go over your objectives on a daily basis.

It’s not enough to communicate your goals one time – this is a continual process.

One of the best ways to do this? Go back to your mission (step one). By connecting your objectives with your broader mission statement, you can easily reinforce these goals and keep them at the forefront of your startup without having to continually go into the specifics of those goals.

6. Regularly Review Progress

While it’s important to have clearly defined goals and action steps, it’s arguably equally important to review the progress of these action steps on a regular basis (at least monthly but ideally bi-weekly).

Management will likely find that teams will not be working in alignment at first, so it’s a good idea to ensure that everyone recognizes that this process will be a slow one – one that will require continual nudges in the direction of your goals.

misalignment doesn’t just happen overnight, it’s a slow process

Reviewing your progress on a regular basis not only gives your team the opportunity to redirect wherever necessary, but it also serves as a continual reminder of your company’s objectives.

Remember, too, that misalignment doesn’t just happen overnight, it’s a slow process. That’s why regularly reviewing your goals (and, more specifically, the action steps) will keep your company on the right track.

One of the best ways to track progress? Having an internal dashboard that is set up on the wall for all team members to see.

7. Daily Stand-ups for Everyone

Stand-ups – daily meetings where employees report on what they’re working on are a mainstay of software companies (and, more specifically, engineering teams).

However, there is a lot of value that can come from having involvement from everyone – or at least the core teams.

Communal stand-ups give an opportunity for all teams to share what they’re working on, to collaborate with one another and ultimately to keep your goals at the very culture of your startup.

8. Celebrate Success (But Also Be Transparent About Challenges)

It’s important to take the time to highlight success stories of team members or even entire departments that are working toward and hitting company’s goals. A great example is a team lunch.

Celebrating these milestones creates a culture of teamwork and reinforces your objectives.

Of course, it’s important to also be transparent as far as numbers go and to give insight into any challenges as well. This, too, creates transparency within your organization and ensures that everyone is always on the same page.

Wrapping It Up

Above all, the key to keeping company alignment is a solid foundation: a mission that unites your entire team. From there, top company goals and sub-departmental objectives should work in tandem so that everyone is contributing to the greater whole.

This shared mission, however, is the glue that holds your startup together. As your team grows, your mission (and, more specifically, your values) are what will guide management as they make a myriad of decisions, including those that have to do with hiring.

Throw in continually measuring progress, stand-ins and celebrating milestones and you have a recipe for success when it comes to ensuring that your entire organization is working toward a common goal.

Lastly, recognize that keeping company alignment is a continual process – after all, your goals and objectives will continue to change over time. Eventually, however, the process of setting clear goals and continually working toward them as a team will simply become part of your company culture.


Featured image via Unsplash.

Add Realistic Chalk and Sketch Lettering Effects with Sketch’it – only $5!

p img {display:inline-block; margin-right:10px;}
.alignleft {float:left;}
p.showcase {clear:both;}
body#browserfriendly p, body#podcast p, div#emailbody p{margin:0;}

Better Search UX Through Microcopy

Better Search UX Through Microcopy

Better Search UX Through Microcopy

Andrew Millen

It’s hard to overstate the importance of web search. Searching is as old as the Internet itself, and by some measures, even older. A well-designed search benefits both you and your users; it increases conversions, reduces bounce rates, and improves the user experience.

Search is especially important on large scale sites and e-commerce experiences, where the majority of revenue comes from search-driven sessions. Studies show that up to 50% of users go straight to the internal search bar of a website, and that 15% outright prefer using the search function to browsing the hierarchical menu. This means that for all the love and care that goes into determining the information architecture of a site, just as much has to go into designing the search experience.

Complicating the problem is the fact that users’ search skills are flimsy at best, and incompetent at worst. Getting good results from a search engine often requires multiple attempts and reformulations, which users rarely do. And as search technology improves over time, users are increasingly likely to accept the results of a search as the answer to their question, even if their query was flawed. Users who favor searches tend to move quickly, scanning the page for that familiar-looking rectangle, and bouncing quickly when they don’t find what they’re looking for.

Communicating with those users “at speed” is a tricky job that requires a specialized tool: microcopy. The name ‘microcopy’ belies its own importance. It may be small, but big successes often hinge on it. It’s a place where voice can shine through, where good impressions are made, and where utility and branding intersect. With that in mind, let’s dive into the many ways that microcopy and contextualization can vastly improve a search experience.

In accordance with Jakob’s Law, your first instinct when designing a search bar should be to put a rectangular box in the upper right or upper left corner. You should add a label or A11y-friendly placeholder text, and include a submit button that says “Search.”

Hiding the search bar behind a link, forgoing placeholder text, or opting for magnifying glass icon CTA instead of plain text are all valid design decisions in the right context. Just make sure you’re not abstracting the function of the search bar unnecessarily because searching already has a higher interaction cost than browsing.

Every barrier, however inconsequential you may find it as a designer, risks negatively affecting the UX and your bottom line. If there’s a risk your users may confuse the magnifying glass icon for a “zoom” button, you should mitigate that.

Placeholder Text

Placeholder text is a great place to enhance the experience. It can be informational, it can be a place for brand expression, and it can nudge wavering users in the right direction. Anytime I see a search bar that just says “Search,” I see a missed opportunity.

So what’s a better approach? It varies from site to site. First, familiarize yourself with your business goals, your brand, and your users’ existing habits. Then, consider how you can be the most helpful.

Nudge The User

A suggestive approach can reduce the user’s anxiety. Clue your users into the fact that they can search in multiple ways, especially if they may not be familiar with your full range of products or services. ASOS suggests searching for inspiration in addition to products and brands:

The search bar on the ASOS website
(Image source: ASOS) (Large preview)
Be Informative

Tell the user exactly what they’ll be getting when they hit submit. On Shutterstock, a site wholly devoted to the search of a massive photo archive, this placeholder text cleverly doubles as a tagline when paired with the logo:

The search bar on the Shutterstock website
(Image source: Shutterstock) (Large preview)
Reinforce The Brand

Home Depot’s search bar doesn’t lead the user, but instead presents a helpful, personal tone which I’m sure is in line with their brand voice guidelines. This is probably the best approach considering the size of their product catalog:

Home Depot’s search bar
(Image source: The Home Depot) (Large preview)

Using Search Logs To Your Advantage

If you’re not sure the best way to optimize your placeholder text, a good place to start is your search log database. Learning how to break down these results can be incredibly valuable when formulating helpful content design. You’ll be able to see first-hand the vocabulary people use to search your site, and more importantly, the gaps between what you offer and what your users are looking for.

During the search process, your copy should offer as much help along the way as possible without being overbearing. That includes everything from an obvious “Cancel” or “Clear” button to logging each user’s recent searches for surfacing later. When choosing the right microcopy to accompany these features, add a dash of brown sauce.


Users who use the search bar are doing so because they’re looking for something specific, which makes autosuggestions a valuable (and increasingly expected) tool. Specificity, in this case, may be as focused as “Women’s gray shoe size 9M” or as open-ended as “Sandwich shops near me.”

Autosuggestions also reduce the risk of returning bad results, alleviate the mental effort on the user, and present an opportunity to surface your most popular products.

(Image source: Chewy) (Large preview)

Often these don’t require additional context or copy at all, but can just be listed below the search bar as the user types, as shown in the example above.

Showing related searches on the results page is another way to help guide users without getting in the way. A common pattern is providing a few clickable keywords related to the original query above the results. A little copy that states “Other users searched for” is a good way to incorporate social proof into the search experience.

Recent Searches

If your technology allows it, saving and resurfacing recent searches is another way to helpfully reduce the memory load on the user. Make sure you add context with copy, but it can be as straightforward as this:

The search bar on the Macy’s website
(Image source: Macy’s) (Large preview)

Handling Results

There are a two pieces of copy that I’d consider required when displaying search results:

  1. The query itself.
    If the search bar is highly visible, it can be displayed here. You can also create an H1 that states “Results for {{terms}}.”
  2. The number of results.
    If the results are paginated, you might also include the number of pages.
The search bar on the REI Co-op website
(Image source: REI Co-op) (Large preview)

No Results

Whether through their own error not, users will inevitably encounter a “no results” page at some point. Luckily, there are ways to handle this gracefully; in fact, with the right approach, this dead end can actually be a great opportunity for content discovery.

First of all, don’t expect your users to refine their search if they get no results — at least not without a UI that encourages it. Users are reluctant to reformulate their query and have trouble when trying to. They’re more likely to engage with whatever information they’re presented with and take it from there, or abandon the task entirely. (When was the last time you clicked through to the second page of Google search results?)

That said, it’s easy to see how a little copywriting and contextualization can improve the experience. Nielsen Norman Group has a comprehensive guide on how to handle No Results SERPs, with the gist being:

  • Make it obvious there are no results.
    It’s easy to get cute and accidentally bury the lede. It’s also tempting to intentionally hide the “no results” messaging to obfuscate the error entirely. Either way, don’t trick the user.
  • Offer paths forward.
    Suggest ways to refine the search query (such as checking your spelling), and also provide links to popular content or products that have the highest likelihood of connecting with the user.
  • Strike the right tone.
    Use your brand voice, but don’t run the risk of exacerbating the situation with humor that might be ill-received by a frustrated user.

Also, bear in mind that empty SERPs may arise because a user mistakenly submitted without entering any query at all. You should have a content plan for this scenario as well rather than returning all items in the database, for example.

Wrapping Up

Writing a good search experience comes down to thoughtfulness. As designers, we’ve probably used and created hundreds of different web search experiences, so we breeze through the process. But when we consider every small step of the process (every microinteraction and every edge case), the minor changes we make can have a major impact on the experience. Next time you find yourself reaching for a visual solution to a search problem, consider using your words instead.

Further Reading on SmashingMag:

Smashing Editorial (dm, yk, il)
Which CSS IS AWESOME makes the most sense if you don’t know CSS well?

Peter-Paul posted this question:


Note the interesting caveat: only vote in the poll if you don’t know CSS well.

The winning answer was D! You gotta wonder if the result would have been different if the request for non-CSS experts wasn’t there.

I like to think I know CSS OK, so I didn’t vote. My brain goes like this:

  1. I think he’s asking “by default,” so the answer may assume there’s no other CSS doing anything to that text.
  2. I wish I knew why the box was that particular width, but I guess I’ll just assume it’s a set width.
  3. It’s not B because ellipsis stuff requires extra stuff, and doesn’t work on multiple lines like that — unless we’re talking line clamping, which is even weirder.
  4. It’s not C because that requires hiding overflow which is never really a default — that is, except off the top and left of the browser window, I guess. Or in an iframe.
  5. It’s not D because words just don’t break like that unless you do pretty specific stuff.
  6. A actually makes decent sense. It’s weird to look at, but I’ve been dealing with stuff busting out of containers my whole career. C’est la vie.

Remember, we’ve done a deep dive into CSS IS AWESOME before and how it interestingly captures the weirdness of CSS.

The post Which CSS IS AWESOME makes the most sense if you don’t know CSS well? appeared first on CSS-Tricks.

Build A PWA With Webpack And Workbox

Build A PWA With Webpack And Workbox

Build A PWA With Webpack And Workbox

Jad Joubran

A Progressive Web App (PWA) is a site that uses modern technology to deliver app-like experiences on the web. It’s an umbrella term for new technologies such as the ‘web app manifest’, ‘service worker’, and more. When joined together, these technologies allow you to deliver fast and engaging user experiences with your website.

This article is a step-by-step tutorial for adding a service worker to an existing one-page website. The service worker will allow you to make your website work offline while also notifying your users of updates to your site. Please note that this is based on a small project that is bundled with Webpack, so we’ll be using the Workbox Webpack plugin (Workbox v4).

Using a tool to generate your service worker is the recommended approach as it lets you manage your cache efficiently. We will be using Workbox — a set of libraries that make it easy to generate your service worker code — to generate our service worker in this tutorial.

Depending on your project, you can use Workbox in three different ways:

  1. A command-line interface is available which lets you integrate workbox into any application you have;
  2. A Node.js module is available which lets you integrate workbox into any Node build tool such as gulp or grunt;
  3. A webpack plugin is available which lets you easily integrate with a project that is built with Webpack.

Webpack is a module bundler. To simplify, you can think of it as a tool that manages your JavaScript dependencies. It allows you to import JavaScript code from libraries and bundles your JavaScript together into one or many files.

To get started, clone the following repository on your computer:

git clone git@github.com:jadjoubran/workbox-tutorial-v4.git
cd workbox-tutorial-v4
npm install
npm run dev

Next, navigate to http://localhost:8080/. You should be able to see the currency app we’ll be using throughout this tutorial:

Screenshot of the currency app we’re building in this article.
‘Currencies’ is a PWA that lists conversion fees of currencies against the Euro (€) currency. (Large preview)

Start With An App Shell

The application shell (or ‘app shell’) is a pattern inspired from Native Apps. It will help give your app a more native look. It simply provides the app with a layout and structure without any data — a transitional screen that is aimed to improve the loading experience of your web app.

Here are some examples of app shells from native apps:

Google Inbox App Shell
Google Inbox App Shell: A few milliseconds before the emails load into the app shell. (Large preview)
Twitter native App Shell
Twitter’s native app on Android: App shell showing navbar, tabs, and loader. (Large preview)

And here are examples of app shells from PWAs:

App Shell of Twitter’s PWA
The app shell of Twitter’s PWA (Large preview)
App Shell of Flipkart’s PWA
The app shell of Flipkart’s PWA (Large preview)

Users like the loading experience of app shells because they despise blank screens. A blank screen makes the user feel that the website is not loading. It makes them feel as if the website were stuck.

App shells attempt to paint the navigational structure of the app as soon as possible, such as the navbar, the tab bar as well as a loader signifying that the content you’ve requested is being loaded.

So How Do You Build An App Shell?

The app shell pattern prioritizes the loading of the HTML, CSS and JavaScript that will render first. This means that we need to give those resources full priority, hence you have to inline those assets. So to build an app shell, you simply have to inline the HTML, CSS and JavaScript that are responsible for the app shell. Of course, you should not inline everything but rather stay within a limit of around 30 to 40KB total.

You can see the inlined app shell in the index.html. You can inspect the source code by checking out the index.html file, and you can preview it in the browser by deleting the <main> element in dev tools:

Currencies PWA App Shell with navbar & loader
The App Shell that we’re building in this article. (Large preview)

Does It Work Offline?

Let’s simulate going offline! Open DevTools, navigate to the network tab and tick the ‘Offline’ checkbox. When you reload the page, you will see that we will get the browser’s offline page.

Browser’s offline error page
The request to the homepage failed so we obviously see this as a result. (Large preview)

That’s because the initial request to / (which will load the index.html file) will fail because the Internet is offline. The only way for us to recover from that request failure is by having a service worker.

Let’s visualize the request without a service worker:

Animation of a network request going from the client’s browser to the internet.
Network request goes from the browser to the Internet and back. (Icons from flaticon.com) (Large preview)

A service worker is a programmable network proxy, which means it sits in between your web page and the Internet. This lets you control incoming and outgoing network requests.

Animation of a network request intercepted by the service worker.
Network request gets intercepted by the service worker. (Icons from flaticon.com) (Large preview)

This is beneficial because we can now re-route this failed request to the cache (assuming we have the content in the cache).

Animation of a network request interecepted by the service worker and redirected to the cache.
Network request gets redirected to the cache when it already exists in the cache. (Icons from flaticon.com) (Large preview)

A service worker is also a type of Web Worker, meaning that it runs separately from your main page and doesn’t have access to either the window or document object.

Precache The App Shell

In order to make our app work offline, we’re going to start by precaching the app shell.

So let’s start by installing the Webpack Workbox plugin:

npm install --save-dev workbox-webpack-plugin

Then we’re going to open our index.js file and register the service worker:

if ("serviceWorker" in navigator){
window.addEventListener("load", () => {

Next, open the webpack.config.js file and let’s configure the Workbox webpack plugin:

//add at the top
const WorkboxWebpackPlugin = require("workbox-webpack-plugin"); //add inside the plugins array:
plugins: [
, new WorkboxWebpackPlugin.InjectManifest({ swSrc: "./src/src-sw.js", swDest: "sw.js"

This will instruct Workbox to use our ./src/src-sw.js file as a base. The generated file will be called sw.js and will be in the dist folder.

Then create a ./src/src-sw.js file at the root level and write the following inside of it:


Note: The self.__precacheManifest variable will be imported from a file that will be dynamically generated by workbox.

Now you’re ready to build your code with npm run build and Workbox will generate two files inside the dist folder:

  • precache-manifest.66cf63077c7e4a70ba741ee9e6a8da29.js
  • sw.js

The sw.js imports workbox from CDN as well as the precache-manifest.[chunkhash].js.

//precache-manifest.[chunkhash].js file
self.__precacheManifest = (self.__precacheManifest || []).concat([ "revision": "ba8f7488757693a5a5b1e712ac29cc28", "url": "index.html" }, "url": "main.49467c51ac5e0cb2b58e.js" ]);

The precache manifest lists the names of the files that were processed by webpack and that end up in your dist folder. We will use these files to precache them in the browser. This means that when your website loads the first time and registers the service worker, it will cache these assets so that they can be used the next time.

You can also notice that some entries have a ‘revision’ whereas others don’t. That’s because the revision can sometimes be inferred from the chunkhash from the file name. For example, let’s take a closer look at the file name main.49467c51ac5e0cb2b58e.js. It has a revision is in the filename, which is the chunkhash 49467c51ac5e0cb2b58e.

This allows Workbox to understand when your files change so that it only cleans up or updates the files that were changed, rather than dumping all the cache every time you publish a new version of your service worker.

The first time you load the page, the service worker will install. You can see that in DevTools. First, the sw.js file is requested which then requests all the other files. They are clearly marked with the gear icon.

Screenshot of DevTools Network tab when the service worker gets installed.
Requests marked with the ⚙️ icon are requests initiated by the service worker. (Large preview)

So Workbox will initialize and it will precache all the files that are in the precache-manifest. It is important to double check that you don’t have any unnecessary files in the precache-manifest file such as .map files or files that are not part of the app shell.

In the network tab, we can see the requests coming from the service worker. And now if you try to go offline, the app shell is already precached so it works even if we’re offline!

Screenshot of Dev Tools Network tab showing API calls failing.
API calls fail when we go offline. (Large preview)

Cache Dynamic Routes

Did you notice that when we went offline, the app shell works but not our data? That’s because these API calls are not part of the precached app shell. When there’s no Internet connection, these requests will fail and the user won’t be able to see the currency information.

However, these requests cannot be precached because their value comes from an API. Moreover, when you start having multiple pages, you don’t want to cache all API request in one go. Instead, you want to cache them when the user visits that page.

We call these ‘dynamic data’. They often include API calls as well as images and other assets that are requested when a user does a certain action on your website (e.g. when they browse to a new page).

You can cache these using Workbox’s routing module. Here’s how:

//add in src/src-sw.js
workbox.routing.registerRoute( /https:\/\/api\.exchangeratesapi\.io\/latest/, new workbox.strategies.NetworkFirst({ cacheName: "currencies", plugins: [ new workbox.expiration.Plugin({ maxAgeSeconds: 10 * 60 // 10 minutes }) })

This will set up dynamic caching for any request URL that matches the URL https://api.exchangeratesapi.io/latest.

The caching strategy that we used here is called NetworkFirst; there are two other ones that are often used:

  1. CacheFirst
  2. StaleWhileRevalidate

CacheFirst will look for it in the cache first. If it’s not found, then it will get it from the network. StaleWhileRevalidate will go to the network and the cache at the same time. Return the cache’s response to the page (while in the background) it will use the new network response to update the cache for the next time it’s used.

For our use case, we had to go with NetworkFirst because we’re dealing with currency rates that change very often. However, when the user goes offline, we can at least show them the rates as they were 10 minutes ago — that’s why we used the expiration plugin with the maxAgeSeconds set to 10 * 60 seconds.

Manage App Updates

Everytime a user loads your page, the browser will run the navigator.serviceWorker.register code even though the service worker is already installed and running. This allows the browser to detect if there’s a new version of the service worker. When the browser notices that the file has not changed, it just skips the registration call. Once that file changes, the browser understands that there’s a new version of the service worker, thus it installs the new service worker parallel to the currently running service worker.

However, it pauses at the installed/waiting phase because only one service worker can be activated at the same time.

The life cycle of a service worker: Parsed, Installed/Waiting, Activated & Redundant
A simplified life cycle of a service worker (Large preview)

Only when all the browser windows controlled by the previous service worker are installed, then it becomes safe for the new service worker to activate.

You can also manually control that by calling skipWaiting() (or self.skipWaiting() since self is the global execution context in the service worker). However, most of the time you should only do that after asking the user if they want to get the latest update.

Thankfully, workbox-window helps us achieve this. It’s a new window library introduced in Workbox v4 that aims at simplifying common tasks on the window’s side.

Let’s start by installing it with the following:

npm install workbox-window

Next, import Workbox at the top of the file index.js:

import { Workbox } from "workbox-window";

Then we’ll replace our registration code with the below:

if ("serviceWorker" in navigator) { window.addEventListener("load", () => { const wb = new Workbox("/sw.js"); wb.register(); }); }

We’ll then find the update button which has the ID app-update and listen for the workbox-waiting event:

//add before the wb.register()
const updateButton = document.querySelector("#app-update");
// Fires when the registered service worker has installed but is waiting to activate.
wb.addEventListener("waiting", event => { updateButton.classList.add("show"); updateButton.addEventListener("click", () => { // Set up a listener that will reload the page as soon as the previously waiting service worker has taken control. wb.addEventListener("controlling", event => { window.location.reload(); }); // Send a message telling the service worker to skip waiting. // This will trigger the `controlling` event handler above. wb.messageSW({ type: "SKIP_WAITING" }); });

This code will show the update button when there’s a new update (so when the service worker is in a waiting state) and will send a SKIP_WAITING message to the service worker.

We’ll need update the service worker file and handle the SKIP_WAITING event such that it calls the skipWaiting:

//add in src-sw.js
addEventListener("message", event => { if (event.data && event.data.type === "SKIP_WAITING") { skipWaiting(); });

Now run npm run dev then reload the page. Go into your code and update the navbar title to “Navbar v2”. Reload the page again, and you should be able to see the update icon.

Wrapping Up

Our website now works offline and is able to tell the user about new updates. Please keep in mind though, that the most important factor when building a PWA is the user experience. Always focus on building experiences that are easy to use by your users. We, as developers, tend to get too excited about technology and often end up forgetting about our users.

If you’d like to take this a step further, you can add a web app manifest which will allow your users to add the site to their home screen. And if you’d like to know more about Workbox, you can find the official documentation on the Workbox website.

Further Reading on SmashingMag:

Smashing Editorial (dm, yk, il)
Three Predictions From the State of CSS 2019 Survey

Running a developer survey like the State of CSS is a multi-stage process. First, you need to collect the data. Then, you process it into a usable shape. Finally, you come up with nifty ways to visualize it and release it to the world.

But then, once the dust settles and the traffic dies down comes my favorite part: actually thinking about the data. By taking a deeper look at our data, as well as observing how the community discussed our findings, three unexpected trends ended up coming into focus.

But first, some background for those not already familiar with the project.

I first started the State of JavaScript survey three years ago in 2016 as a way to answer my own uncertainties about the future of web development. At the time, JavaScript fatigue was running wild and I thought a comprehensive developer survey could prove itself the antidote.

The original State of JavaScript 2016 edition

Turns out I hit a nerve: that first survey turned out to be very popular, and our audience has grown each year since, along with the scope of the survey. (I was also joined by Raphael Benitte, creator of the Nivo.js dataviz library, to help me with data processing and visualization.) This year marks the first time we’re pivoting out into a new dimension, namely the not-so-simple world of CSS.

Taking on CSS

Prediction 1: CSS still has a lot of unexplored territory

One of the things we wanted to quantify with the survey was how much of CSS was still left “unexplored.” In other words, what CSS features are developers either unfamiliar with, or else hadn’t yet used. For that reason we decided early-on to focus our Features section on new CSS properties, like shapes, masking, or scroll-snap rather than “boring” floats or tables.

The resulting data paints an interesting picture: it turns out that when you look at it this way, CSS morphs from a familiar landscape to a wild, unexplored jungle.

A look at comparing Flexbox vs. CSS Grid provides a good illustration of this trend. While nearly everybody who’s heard of Flexbox has also used it, only 55% of developers who are aware of CSS Grid have actually tried it. That’s a big gap, especially for a technology as important as CSS Grid!

Layout Features

Or take CSS Shapes: 68% of developers are aware of them, only 31% of that group has actually used the feature.

CSS Shapes

This all points at a big gap between what we collectively want to learn and what we actually know. It’s that potential for growth that is exactly what makes CSS so exciting in 2019.

Prediction 2: Functional CSS will keep rising

If you’re old enough to remember the CSS Zen Garden — or to have actually learned CSS through it (in which case I know how you feel, my back hurts when I get up in the morning as well) — then this next trend might seem weird, or even downright wrong.

CSS Zen Garden: one page, many themes.

Functional CSS rejects the platonic ideal of pure, untainted markup free from any styling concerns and embraces “functional” (aka “atomic” or “utility”) classes. Think



Adopting this approach means you can’t magically update your stylesheet and change your entire design without modifying a single line of markup. But be honest, how often does this happen anyway? Compared to the often theoretical elegance of the Zen Garden philosophy, libraries like Tailwind and Tachyons provide tangible, real-world benefits, which explains why they’re so highly regarded. In fact, those take the #1 and #4 spots, respectively, in terms of satisfaction ratio in the CSS Framework category.

Awareness, interest, and satisfaction ratio rankings for CSS frameworks.

Tailwind especially seems to be picking up speed, at least judging by the Twitter engagement from its community in response to the survey results. Having just hit version 1.0, it’s definitely a project to keep an eye on!

Prediction 3: The battle for CSS has just begun

Looking at our data, I can’t help but wonder if “JavaScript fatigue” will soon be replaced by “CSS fatigue.”

When evaluating technologies, it’s important to look not just at raw usage numbers, but also at user satisfaction. After all, you don’t want to jump on the latest bandwagon just to find out its current occupants can’t wait to hop off it.

This scatterplot chart that’s divided into quadrants is perfect for this. It plots usage against satisfaction, making it easy to isolate popular, high-satisfaction tools into their own quadrant.

Usage vs. Satisfaction

What’s apparent in this chart is that the most densely populated area is the “Assess” quadrant. In other words, the low-usage, high-satisfaction technologies that are still battling it out for supremacy. This is exactly the state that the JavaScript ecosystem finds itself in as well. Many contenders, but few decisive winners as of today.

This is not necessarily a bad thing: yes, it does make the average developer’s life harder when it comes to picking the right tool, but hey, this is why we do what we do! Additionally, competition can only be good for the ecosystem as a whole. Once the dust settles, we’ll hopefully end up with the best possible options having survived!

CSS in 2019

Overall, the State of CSS survey shows that this is not your grandpa’s CSS anymore. For years, we developers have loved to complain about the inadequacies of CSS and its lack of powerful features. But in 2019, CSS is challenging us to put our money where our mouthes are: here’s all the features you’ve always wanted. Now what are you going to do about it?

I, for one, am very excited to dive even deeper into this new world of styling. And, of course, to tune back in 2020 to see what new trends we find then!

The post Three Predictions From the State of CSS 2019 Survey appeared first on CSS-Tricks.

Privacy Settings
We use cookies to enhance your experience while using our website. If you are using our Services via a browser you can restrict, block or remove cookies through your web browser settings. We also use content and scripts from third parties that may use tracking technologies. You can selectively provide your consent below to allow such third party embeds. For complete information about the cookies we use, data we collect and how we process them, please check our Privacy Policy
Consent to display content from Youtube
Consent to display content from Vimeo
Google Maps
Consent to display content from Google