The Front-End Checklist is an exhaustive list of all elements you need to have / to test before launching your site / page HTML to production.
It is based on Front-End developers' years of experience, with the addition from some other open-source checklists.
All items in the Front-End Checklist are required for the majority of the projects, but some elements can be omitted or are not essential (in the case of an administration web app, you may not need RSS feed for example). We choose to use 3 levels of flexibility:
Some resources possess an emoticon to help you understand which type of content / help you may find on the checklist:
Notes: You can find a list of everything that could be found in the
<head>
of an HTML document.
<!-- Doctype HTML5 -->
<!doctype html>
The next 3 meta tags (Charset, X-UA Compatible and Viewport) need to come first in the head.
<!-- Set character encoding for the document -->
<meta charset="utf-8">
<!-- Instruct Internet Explorer to use its latest rendering engine -->
<meta http-equiv="x-ua-compatible" content="ie=edge">
<!-- Viewport for responsive web design -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Document Title -->
<title>Page Title less than 65 characters</title>
<!-- Meta Description -->
<meta name="description" content="Description of the page less than 150 characters">
favicon.ico
, put it at the root of your site. Normally you won't need to use any markup. However, it's still good practice to link to it using the example below. Today, PNG format is recommended over .ico
format (dimensions: 32x32px)<!-- Standard favicon -->
<link rel="icon" type="image/x-icon" href="https://example.com/favicon.ico">
<!-- Recommended favicon format -->
<link rel="icon" type="image/png" href="https://example.com/favicon.png">
<!-- Apple Touch Icon -->
<link rel="apple-touch-icon" href="/custom-icon.png">
rel="canonical"
to avoid duplicate content.<!-- Helps prevent duplicate content issues -->
<link rel="canonical" href="http://example.com/2017/09/a-new-article-to-red.html">
<html lang="en">
<html dir="rtl">
<link rel="alternate" href="https://es.example.com/" hreflang="es">
📖 About conditional comments (Internet Explorer) - MSDN - Microsoft
RSS feed: If your project is a blog or has articles, an RSS link was provided.
CSS Critical: The CSS critical (or "above the fold") collects all the CSS used to render the visible portion of the page. It is embedded before your principal CSS call and between <style></style>
in a single line (minified).
<head>
. (Except the case where sometimes JS files are loaded asynchronously on top of your page).Facebook OG and Twitter Cards are, for any website, highly recommended. The other social media tags can be considered if you target a particular presence on those and want to ensure the display.
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/page.html">
<meta property="og:title" content="Content Title">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:description" content="Description Here">
<meta property="og:site_name" content="Site Name">
<meta property="og:locale" content="en_US">
- 📖 A Guide to Sharing for Webmasters
- 🛠 Test your page with the Facebook OG testing
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@site_account">
<meta name="twitter:creator" content="@individual_account">
<meta name="twitter:url" content="https://example.com/page.html">
<meta name="twitter:title" content="Content Title">
<meta name="twitter:description" content="Content description less than 200 characters">
<meta name="twitter:image" content="https://example.com/image.jpg">
- 📖 Getting started with cards — Twitter Developers
- 🛠 Test your page with the Twitter card validator
Error pages: Error 404 page and 5xx exist. Remember that the 5xx error page needs to have his CSS integrated (no external call on the current server).
Noopener: In case you are using external links with target="_blank"
, your link should have a rel="noopener"
attribute to prevent tab nabbing. If you need to support older versions of Firefox, use rel="noopener noreferrer"
.
Desktop Browsers: All pages were tested on all current desktop browsers (Safari, Firefox, Chrome, Internet Explorer, EDGE...).
Mobile Browsers: All pages were tested on all current mobile browsers (Native browser, Chrome, Safari...).
Link checker: There are no broken links in my page, verify that you don't have any 404 error.
Notes: Take a look at CSS guidelines and Sass Guidelines followed by most Front-End developers. If you have a doubt about CSS properties, you can visit CSS Reference.
- 📖 Reset.css
- 📖 Normalize.css
- 📖 Reboot
<div id="js-slider" class="my-slider">
<!-- Or -->
<div id="id-used-by-cms" class="js-slider my-slider">
- 🛠 UnCSS Online 🛠
- 🛠 PurifyCSS
Responsive web design: All pages were tested at the following breakpoints: 320px, 768px, 1024px (can be more / different according to your analytics).
CSS Validator: The CSS was tested and pertinent errors were corrected.
Notes: For a complete understanding of image optimization, check the free ebook Essential Image Optimization from Addy Osmani.
- 🛠 Imagemin
- 🛠 Use ImageOptim to optimise your images for free.
<img>
have height and width set (Don't specify px or %).Note: Lots of developers assume that width and height are not compatible with responsive web design. It's absolutely not the case.
<img>
have an alternative text which describe the image visually..min
suffix).Guidelines for Developing Secure Applications Utilizing JavaScript*
async
or deferred using defer
attribute.<html>
tag.📖 Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet - OWASP
Lazy loading: Images, scripts and CSS need to be lazy loaded to improve the response time of the current page (See details in their respective sections).
Cookie size: If you are using cookies be sure each cookie doesn't exceed 4096 bytes and your domaine name don't have more than 20 cookies.
Notes: You can watch the playlist A11ycasts with Rob Dodson 📹
📹 Why headings and landmarks are so important -- A11ycasts #18
<header>
has role="banner"
<nav>
has role="navigation"
<main>
has role="main"
aria-label
instead.
- 🛠 Test your robots.txt with Google Robots Testing Tool
- 📖 Introduction to Structured Data | Search | Google Developers
- 🛠 Test your page with the Structured Data Testing Tool
Open an issue or a pull request to suggest changes or additions.
The Front-End Checklist repository consists of two branches:
master
This branch consists of the README.md
file that is automatically reflected on the Front-End Checklist website.
develop
This branch will be used to make some significant changes to the structure, content if needed. It is preferable to use the master branch to fix small errors or add a new item.
Check out all the super awesome contributors.
David Dias, Geoffrey Signorato, Sandeep Ramgolam and Cédric Poilly.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。