How to Design for the Web in 2019
Tags: beginners, javascript, webdev, career
Published: 2019-08-23 09:49:42

---
title: How to Design for the Web in 2019
published: true
cover_image: https://thepracticaldev.s3.amazonaws.com/i/ockh457jcpt8xlidpg45.jpeg
tags: beginners,javascript,webdev,career
canonical_url: https://medium.com/commitlog/how-to-design-for-the-web-in-2019-a0be4d6702e2
---

I've written about how to design for the modern web before way back in 2018, but the web moves forward quickly so those guidelines are already obsolete and outdated as more modern conventions have become mainstream.

Let's break down and go through the most important design principles of designing for the modern web in 2019.

# Let Users Know You Have A Mobile Application

This one weird trick remains the most important principle and it's not without reason. Well paid focus groups have shown that the very first thing a user wants to do when visiting your web site in their web browser is to install a mobile application.

The best way to achieve this is to show a modal dialog that prompts them to install it.

![](https://thepracticaldev.s3.amazonaws.com/i/px6bg45tmr9b33bag3gg.png)

As an optional step, you may add a button or hyperlink to close said dialog, but it's important to use some cryptic text, preferably this is worded in such an as to shame the user into compliance.

**Tip**: If you don't have an actual mobile application, you can just get an intern to package your website in a webview with security disabled and ship that! Native is dead, web is the future.

# Implement a Do Not Track Policy

Many modern browsers these days support a HTTP header called DNT which stands for Do Not Track. This header is meant to signal that a user does not want to be tracked and unfortunately this is enabled by default in some browsers like [Brave](https://brave.com/cas671) (An open source ad-blocking browser made by the creator of JavaScript Brendan Eich).

![](https://thepracticaldev.s3.amazonaws.com/i/wg9rjv39ponwm3d7p0i6.png)

However, don't worry as all is not lost! We've found that most users will remove this header when prompted to do so so in order to handle this we recommend to serve a guide on how to disable it when the header is present.

**Tip**: Don't serve the prompt to disable DNT on the guide that shows the users how to disable DNT as the conversion rate ends up being rather poor.

# Implementing a Cookie Policy

Cookie consent is confusing, while it is not required in most cases with reasonable cookie use it is better to prompt the user for consent so we can track everything without having to consult with legal or have any fear of repercussions.

![](https://thepracticaldev.s3.amazonaws.com/i/m9ee1b71scwx7adn7tgd.png)

**Tip**: Don't serve pages without cookies enabled even when we don't need them as it means we can track less personal information thus we have less user information to sell.

# Blocking Ad-Blockers

Ad-blockers are everywhere and can really hurt your margins, so the obvious precaution to take is to block ad-blockers.

![](https://thepracticaldev.s3.amazonaws.com/i/pfhwl7pncwo5xjyx6xxi.png)

Chrome is moving to block ad-blockers for us tho so if the user is using a browser like [Brave](https://brave.com/cas671) we'll be able to just claim the user's browser isn't modern enough.

![](https://thepracticaldev.s3.amazonaws.com/i/jxr6dlq0avk6heiepidp.png)

**Tip**: Don't tell anyone about [Brave, the open source Chromium based browser with built-in ad-blocking](https://brave.com/cas671).

# Blocking Non U.S Countries and Devices

Between Cupcake nations, GDPR, link taxes and the Huwaei ban which we haven't been able to figure out at all, the best approach is just to block them all to avoid any and all liability.

![](https://thepracticaldev.s3.amazonaws.com/i/1oftcgqv86v75af5e2q1.png)

**Tip**: The United States is #1.

# Maximizing Your Layout

The days of 800 pixels wide layouts are gone. Modern displays tend to be widescreen so make sure to take advantage of the entire width in the layout.

![](https://thepracticaldev.s3.amazonaws.com/i/1el3j5ddvl2xl55zmtkk.png)

**Tip**: Research has shown that modal dialogs that cannot be closed perform better.

# Use Notifications

Modern browsers support notifications so enabling them is a must, but as a fallback also automatically subscribe the user to to a newsletter, sms notifications and/or email notifications.

![](https://thepracticaldev.s3.amazonaws.com/i/7ph9s1f3g0ijp2kh7fv6.png)

**Tip**: Use these notifications to tell users when you have a new version of the mobile application available.

# Prompt The User

Sometimes users forget they can sign up, be sure to prompt them regularly and feature a prominent sign up link or button.

![](https://thepracticaldev.s3.amazonaws.com/i/zsyn3tqlfou4d11no16n.png)

**Tip**: Also prompt the user when they're about to leave the website or their mouse cursor leaves the website.

# Allow The User To Opt-Out

It's very important that we are user friendly and aren't intrusive which means we have to let users opt out of our constant prompts and modal dialogs.

![](https://thepracticaldev.s3.amazonaws.com/i/k4d1am9v900hr1qz1pqu.png)

The best practice here is to put the opt-out settings in a place where the user will easily spot it -typically this is inside one of the "account preferences" pages.

# Use JavaScript

It's a known fact, all websites require JavaScript.

While you might think, "Oh it's only plain text and a couple of modals." But in the future? By then, it'll be many many more modals, and I'll promise you right now. When that happens, you'll regret not making your website an isomorphic application using the latest framework running on a serverless cloud.

![](https://thepracticaldev.s3.amazonaws.com/i/uxysb9alint3lwsw5fmr.png)

**Tip**: Don't render this page with JavaScript.


---

Don't know anything about web development at all? Don't worry you've already qualified by reading this post, just attend a bootcamp then go to the valley!

Already a web developer? [buy the C programming language book from K&R here and **get out while you still can!**](https://amzn.to/2OKhVsg)