measure-rerenders.mts counts React commits on an untouched board and attributes each
to the shallowest component that re-rendered, i.e. where the update entered the tree.
What it found: an idle board commits 73-96 times per minute, re-rendering
@mantine/core/Box over 30,000 times in 60s. That is the churn behind the 650 MB
browser peak — transient allocation rather than retention. About 80% of those commits
enter at the same anonymous depth-2 provider, props [value, children], value {appDir}:
Next.js's internal HeadManagerContext, whose value is a fresh object literal on every
App Router render, so each render re-renders the whole app beneath it. The rest enter
at __next_metadata_boundary__ / <title>, pointing the same way.
The trigger is inside Next's router/metadata handling — application code has no
polling router.refresh() — so nothing here fixes it. It is the next thing to chase and
it dominates everything downstream of it.
useTimeAgo called setState on a 1s interval even when the label was unchanged ("3
minutes ago" holds for a full minute), re-rendering its subtree ~60x/minute per
consumer for an identical string. It now compares before setting. Recorded as a
correctness fix and NOT a measured win: idle commits stayed inside their 73-96 range
afterwards, because the app-root churn dominates.
pnpm test 1794/1795 (pre-existing pi-hole Testcontainers flake); typecheck clean
across 37 packages; no new lint errors.
* feat: add object base64 hash method
* chore: add script to add package
* feat: add request-handler package
* wip: add request handlers for all jobs and widget api procedures
* wip: remove errors shown in logs, add missing decryption for secrets in cached-request-job-handler
* wip: highly improve request handler, add request handlers for calendar, media-server, indexer-manager and more, add support for multiple inputs from job handler creator
* refactor: move media-server requests to request-handler, add invalidation logic for dns-hole and media requests
* refactor: remove unused integration item middleware
* feat: add invalidation to switch entity action of smart-home
* fix: lint issues
* chore: use integration-kind-by-category instead of union for request-handlers
* fix: build not working for tasks and websocket
* refactor: add more logs
* refactor: readd timestamp logic for diconnect status
* fix: lint and typecheck issue
* chore: address pull request feedback
* feat: add support for all languages from old homarr
* fix: add mantine-react-table translations, remove arabic language
* refactor: change translations to json for better crowdin support
* fix: issues with loading dayjs and mantine-react-table translations
* chore: add additional translations with variables
* fix: format and deepsource issues
* fix: test failing because of missing coverage exclusions
* fix: format issues
* fix: format issue
* WIP On docker integration
* WIP on adding docker support
* WIP on adding docker support
* chore: Add cacheTime parameter to createCacheChannel function
* bugfix: Add node-loader npm dependency for webpack configuration
* revert changes
* chore: Add node-loader npm dependency for webpack configuration
* feat: Add Docker container list to DockerPage
* chore: apply pr suggestions
* fix: fix printing issue using a Date objext
* chore: Update npm dependencies
* feat: Create DockerTable component for displaying Docker container list
* feat: Refactor DockerPage to use DockerTable component
* feat: Refactor DockerPage to use DockerTable component
* feat: Add useTimeAgo hook for displaying relative timestamps
* feat: Add hooks module to common package
* refactor: Update DockerTable component
Include container actions and state badges
* feat: add information about instance for docker containers
* feat: Add OverflowBadge component for displaying overflowed data
* feat: Refactor DockerSingleton to use host and instance properties
This commit refactors the DockerSingleton class in the `docker.ts` file to use the `host` and `instance` properties instead of the previous `key` and `remoteApi` properties. This change improves clarity and consistency in the codebase.
* feat: Add OverflowBadge component for displaying overflowed data
* feat: Improve DockerTable component with Avatar and Name column
This commit enhances the DockerTable component in the `DockerTable.tsx` file by adding an Avatar and Name column. The Avatar column displays an icon based on the Docker container's image, while the Name column shows the container's name. This improvement provides better visual representation and identification of the containers in the table.
* feat: Enhance DockerTable component with Avatar and Name columns
* refactor: improve docker table and icon resolution
* chore: address pull request feedback
* fix: format issues
* chore: add missing translations
* refactor: remove black background
---------
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>