Second correction in the same area. Having found that three Beszel widgets account for 82% of idle DOM churn, the obvious fix was to batch their subscription updates instead of calling setState per record. Implemented, built, measured: DOM mutations / 45s 733 -> 748 React commits / 45s 55 -> 55 Identical. Beszel emits roughly one record per second and the flush interval was also one second, so each flush batched exactly one record. Coalescing at the arrival rate does nothing - arithmetic that should have come before the implementation. That also exposes a unit error in the previous commit's numbers: DOM mutations are not re-renders. The real rates are 1.22 React commits/sec for the whole board and 13.3 DOM mutations per commit, because a chart redraw touches many nodes. The stats widget's "10.4 mutations/sec" is ~0.8 renders/sec - three live-monitoring widgets each refreshing about once a second, which is what they exist to do. So 73 commits/min is not pathological, it is the feature working, and there is no defect to fix here. Reverted rather than shipped: keeping speculative complexity that measured zero - an extra timer plus unmount and system-change teardown - is the trade this work rejects everywhere else. What survives is narrower: idle churn is widget-driven rather than app-shell driven, and legitimate. The 650 MB browser heap therefore comes from interaction and multi-tab use, not idle churn, and remains unexplained.
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.





