louislam/uptime-kuma
View on GitHubAccessibility: Login form missing aria-label and empty h1 tag
Open
#7,466 opened on Jun 1, 2026
feature-requestgood first issue
Description
📑 I have found these related issues/pull requests
The login form (src/components/Login.vue) has a few accessibility issues:
-
Empty
<h1>tag — The<h1 class="h3 mb-3 fw-normal" />is self-closing with no content. Screen readers announce an empty heading, which is confusing for visually impaired users. -
Form missing
aria-label— The<form>element has no accessible name, so screen readers don't announce what the form is for. -
No timeout on login submission — If the WebSocket connection drops during login, the submit button stays disabled (
processing = true) indefinitely with no error feedback to the user.
🛡️ Security Policy
- I have read and agree to Uptime Kuma's Security Policy.
📝 Description
No response
👟 Reproduction steps
- Open Uptime Kuma login page
- Enable a screen reader (VoiceOver on macOS or NVDA on Windows)
- Navigate through the page — notice the empty heading is announced as blank
- The form is not announced as "Login form" or similar
- For the timeout issue: start login, then disconnect network — button stays disabled forever
👀 Expected behavior
- Screen reader should announce a meaningful heading (e.g., "Login" or app name)
- Form should be announced as a login form
- If login fails due to connection loss, user should see an error message and button should re-enable after ~10 seconds
😓 Actual Behavior
- Screen reader announces empty heading
- Form has no accessible name
- Button stays disabled indefinitely on connection loss with no feedback
🐻 Uptime-Kuma Version
2.4.0
💻 Operating System and Arch
macOS 15 (Apple Silicon)
🌐 Browser
Google Chrome 137 (Official Build) (arm64)
🖥️ Deployment Environment
- Runtime Environment:
- Docker: Version
X.X.X(BuildY.Y.Y) - Docker Compose: Version
X.X.X - Portainer (BE/CE): Version
X.X.X(LTS: Yes/No) - MariaDB: Version
X.X.X(LTS: Yes/No) - Node.js: Version
X.X.X(LTS: Yes/No) - Kubernetes (K3S/K8S): Version
X.X.X(LTS: Yes/No, via[method/tool])
- Docker: Version
- Database:
- SQLite: Embedded
- MariaDB: Embedded/External
- Database Storage:
- Filesystem:
- Linux: ext4/XFS/Btrfs/ZFS/F2FS
- macOS: APFS/ HFS+
- Windows: NTFS/ReFS
- Storage Medium: HDD/eMMC/SSD/NVMe
- Filesystem:
- Uptime Kuma Setup:
- Number of monitors:
X
- Number of monitors:
📝 Relevant log output