Describe the bug
A clear and concise description of what the bug is.
The Photos app's "People" view becomes permanently frozen/unresponsive when opening a person (face cluster) with a large number of photos. The freeze is caused by an uncaught TypeError thrown inside VirtualScrolling.vue, which silently breaks Vue's reactivity for the component tree, the page stops updating entirely (no spinner, no error banner, low CPU usage) and navigating back to the People overview does not recover it.
This appears closely related to already-open reports #2558 ("Unassigned faces" tab breaks with the same error signature), #3105 ("Faces content display fails consistently"), and #3106 ("error in people section"). Unlike those reports, this one has a clean, reproducible correlation with cluster size, which may help narrow down the root cause.
To Reproduce
Steps to reproduce the behavior:
- Have the Recognize app enabled with face detection populated for a user with several named people/clusters of varying sizes.
- Go to Photos → People.
- Open a person with a large number of detections (in my case, hundreds to low thousands).
- Scroll down through their photo grid, then scroll back up — the most recently added photos disappear from the visible grid.
C5. lick the back/previous-photo arrow a few times inside the lightbox/detail view.
- The page freezes: no further UI updates occur, though CPU usage stays low (it does not loop or hang, it simply stops).
- Open the browser DevTools console, multiple errors are present.
Expected behavior
Opening or scrolling through a large person/cluster should not throw an uncaught error or permanently freeze the Photos UI, regardless of how many photos that person has.
Logs
TypeError: Cannot read properties of undefined (reading 'key')
at VirtualScrolling.vue:320
at ma (vue.runtime.esm.js:6466:15)
A secondary, likely cosmetic NavigationDuplicated router error also appears around the same time from repeated back-arrow clicks, but it reproduces even on small clusters that otherwise work fine, so it does not appear to be the actual cause of the freeze.
Detection count | Result
-- | -- | --
Person A | 1,518 | Freezes — VirtualScrolling.vue TypeError
Person B | 835 | Freezes — same error
Person C | 822 | Freezes — same error
Person D | 789 | Freezes — same error
Person E | 37 | Loads instantly, no errors
Person F | 37 | Loads instantly, no errors
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Nextcloud Server: 34.0.1.2
Photos app (bundled)
Recognize app enabled, PostgreSQL backend
Browser: Chrome/Edg (Chromium), Linux desktop
Face cluster sizes triggering the bug: ~800–1,500+ detections; clusters under ~40 detections unaffected
Browser log
Open your console, reload your page and/or do the action leading to this issue and copy/paste the log in this thread.
Edge in Ubuntu Linux 24.04
Related issues
#2558 — same TypeError: Cannot read properties of undefined (reading 'key') signature, in the "Unassigned faces" context
#3105 — Faces content display fails consistently
#3106 — error in people section
Additional context
All three previous bug reports appear to be manifestations of the same underlying VirtualScrolling.vue issue on large lists, just triggered from slightly different entry points (unassigned faces vs. named person vs. general people section). Consolidating investigation across them may help, since this report's size-correlation data (working small clusters vs. failing large ones) isn't present in the earlier reports.
Describe the bug
A clear and concise description of what the bug is.
The Photos app's "People" view becomes permanently frozen/unresponsive when opening a person (face cluster) with a large number of photos. The freeze is caused by an uncaught TypeError thrown inside VirtualScrolling.vue, which silently breaks Vue's reactivity for the component tree, the page stops updating entirely (no spinner, no error banner, low CPU usage) and navigating back to the People overview does not recover it.
This appears closely related to already-open reports #2558 ("Unassigned faces" tab breaks with the same error signature), #3105 ("Faces content display fails consistently"), and #3106 ("error in people section"). Unlike those reports, this one has a clean, reproducible correlation with cluster size, which may help narrow down the root cause.
To Reproduce
Steps to reproduce the behavior:
C5. lick the back/previous-photo arrow a few times inside the lightbox/detail view.
Expected behavior
Opening or scrolling through a large person/cluster should not throw an uncaught error or permanently freeze the Photos UI, regardless of how many photos that person has.
Logs
TypeError: Cannot read properties of undefined (reading 'key')
at VirtualScrolling.vue:320
at ma (vue.runtime.esm.js:6466:15)
A secondary, likely cosmetic NavigationDuplicated router error also appears around the same time from repeated back-arrow clicks, but it reproduces even on small clusters that otherwise work fine, so it does not appear to be the actual cause of the freeze.
Detection count | Result
-- | -- | --
Person A | 1,518 | Freezes — VirtualScrolling.vue TypeError
Person B | 835 | Freezes — same error
Person C | 822 | Freezes — same error
Person D | 789 | Freezes — same error
Person E | 37 | Loads instantly, no errors
Person F | 37 | Loads instantly, no errors
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Nextcloud Server: 34.0.1.2
Photos app (bundled)
Recognize app enabled, PostgreSQL backend
Browser: Chrome/Edg (Chromium), Linux desktop
Face cluster sizes triggering the bug: ~800–1,500+ detections; clusters under ~40 detections unaffected
Browser log
Edge in Ubuntu Linux 24.04
Related issues
#2558 — same TypeError: Cannot read properties of undefined (reading 'key') signature, in the "Unassigned faces" context
#3105 — Faces content display fails consistently
#3106 — error in people section
Additional context
All three previous bug reports appear to be manifestations of the same underlying VirtualScrolling.vue issue on large lists, just triggered from slightly different entry points (unassigned faces vs. named person vs. general people section). Consolidating investigation across them may help, since this report's size-correlation data (working small clusters vs. failing large ones) isn't present in the earlier reports.