Thomas Camlong afa68687eb perf(widget-inputs): stabilise the drag handle component type
Last of the two nested-component findings from the widget audit. `Handle` was declared in the
render body and passed to a child as `handle={Handle}` - a component *type*. A type that
changes identity makes React unmount and remount the subtree instead of updating it, and this
component re-renders on every frame of a drag as dnd-kit updates `transform`, so the handle was
being torn down and rebuilt continuously while being dragged.

Wrapped in useMemo keyed on the two things it closes over.

Measured result of the whole overlay/remount sweep, per widget, deterministic component and
fiber counts on identical restored data:

  widget                    before              after
  mediaReleases      340 comp / 8387 fib   170 / 8057   (-50% components)
  calendar           171 comp / 1195 fib    75 /  907   (-56% components, -24% fibers)
  beszelSystemTable   36 comp / 1286 fib    18 / 1230   (-50% components)
  downloads / mediaRequests / app        unchanged - their overlays are functional

Two corrections to earlier claims in this branch:

  - The media-releases win came from the shared OverflowBadge fix, NOT from the tooltip change.
    Measured on the build with only the tooltip fix, mediaReleases was still at 340; it dropped
    to 170 once OverflowBadge stopped mounting a Popover when nothing overflows. The tooltip fix
    remains zero on this board because every release has a description.
  - The board-level "event listeners" metric is unusable. Across six runs of identical code it
    read 7905, 8000, 8166, 8179, 10360 and 17114. Chrome's Nodes counter has the same problem
    (23072 on one run against ~8850 on the rest) because it counts detached nodes awaiting
    collection, while "elements under body" stayed at 6691-6726 throughout. Only the per-widget
    component and fiber counts are stable enough to compare, so those are what is reported.
2026-08-11 10:09:59 +02:00
2026-08-07 17:41:07 +00:00
2024-11-05 21:11:14 +01:00

  Latest Release (Semver)   CI Status  

Live Demo 🎮 • Install 💻 • Translations 🈺 • Discord 👋

  • 🖌️ Highly customizable with an extensive drag and drop grid system
  • ✨ Integrates seamlessly with your favorite self-hosted applications
  • 📌 Easy and fast app management - no YAML involved
  • 👤 Detailed and easy to use user management with permissions and groups
  • 👥 Support for single sign on via OIDC / LDAP
  • 🙊 Safe encryption using BCrypt and AES-256-CBC for your valuable data
  • 🕔 Realtime widget updates using WebSockets, tRPC and Redis
  • 🔍 Search through thousands of data points in supported integrations or your data in Homarr using the fast built-in search
  • 🦞 Icon picker with over 11K icons
  • 🚀 Compatible with any major consumer hardware (x86, Raspberry Pi, old laptops, ...) and most OS (Windows, Linux, TrueNAS, Unraid)
  • 🖥️ Extensive Kubernetes support with Helm for efficient scaling & high reliability




Please click here for official installation instructions




Homarr is a free-to-use open source project maintained by volunteers and developers from all over the world. We publish under the Apache License 2.0 license which allows commercial usage. We invest multiple hours daily in providing support, developing Homarr, integrating to third party software and more. We also pay for licensing and server hosting fees. Please consider helping us cover these costs to enable the future development of Homarr. Thank you!

Please click here to sponsor us at OpenCollective

You can also support us by helping with translating the entire project to as many languages as possible or contributing directly to the code or documentation. Please read our Contribution Guidelines. All contributions, regardless of their size or scope, are welcome and highly appreciated! Thank you ❤️

Sponsors

Thanks to your generous sponsors, we can continue to build Homarr. Check them out for high-quality and easy-to-use development tools. Feel free to contact us at homarr-labs@proton.me if you wish to become a sponsor.

Covered by Argos Visual Testing
Supported by PikaPods

S
Description
A modern and easy to use dashboard. 40+ integrations. 20K+ icons built in. Authentication out of the box. No YAML, drag and drop configuration.
https://homarr.dev Readme Apache-2.0
243 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 89.5%
MDX 7%
Go 1.8%
CSS 0.9%
JavaScript 0.4%
Other 0.3%