Custom Gov Style Inputs for Shiny
- CRAN checks, method
Method
Checks and health
CRAN runs every current package through
R CMD checkon a set of machines and publishes a result for each one. The health shown on a package page comes from these results alone.- Problems
- Notes alone never count against a package, but a warning, an error or a failure on any platform is a problem. Open CRAN deadlines are a fact of their own, shown as a clock after the mark, so the mark always says what the checks found.
- Checks only
- Health reflects CRAN's check results and nothing else. Even a package with no tests, no coverage or no recent release can have every platform OK.
- Once a day
- Results are collected once a day from files CRAN publishes. Each platform is one machine set-up, named by its R version, operating system, architecture and compiler, such as r-devel-linux-x86_64-fedora-clang.
- Platforms counted
- The 13 in 3 of 13 is the number of platform rows CRAN published for that package on the day of collection. The set of machines changes over time, so the number is not fixed, and a package missing from a platform counts as neither passing nor failing there.
- All OK13 platforms
- CRAN 30-day downloads, method
- 602+29.7% up on the 30 days before, the better direction
- Dependent packages, method
Method
Reverse dependencies
Dependent packages are other packages that list this one under
Depends,ImportsorLinkingToin theirDESCRIPTIONfile. Those fields list the packages a package needs to install, so dependents break if this one is archived or broken.- As declared
- The counts follow the declarations as written, not whether a package uses the other one when it runs.
- Suggests apart
- Packages that list this one only under
Suggestsinstall and run without it, and use it for tests, examples or an optional feature. They are counted as Suggested by, never among the dependents, and a package that also lists it under one of the three fields is a dependent and is not counted again. - Zero
- Zero dependents means no current CRAN package declares a need for this one, though some may suggest it. On 28 Oct 2026, 19,572 of the 25,583 current CRAN packages had no dependent package.
- 0none suggest it
- Test coverage, method
Method
Test coverage
Test coverage is measured by downloading each CRAN package's current source file, installing its dependencies, building it and running its tests under covr.
- Almost half of CRAN has no tests to run
- Only CRAN packages are measured. Many have no percentage, most often because the package has no tests, and that blank is a recorded outcome, not missing data.
- NOT_CRAN
- Tests run with NOT_CRAN=true, so tests that skip themselves on CRAN run here, and the figure can differ from what CRAN's own checks see.
- Current version only
- Only the current version is measured, and a new version on CRAN is measured again. Older rows are kept but never filled in later. This is one package's run.
- Never 0%
- On a package page three states stay apart: measured, no tests, and not measured. Neither of the last two is ever shown as 0%.
- 96%of lines run by tests
- Advisories, method
Method
Security advisories
Advisories come from the R Consortium advisory database, a community record of security problems in R packages, as OSV publishes it.
- The copy
- The record is read once a day. The data is published under the Apache License 2.0 and is credited on the advisories list.
- Box under the name
- Under the package's name, a box names any advisory that affects the current release, with its fix or that there is none.
- Ranges
- Advisories state ranges, such as from 0.9.12 up to but not including 1.8.8. Each range is checked against every version CRAN has published, using the version rules R itself uses, so a release that came out after the advisory was written is still caught by its range.
- Not the package
- The rating is for the library flaw itself, not for how exposed the R package is, and it is never added up into a figure for the package.
- None known
About
Method, About Method Licence figures come from the Licences
License field of each package's DESCRIPTION file, read the way R itself reads it. No licence file is opened.tools::analyze_license() and R's own licence database, as CRAN's checks read it.| is read, so one string can offer two families.
Provides 'shiny' components styled using the GOV.UK Design System. See <https://design-system.service.gov.uk/components/> for component guidance.
- Maintainer
- Cam Race
- Licence
- GPL (>= 3)
- Latest release
- 15 Oct 2026
- First release
- 25 Oct 2021
More details
- Releases
- 7
- Needs compilation
- No
- Needs R
- >= 4.1.0
- Config/roxygen2/version
- 8.1.0
- Config/testthat/edition
- 3
- Language
- en-GB
- LazyData
- true
Subjects (1) Method, SubjectsMethod
Subjects and collections
Subjects are the site's own grouping of CRAN packages, found by clustering. Collections are sets of packages that communities declare, such as the tidyverse.
- Subjects
- Subjects are found by clustering the words of current CRAN packages and the packages they use. No one edits them by hand.
- Collections
- Collections are sets that communities declare, through a package that installs the set or an organization on GitHub. The site finds them by rules.
- Who made each
- Subjects are marked Site and collections Community. Subjects, collections and task views are never mixed in one list.
- The day of the data
- Subjects and collections were last worked out on 22 Oct 2026.
Cite
Package
Run in R for the authors' preferred citation:
citation("shinyGovstyle")Race, C., Baker, A., Bielby, R., Foster, C., Martin, J., Wong, S., & Wyatt, R. (2026). shinyGovstyle: Custom Gov Style Inputs for Shiny (Version 0.3.0) [Computer software]. https://doi.org/10.32614/CRAN.package.shinyGovstyle
About
This package has no citation file, so citation() returns this entry built from DESCRIPTION.
R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
Balamuta, J. J. (2026). R Observatory: Metrics for shinyGovstyle version 0.3.0 [Data set]. HJJB, LLC. Data release v2026-10-28. https://doi.org/10.5281/zenodo.21843040
About
From data release v2026-10-28, which the citation names so these numbers can be found later.
Health
All 13 check platforms pass.
r-devel-linux-x86_64-debian-clangThe unreleased R on Linux, x86_64, debian-clang
OK
- Version checked
- 0.3.0
- Time taken
- 107 s
r-devel-linux-x86_64-debian-gccThe unreleased R on Linux, x86_64, debian-gcc
OK
- Version checked
- 0.3.0
- Time taken
- 78 s
r-devel-linux-x86_64-fedora-clangThe unreleased R on Linux, x86_64, fedora-clang
OK
- Version checked
- 0.3.0
- Time taken
- 100 s
r-devel-linux-x86_64-fedora-gccThe unreleased R on Linux, x86_64, fedora-gcc
OK
- Version checked
- 0.3.0
- Time taken
- 75 s
r-devel-windows-x86_64The unreleased R on Windows, x86_64
OK
- Version checked
- 0.3.0
- Time taken
- 165 s
r-oldrel-macos-arm64The previous release of R on macOS, arm64
OK
- Version checked
- 0.3.0
- Time taken
- 50 s
r-oldrel-macos-x86_64The previous release of R on macOS, x86_64
OK
- Version checked
- 0.3.0
- Time taken
- 206 s
r-oldrel-windows-x86_64The previous release of R on Windows, x86_64
OK
- Version checked
- 0.3.0
- Time taken
- 172 s
r-patched-linux-x86_64The patched release of R on Linux, x86_64
OK
- Version checked
- 0.3.0
- Time taken
- 100 s
r-release-linux-x86_64The current release of R on Linux, x86_64
OK
- Version checked
- 0.3.0
- Time taken
- 98 s
r-release-macos-arm64The current release of R on macOS, arm64
OK
- Version checked
- 0.3.0
- Time taken
- 32 s
r-release-macos-x86_64The current release of R on macOS, x86_64
OK
- Version checked
- 0.3.0
- Time taken
- 258 s
r-release-windows-x86_64The current release of R on Windows, x86_64
OK
- Version checked
- 0.3.0
- Time taken
- 145 s
- 13 OK
Over time
No change since 4 Aug 2026
As a list (7)
| Changed | Worst status | OK | Notes | Warnings | Errors |
|---|---|---|---|---|---|
| 4 Aug 2026 | OK | 13 | 0 | 0 | 0 |
| 1 Aug 2026 | Note | 12 | 1 | 0 | 0 |
| 8 Jun 2026 | OK | 12 | 0 | 0 | 0 |
| 7 Jun 2026 | Note | 12 | 1 | 0 | 0 |
| 8 Apr 2026 | OK | 14 | 0 | 0 | 0 |
| 7 Apr 2026 | Error | 13 | 0 | 0 | 1 |
| 10 Mar 2026 | OK | 14 | 0 | 0 | 0 |
Since March 2026
Downloads
Method, Downloads Method Download figures count requests logged by each distribution channel. They are not counts of installs or of users, because each channel publishes its own totals and this site reads them.Downloads
- Total downloads in the last 30 days
- 603+27.8% up on the 30 days before, the better directionIt is the sum of 2 channels: CRAN and r2u. autoCRAN was counted over another window, so it is not added.
CRAN rank
5,092 of 26,530
CRAN
602 downloads in the last 30 days
- Rank
- 5,092 of 26,530
- Change
- +29.7% up on the 30 days before, the better direction
It is in the total. Take it out
r2u
1 downloads in the last 30 days
- Rank
- 19,986 of 30,526
- Change
- −87.5% down on the 30 days before, the worse direction
It is in the total. Take it out
autoCRAN
0 downloads in the last 7 days
It is not added because it has no figure for the last 30 days.
The total is 603 downloads in the last 30 days. It is the sum of 2 channels: CRAN and r2u.
Over time
Dependencies
Code
Method, Code Method Code metrics come from reading the released source of each package version. The package is never installed, loaded or run.Code metrics
README, vignettes, a NEWS file and the shares read from its help pages. Files kept only in the repository, such as a pkgdown configuration or CI files, are read by the repository scan instead.
- Functions
- 101
- Public exports
- 61
- Lines of R code
- 6,771
- Median complexity
- 2
Functions (101)
Size and composition
Lines by kind (18,636)
| Kind | Lines | Share |
|---|---|---|
| R code | 6,771 | 36% |
| Tests | 5,792 | 31% |
| Documentation | 4,718 | 25% |
| Guides | 1,355 | 7% |
Lines by language
| Language | Lines | Share |
|---|---|---|
| R | 12,247 | 66% |
| Rd | 4,718 | 25% |
| Vignettes | 1,355 | 7% |
| Markdown | 316 | 2% |
Languages are counted from file extensions.
- Files
- 286
- R functions
- 101
- Deprecated functions
- 9
Complexity
- Median
- 2
- Mean
- 3.46
- Highest
- 16
- Median lines per function
- 26
About complexity
Cyclomatic complexity counts the independent paths through a function: 1 is a straight line, higher is harder to test. R functions only.
Call graph figures
- R functions
- 101
- Calls
- 120
- Unconnected
- 18
- Groups
- 1
Growth (7 releases)
Release changes
Tests
The tests ran and coverage was measured.
- Lines run by tests
- 96.3%
- Expressions run by tests
- 92.4%
- Test cases
- 370
- Exports named in tests
- 96.7%
Coverage by file (58)
Coverage run
- Lines counted
- 2,589
- Lines the tests ran
- 2,492
- Tests passed
- Yes
- Measured with
- covr 3.6.5 on R 4.6.1
Test suite
- Has tests
- Yes
- Test frameworks
- testthat, tinytest
- Test cases
- 370
- Snapshot tests
- 20
- Lines of tests
- 5,792
- Test lines per line of code
- 0.86
Documentation
- Exports documented
- 100%
- Arguments documented
- 99.3%
- Return value documented
- 100%
- Help pages with examples
- 81.7%
- Examples run in checks
- 100%
Other documentation
- README
- Yes, 251 words
- Release notes file
- Yes
- Help pages
- 71
- Lines of documentation
- 4,718
Datasets
Method, Datasets Method The datasets inside packages are read from their R objects in datasets
data/ folders when the code is analysed. Each object is described by its class, its shape and its columns, and fingerprinted so the same data can be found in other packages.data() are listed, 76,180 on CRAN and 8,045 on Bioconductor, so the list is not every file in data/.
| Dataset | Size | Columns |
|---|---|---|
| bad_ | 54 × 1 | bad_ |
| case_ | 12 × 4 | tabs, case_ |
| transport_ | 10 × 5 | months, colours, bikes, vans, buses |
| transport_ | 3 × 3 | months, bikes, cars |
People
Method, People Method People on the site are the names packages give them in their Author and maintainer identity
DESCRIPTION files: authors from the author list, and the maintainer from the Maintainer field. Spellings of one name become one person only where the rules below allow it, and when in doubt the rules keep people apart.
Maintainer since 0.1.1 (2026), previously Ross Wyatt (0.0.6 to 0.1.0), author
Contributor
Contributor
Contributor
Contributor
Author
Author
Earlier names (1)
- Cameron Race
Repository
Method, figures by host Method Repository signals are the figures read from the source repository a package links to: stars, forks, issues, commits, releases and the time issues take to close. They are read from GitHub, GitLab, Codeberg and Bitbucket.Repository signals
URL and BugReports fields of its DESCRIPTION file. Read-only mirrors, the cran and bioc accounts on GitHub and git.bioconductor.org, are left out.
dfe-analytical-services / shinygovstyle on github.com
- Stars
- 53+1.9% up on 30 days ago, the better direction
- Forks
- 12
- Open issues
- 16
- Last commit
- 22 Oct 2026
Activity
- Commits
- 416
- Open pull requests
- 9
- Tagged releases
- 11
- Latest tagged release
- v0.3.0, 16 Oct 2026
- Issues closed in
- 211 days (median)
- Pull requests closed in
- 11 days (median)
- Pull requests merged
- 87%
- Created
- 20 Jun 2019
- Licence file reads as
- GPL-3.0
Development practices (17)
| Kind | Found |
|---|---|
| Continuous integration | GitHub Actions, R CMD check workflow The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel |
| Governance and community | Code of conduct, Contributing guide, PR template, CODEOWNERS |
| Docs source | pkgdown GitHub Pages site last deployed 2026-10-22 The repository has a site deploy workflow pkgdown site last built 2026-10-22 |
| Reproducibility and dev environment | data-raw/ |
| CRAN release process | cran-comments.md, CRAN-SUBMISSION |
| Automation and maintenance | Dependabot |
| Lint, format, editor | Air, VS Code, RStudio project |
| Git structural | .gitattributes |
Method, repository practices Method Beta Each week a scan of the public source repository a package links to looks for the tools a maintainer has set up, and the Repository section lists the findings. Repositories on GitHub and GitLab are scanned.Repository practices
R CMD build reads .Rbuildignore and leaves out files used only in development, such as .github/, .lintr, renv/, a Dockerfile and cran-comments.md, so the released source file holds almost none of them. The repository is the one place these files stay visible.
AI tools
Method, AI tools Method Beta What is found in a repository is not a measure of the code.AI tool findings
Tools
| Tool | First seen | Found | Commits crediting it |
|---|---|---|---|
| Claude Code | 29 Mar 2026 | Named in .Rbuildignore.claudeNamed in .gitignore.claudePull request it wrote: opened by a project member | 9 at least |
- Named in .Rbuildignore
- Named in .gitignore
- Pull request
- Seen in the repository
Shared conventions
AGENTS.md.agents.agents/skills
Models
| Model | Commits | First commit | Last commit | Credit lines of |
|---|---|---|---|---|
| Claude Sonnet 5 | 1 | 12 Sep 2026 | 12 Sep 2026 | Claude Code |
| Claude Opus 4.7 | 1 | 19 May 2026 | 19 May 2026 | Claude Code |
| Claude Opus 4.6 | 3 | 9 Apr 2026 | 12 May 2026 | Claude Code |
| Claude Sonnet 4.6 | 4 | 29 Mar 2026 | 12 Sep 2026 | Claude Code |
History
Method, History Method Archived is built from CRAN's archive records, its list of check deadlines and Bioconductor's package records. Every figure is counted to 28 Oct 2026, the day the data was read.Packages leaving
| Version | Released | R | Events |
|---|---|---|---|
| 0.3.0 current | 15 Oct 2026 | 4.6.1 | |
| 0.2.0 | 13 Apr 2026 | 4.5.3 | |
| 0.1.1 | 8 Jan 2026 | 4.5.2 | Maintainer: Cam Race |
| 0.1.0 | 12 Sep 2024 | 4.4.1 | |
| 0.0.8 | 22 Feb 2022 | 4.1.2 | |
| 0.0.7 | 4 Nov 2021 | 4.1.2 | |
| 0.0.6 | 25 Oct 2021 | 4.1.1 |
Release notes (0.3.0)
This release is the transition to a stable v1.0.0. Functions and arguments
that will be removed in v1.0.0 now give a deprecation warning that names what
to use instead, so you can update your code before upgrading. Everything
deprecated keeps working in this release.
Deprecations
- Four functions have been renamed to match the GOV.UK Design System component names. The old names still work, with a deprecation warning, and produce identical output:
insert_text()is nowinset_text(). Itstextargument is nowcontent, reflecting that it accepts more than plain text;insert_text(text = )gives a single warning pointing toinset_text(content = ).banner()is nowphase_banner(), with the same arguments.tag_Input()is nowgov_tag(), with the same arguments.panel_output(inputId, main_text, sub_text)is nowconfirmation_panel(inputId, title, content).gov_layout()is deprecated. Usegov_main_layout(gov_row(gov_box(..., size = size)), inputID = inputID, width = width)instead; the warning explains how each argument maps across. There is no single-function replacement.contents_link()(deprecated in 0.2.0) will be removed in v1.0.0. Its warning now explains thatservice_navigation()is the recommended approach for multi-page layouts, and that in-page anchor links should be ordinary links to heading ids.word_count()is deprecated as it is no longer required:text_area_Input(word_limit = )now tracks and announces the word count entirely client-side, so the server-sideword_count()observer can be deleted.header()argumentsmain_text,secondary_text,main_link,secondary_link,main_alt_text, andsecondary_alt_textwill be removed in v1.0.0. The warnings for the four link and alt text arguments now say that they have no effect.govReactableOutput()'sheading_levelnow takes an integer from2Lto5L(default2L). The"h2"to"h5"strings still work for now, with a warning showing the integer to use.
Breaking changes
- Error message element ids changed from
<inputId>errorto<inputId>-error(matching the hint id format<inputId>-hint). This affectsradio_button_Input(),checkbox_Input(),date_Input(),text_Input(),text_area_Input(),file_Input(), andinput_field().error_on()anderror_off()have been updated to match and continue to work transparently; only custom CSS or JS that targets#fooerrorselectors needs updating to#foo-error. - Removed the experimental
full_width_overrides()function. Use the newwidthargument onheader(),footer(),phase_banner(),cookieBanner(),service_navigation()andgov_main_layout()instead (see below). bslibhas moved fromSuggeststoImports, since the newgov_page()function depends on it directly. If you install shinyGovstyle without itsSuggestsdependencies, you'll now getbslibautomatically; if you pin dependencies some other way, addbslibto that list.- Heading and caption size arguments (e.g.
sizeonheading_text(),caption_sizeongovTable()andgovReactableOutput(), andlabel_sizeon form inputs likecheckbox_Input()) now throw an error if given anything other than"s","m","l", or"xl". Previously an invalid value was accepted silently and could produce broken styling.
New features
govReactable()gains acolumnsargument for column-specific overrides, such as fixing a column's decimal places withreactable::colFormat(). Only the fields you set are applied; any field you leave unset keeps govReactable's GOV.UK default for that column. Previously, passing acolumnsargument through...errored withformal argument "columns" matched by multiple actual arguments(#243).- New
gov_page()function, a GOV.UK-flavoured wrapper aroundbslib::page_fluid(). It sets<html lang="en">by default (screen readers use this to choose the right pronunciation and voice), adds adescriptionargument for the page's<meta name="description">tag, and awidthargument that sets a default width for every shinyGovstyle component used inside it, so you don't have to repeatwidth =on each one. A component that sets its ownwidthalways overrides the page default. header(),footer(),phase_banner(),cookieBanner(),service_navigation(),gov_main_layout()and the deprecatedgov_layout()gain awidthargument for building wider, dashboard-style layouts:"standard"(the default, GOV.UK's usual 960px content width),"three-quarters"(three-quarters of the viewport, never narrower than standard),"full"(edge-to-edge, with grid gutters also removed), or a CSS length (e.g."1400px","90vw") for a custom max-width.external_link()'sadd_warningargument now also accepts"icon", in addition toTRUE/FALSE. Settingadd_warning = "icon"adds a small decorative arrow icon after the link text, giving sighted users a visual warning that the link opens in a new tab without repeating the "(opens in new tab)" text, which is useful for grouped links (see the "Grouped links" section of the "Headings and text" vignette). The icon is hidden from screen readers, which get the same hidden warning asadd_warning = FALSE.- New
update_page_title()function to update the browser tab title from server code, mirroringupdate_service_navigation(). Compose a title in the GOV.UK recommended format"<page> | <service>"by supplying bothpage_titleandservice_name. service_navigation()gainsauto_page_titleandpage_title_suffixarguments. Withauto_page_title = TRUE(the default) the browser tab title is kept in sync with the active nav link, both for direct clicks and for programmatic navigation viaupdate_service_navigation().- New
service_navigation_server()wires every nav link to its tab panel in a single server-side call, eliminating the per-linkobserveEvent()boilerplate that multi-page apps previously needed. - New
navigate_to()combinesupdateTabsetPanel()andupdate_service_navigation()into one call for programmatic navigation (next / back buttons, footer shortcuts, modal links). Accepts apanelargument when the nav link inputId and the tab panel value differ. - New
update_radio_button_Input()function, the server-side companion toradio_button_Input()(mirroringshiny::updateRadioButtons()). Use it to change the selected option, choices, or label of a radio group from the server, for example to keep a cookies settings radio in sync with a cookie banner choice. See the new "Cookies and analytics" vignette. inset_text()(content),confirmation_panel()(content),noti_banner()(body_txt),details()(help_text),phase_banner()(label),warning_text()(text), andgov_summary()(info) now acceptshinytag objects (e.g.shiny::tags$b("Bold")) andshiny::tagList()values in addition to plain character strings.gov_list()(list) andaccordion()(descriptions) now acceptshinytag objects andshiny::tagList()values, so list items and accordion sections can contain links and other rich content.accordion()section content is no longer forced into a single paragraph, so it can hold block content such as lists or multiple paragraphs (plain-string sections are unchanged).- The
labelandhint_label/hint_inputarguments oflabel_hint(),text_Input(),text_area_Input(),date_Input(),select_Input(),checkbox_Input(), andradio_button_Input()now consistently accept plain strings, HTML strings,shinytag objects, andshiny::tagList()values. Previously labels accepted HTML strings but not tags, while hints accepted tags but not HTML strings. phase_banner()gains afeedback_urlargument that auto-generates the standard GOV.UK phase banner feedback text (e.g. "This is a new service - your feedback (opens in new tab) will help us to improve it."), or contact-style text iffeedback_urlis amailto:link.labelis now optional, but exactly one oflabelorfeedback_urlmust be supplied.external_link()now natively supportsmailto:links: whenhrefstarts withmailto:, the "opens in new tab" attributes, text, and icon are all skipped, since a mailto link hands off to the mail client rather than opening a new tab. Existing link-text validations still apply.
Bug fixes
service_navigation()now gives an error when two links end up with the same inputID (for example"Page 1"and"Page-1", which both becomepage_1), rather than silently creating clashing links. Thelinksdocumentation now correctly says that inputIDs supplied in a named vector are cleaned up in the same way as generated ones.update_service_navigation(),navigate_to()andservice_navigation_server()now clean up the inputIDs you pass them in the same way, so an id such as"Page-Two"works in all of them. Previously they used the id as given, so it silently failed to match thepage_twolink.- The active
service_navigation()link now hasaria-current="page", as in the GOV.UK Design System, so screen readers announce which page is current. Previously only the visual highlight changed. The first link is now marked as the current page when the app loads. gov_tag()andvalue_box()now warn whencolouris not one of their supported colours (for example a typo such as"gren"), listing the options, rather than silently falling back to the default styling. Acolourthat is not a single string now gives a clear error.- Updated GOV.UK Frontend from v6.1.0 to v6.6.0.
button_Input(type = "start")now wraps a rich HTML label in a span so it wraps correctly on narrow screens, following GOV.UK Frontend 6.4.0.service_navigation()now syncs the browser tab title with the active page by default. Screen readers announce the title on navigation, so a static title is an accessibility issue for multi-page dashboards. This is a behaviour change; setauto_page_title = FALSEonservice_navigation()to restore the previous behaviour.header()no longer emits spurious deprecation warnings formain_link,secondary_link,main_alt_text, andsecondary_alt_textwhen those arguments are not used.accordion()sections now operate independently of one another, so expanding or collapsing sections in one accordion no longer affects a different accordion on the same page.accordion()sections and the "Show all sections" control now correctly announce their state viaaria-expanded, and toggling an individual section keeps the "Show all sections" control's text, chevron, andaria-expandedstate in sync.- Error messages on input components now use
role="alert"so they are announced by screen readers when toggled viaerror_on(). - The visually hidden "Error:" prefix on input component error messages now comes before the message text, so screen readers announce "Error: Enter your name" rather than "Enter your name Error:". The prefix also survives
error_on(error_message = ...), which previously replaced it. error_on()now escapes a plain stringerror_messageinstead of sending it to the browser as raw HTML, so it renders the same way as the message baked into the component (<and&are no longer swallowed, and interpolated user content can no longer inject markup). Pass ashinytag,shiny::tagList(), orshiny::HTML()to render markup deliberately.date_Input()now renders its hint before the error message, matching the GOV.UK Design System and the other input components.govReactable()table row, sort-header, and pagination highlights are now visible in Windows High Contrast / forced-colours mode.details()now applies the same HTML handling tohelp_textas it does tolabel, so HTML strings render consistently across both arguments.warning_text()now renders HTML strings intextconsistently with other body-content components.govTable()no longer errors with "evaluation nested too deeply: infinite recursion" on large tables (around 1200+ rows). It now warns when given more than 50 rows and recommendsgovReactable()for very large or interactive tables.- The
radio_button_Input()client binding now correctly replaces all options when sent anoptionsupdate (the previous selectors did not match the rendered markup, so option replacement silently did nothing). radio_button_Input()'s client binding now correctly reads and updates the group label (update_radio_button_Input(label = ...), and Shiny's built-in bookmarking). The previous selector targeted the old<label for=...>markup, which no longer exists now that the label renders inside a<legend>via the shared fieldset helper.govTable()now renders rows in dataframe order (row order was previously silently reversed).text_area_Input()'s word-limit message is now a live region (aria-live="polite"), announced to screen readers a short pause after the user stops typing, matching the GOV.UK Design System character count component. Previously it updated visually on every keystroke but was never announced.radio_button_Input(),checkbox_Input(), anddate_Input()now wrap their contents in a<fieldset>with a<legend>(previously they used a<label>inside the fieldset, which is invalid and meant screen readers did not announce the question as group context). Any hint or error message is linked to the fieldset viaaria-describedby, so screen readers read the hint/error when the group receives focus.radio_button_Input(),checkbox_Input(), anddate_Input()gainlabel_size("s"/"m"/"l"/"xl", default"m") andheading_level(1-6, optional) arguments that control the legend size and optionally wrap it as a page heading following the GDS pattern.radio_button_Input()inputs and labels are now programmatically associated via matchingid/forattributes, and checkbox labels now also carryforattributes.date_Input()Day/Month/Year labels are likewise associated with their underlying inputs viafor/id.govTabsnow includes full ARIA roles (tablist,tab,tabpanel) and attributes (aria-selected,aria-controls,aria-labelledby) so screen readers correctly identify and navigate tabs.