Next loads the module graph for all 74 app routes when the server starts. Measured here: 1,114 files and 24 MiB of source resident before the first request, including one shared 16 MiB subtree behind the API routes that reaches every integration client. A dashboard serves a handful of routes per session. `experimental.preloadEntriesOnStart: false` is Next's documented switch for this. An earlier round of this work recorded route preloading as "framework behaviour, not something this codebase sets" - that was wrong, and the findings doc is corrected. Deterministic per-stage measurements, identical across both runs on each side: stage source loaded files heapUsed boot idle 24.0 -> 10.6 MiB 1114 -> 706 70.7 -> 44.8 (-37%) post-login 27.9 -> 19.3 MiB 1215 -> 884 123.8 -> 109.8 board loaded 29.0 -> 21.7 MiB 1323 -> 1006 (run-to-run noise) multi-tab 29.2 -> 22.9 MiB 1325 -> 1015 139.7 -> 127.8 post-soak 29.2 -> 22.9 MiB 1325 -> 1015 142.5 -> 127.4 The important part is the last two rows: 310 files and 6.3 MiB of source stay unloaded even after a full multi-tab session, so this is not merely deferred cost - routes the session never visits are never paid for at all. Live heap is lower at every stage, by 26 MiB at idle and 12-15 MiB under load and at rest. Peak node RSS does not move (350.3 -> 346.1, spreads overlap). V8 sizes its heap against available headroom, so a smaller live set does not shrink peak RSS; what improves is idle footprint and how much room is left before the heap cap. Median board load is +3% with overlapping spreads, so the first-hit cost this trades for did not show at this workload. Full E2E suite passes 8/8 against the built image.
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.





