Design systems / Service design patterns and frontend components
GOV.UK Design System
A detailed reference for forms and service journeys where clear instructions, errors and recovery matter more than novelty.
Understand the resource
What it is.
GOV.UK Design System brings together styles, components and task patterns maintained by the Government Digital Service. Its value extends beyond a set of buttons: the guidance explains the situations a component supports and the content decisions around it. Teams outside government can learn from those decisions while keeping their own identity and user research.
When it is useful
Use it for applications, eligibility questions, addresses, account steps and other form-heavy services. It is a strong reference when a team keeps redesigning the same validation and instruction patterns without recording why.
A proposed application
Put it to work.
This example illustrates a possible use. The proposed workflow and expected result are separate from the bounded checks recorded below.
Try this
For a support request with a genuine 200-character constraint, prototype the character-count pattern with a clear hint and error message. Test a short entry, exactly 200 characters and an over-limit entry, then check that the server rejects invalid submissions without losing what the person typed.
Result to aim for
A form pattern with an explained limit, readable feedback and a recovery path that survives both client-side and server-side validation.
Before you start
What you need.
- HTML/CSS/JavaScript integration or the documented template tooling for the components you choose.
- A supported, pinned GOV.UK Frontend version and a plan to review release notes when updating.
- Service-specific content, validation rules and user research.
The practical boundaries
What to watch for.
- Use a character limit only when the service has a reason for it. A counter does not make an arbitrary restriction helpful.
- The public character counter permits over-limit typing and changes its feedback. It is not a substitute for backend validation, and silently truncating a person’s input would change that behavior.
- Check the terms for code, content, fonts and government branding separately. Reusing a pattern should not imply that an unrelated service is an official government service.
- A design-system component still needs testing in your content, templates, language and service journey.
Review record
What we could establish.
- Why included — 2026-10-19: this is the official GDS-maintained design system. Its homepage announced GOV.UK Frontend v6.6.0 on 15 October 2026, including character-count improvements; that is a dated maintenance signal, not evidence of trending growth.
- The public character-count example was checked with 15 and 205 characters. The hosted example was not independently tied to a package build, and no production service or backend was tested.
The source-review notes describe documentation and identity. The account-free evaluation below records exactly which public interaction or local fixture was checked, what happened, and what remains untested.
Check current access, terms, licensing and data handling before using a resource with your own material.
Runtime and security evaluation
What the evaluation covers.
The public 200-character example reported the correct remaining and excess counts and preserved an over-limit value. No form submission or backend validation was exercised.
Methods: Public HTTP response · Public browser sample · Source review. A completed check covers the stated sample; it is not a safety certification.
- Target
- https://design-system.service.gov.uk/components/character-count/default/index.html
- Version or capture
- Unversioned public hosted page sampled on 2026-10-19; no installed package version attested.
- Integrity scope
- Recorded document SHA-256 387d07b0f08b718668941ecaf11604412d91962b8f425fca57552beb42f66235. This is the HTML response only, not an integrity guarantee for scripts, dependencies or the whole service.
Test conditions
- Fresh anonymous Chromium 155.0.8059.82 context on Windows; 1365 × 900 viewport; reduced motion requested.
- GET and HEAD only; non-GET methods and WebSockets blocked. No owner browser session, account, credentials, private fixtures, uploads or purchases.
- Only the named public controls and synthetic values were used. Screenshots and compact request observations were retained as review evidence.
Individual checks and observations
Public document response
passPublic HTTP response: Navigate to the recorded public target in a fresh anonymous browser.
Observed: The sampled document returned HTTP 200 over HTTPS. Its response body SHA-256 was 387d07b0f08b718668941ecaf11604412d91962b8f425fca57552beb42f66235; this fingerprints only the recorded HTML response.
Within-limit counter
passPublic browser sample: Type the 15-character synthetic string “Synthetic note.” into the default public textarea.
Observed: The value length was 15 and the visible feedback reported 185 characters remaining.
Over-limit feedback without truncation
passPublic browser sample: Replace the value with 205 synthetic x characters and leave the field.
Observed: All 205 characters remained. The feedback reported 5 characters too many and the textarea received its error class.
Primary-source scope review
passSource review: Read the official pages and relevant repository or standard references linked below.
Observed: Reviewed character-count use guidance and the official v6.6.0 release announcement. The hosted demo’s exact package build was not independently established.
Broader workflow and assurance coverage
not-runPublic browser sample: Keep authenticated, installation, private-data and broader accessibility workflows outside this bounded pass.
Observed: No server-side validation, submission, screen-reader announcement, other component variant, non-Latin length rule or installation was tested.
Security findings and boundaries
Passive observation of the sampled public pages, response headers and request destinations, plus the specific documented boundaries below. No intrusive scanning or security certification.
Observed · info
No service submission in the sample
The isolated example requested only the design-system origin. No non-GET request or page error was observed, and the synthetic text was never submitted to a service endpoint.
Observed · caution
Frontend counters are not enforcement
The sample deliberately retained 205 characters despite a 200-character limit. Enforce service constraints on the server as well as providing usable client-side feedback.
Practical advice · caution
Treat real service data separately
Do not paste personal applications or case histories into public examples. Integrate and test the component in the approved service environment before using real data.
Practical caveats
- Choose a justified limit and explain it before the user starts typing.
- Preserve entered text on error and test the same rule in the backend; this counter alone cannot establish that behavior.
What remains untested
- No server-side validation, submission, screen-reader announcement, other component variant, non-Latin length rule or installation was tested.
- One browser, one viewport and a short observation window; no cross-browser, assistive-technology or complete accessibility audit.
- Proposed use-case examples in this review were not implemented as a production workflow.
Security limits
- No backend, authenticated authorization, session isolation, vulnerability exploitation, dependency scan or account-data retention assessment was performed.
- The GET/HEAD-only guard can change hosted behavior; blocked background traffic is reported rather than treated as a product defect. Request observations are a bounded sample, not proof of all data handling.
Evaluation sources
Follow the evidence
Sources and further reading.
Keep exploring
More in design systems.
Documentation reviewed
Refero Styles
Turn a visual reference into a starting system an agent can read.
Documentation reviewed
Fudge
Bring references, website feedback and design work into a conversational workspace.
Documentation reviewed
DesignMD
Inspect a website’s visual system before drafting new screens.