What is govuk-frontend?
The govuk-frontend npm package provides a set of reusable, accessible components and styles for building user interfaces that align with the UK Government Digital Service (GDS) design principles. It is designed to help developers create consistent, user-friendly, and accessible web applications and services.
What are govuk-frontend's main functionalities?
Typography
GOV.UK Frontend provides a set of typography styles that ensure text is readable and accessible. The 'govuk-body' class is used to style paragraphs according to GDS standards.
<p class="govuk-body">This is a paragraph with GOV.UK Frontend styling.</p>
Buttons
GOV.UK Frontend includes styles for buttons that make them visually consistent and accessible. The 'govuk-button' class is used to style buttons.
<button class="govuk-button">Submit</button>
Forms
GOV.UK Frontend provides styles and components for creating accessible forms. The 'govuk-form-group', 'govuk-label', and 'govuk-input' classes are used to style form elements.
<form><div class="govuk-form-group"><label class="govuk-label" for="input-id">Label text</label><input class="govuk-input" id="input-id" name="input-name" type="text"></div></form>
Navigation
GOV.UK Frontend includes styles for navigation elements to ensure they are accessible and consistent. The 'govuk-nav', 'govuk-nav__list', 'govuk-nav__item', and 'govuk-nav__link' classes are used to style navigation menus.
<nav class="govuk-nav"><ul class="govuk-nav__list"><li class="govuk-nav__item"><a class="govuk-nav__link" href="#">Home</a></li><li class="govuk-nav__item"><a class="govuk-nav__link" href="#">About</a></li></ul></nav>
Notifications
GOV.UK Frontend provides components for displaying notifications and alerts. The 'govuk-notification-banner', 'govuk-notification-banner__header', 'govuk-notification-banner__title', and 'govuk-notification-banner__content' classes are used to style notification banners.
<div class="govuk-notification-banner"><div class="govuk-notification-banner__header"><h2 class="govuk-notification-banner__title">Important</h2></div><div class="govuk-notification-banner__content"><p class="govuk-notification-banner__heading">This is a notification message.</p></div></div>
Other packages similar to govuk-frontend
bootstrap
Bootstrap is a popular front-end framework for developing responsive and mobile-first websites. It provides a wide range of components and utilities similar to GOV.UK Frontend but is more general-purpose and not specifically tailored to government services.
foundation-sites
Foundation is another front-end framework that offers a variety of responsive components and styles. Like Bootstrap, it is a general-purpose framework and does not specifically adhere to government design principles.
uswds
The U.S. Web Design System (USWDS) provides a set of design guidelines and components for building accessible and consistent government websites in the United States. It is similar to GOV.UK Frontend but tailored to U.S. government standards.
GOV.UK Frontend
GOV.UK Frontend contains the code you need to start building a user interface
for government platforms and services.
See live examples of GOV.UK Frontend components, and guidance on when to use
them in your service, in the GOV.UK Design System.
Contact the team
GOV.UK Frontend is maintained by a team at Government Digital Service. If you want to know more about GOV.UK Frontend, please email the Design System
team or get in touch with them on Slack.
Quick start
There are 2 ways to start using GOV.UK Frontend in your app.
Once installed, you will be able to use the code from the examples in the
GOV.UK Design System in your service.
1. Install with npm (recommended)
We recommend installing GOV.UK Frontend using node package manager
(npm).
2. Install by using compiled files
You can also download the compiled and minified assets (CSS, JavaScript) from
GitHub.
Importing styles
You need to import the GOV.UK Frontend styles into the main Sass file in your
project. You should place the below code before your own Sass rules (or Sass
imports) if you want to override GOV.UK Frontend with your own styles.
To import add the below to your Sass file:
@import "node_modules/govuk-frontend/dist/govuk/all";
More details on importing styles
Importing JavaScript
Some of the JavaScript included in GOV.UK Frontend improves the usability and
accessibility of the components. You should make sure that you are importing and
initialising JavaScript in your application. This will ensure all users can use it successfully.
You can include JavaScript for all components by copying both govuk-frontend.min.js
and govuk-frontend.min.js.map
from node_modules/govuk-frontend/dist/govuk/
into your application and referencing the JavaScript directly:
<script type="module" src="{path-to-javascript}/govuk-frontend.min.js"></script>
Next you need to import and initialise GOV.UK Frontend by adding:
<script type="module">
import { initAll } from '{path-to-javascript}/govuk-frontend.min.js'
initAll()
</script>
More details on importing JavaScript and advanced options
Importing assets
In order to import GOV.UK Frontend images and fonts to your project, you should configure your application to reference or copy the relevant GOV.UK Frontend assets.
More details on importing assets
Getting updates
To be notified when there’s a new release, you can either:
Find out how to update with npm.
Licence
Unless stated otherwise, the codebase is released under the MIT License. This
covers both the codebase and any sample code in the documentation. The
documentation is © Crown copyright and available under the terms of the
Open Government 3.0 licence.
Contribution guidelines
If you want to help us build GOV.UK Frontend, view our contribution guidelines.
5.3.0 (Feature release)
To install this version with npm, run npm install govuk-frontend@5.3.0
. You can also find more information about how to stay up to date in our documentation.
New features
Use the Password input component to help users accessibly enter passwords
The Password input component allows users to choose:
- whether their passwords are visible or not
- to enter their passwords in plain text
This helps users use longer and more complex passwords without needing to remember what they've already typed.
This change was introduced in pull request #4442: Create password input component. Thanks to @andysellick for the original contribution.
Recommended changes
Update the HTML for the Character count component
We've updated the HTML for the Character count component. The component wrapper data-module="govuk-character-count"
and its form group class="govuk-form-group"
are now combined as the same <div>
. The hint text used as the count message now appears directly after the <textarea>
.
If you're not using Nunjucks macros, then you should:
- move all classes and attributes from the form group
<div>
to the component wrapper <div>
- remove the opening
<div>
and closing </div>
tags used by the form group - check the count message is now directly after the
<textarea>
The following example shows some HTML and the difference once it’s updated.
HTML before:
<div class="govuk-character-count" data-module="govuk-character-count" data-maxlength="100">
<div class="govuk-form-group">
<!-- // Label, hint, error and textarea -->
</div>
<!-- // Count message -->
</div>
HTML after:
<div class="govuk-form-group govuk-character-count" data-module="govuk-character-count" data-maxlength="100">
<!-- // Label, hint, error, textarea and count message -->
</div>
Check your changes against the Character count example in the Design System to make sure you’ve correctly implemented them.
This change was introduced in pull request #4566: Use Character count formGroup
as module wrapper.
Remove redundant role
attributes from elements
We've made minor changes to the HTML of the page template, as well as the header, footer and pagination components.
You can update your HTML to remove the role
attribute from some elements. These include the:
main
role on the main
element in the templatebanner
role on the header
element in the Header componentcontentinfo
role on the footer
element in the Footer componentnavigation
role on the nav
element in the Pagination component
These roles were present to support legacy browsers, such as older versions of Internet Explorer. GOV.UK Frontend no longer supports these browsers, so you can now remove these roles.
You do not need to change anything if you're using the Nunjucks versions of the page template or these components,
This change was introduced in pull request #4854: Remove redundant role
attributes.
Fixes
We've fixed an upstream issue in the cssnano npm package that caused elements with transparency to render incorrectly in Internet Explorer 11. This affected the pre-compiled CSS files in the GOV.UK Frontend npm package and GitHub releases for versions 5.0, 5.1 and 5.2. This was fixed in:
We've made fixes to GOV.UK Frontend in the following pull requests: