766 issues WTF. Now, that we update a larger customer project to Plone 6.2 and V…olto 19 I was curious whats the state of Volto is. So, the issue tracker at least is a mess, still btw.
Over the last two days I took Claude and went through the open issues and pull requests to give us a clearer picture of what is still relevant for Volto 19. Every issue I closed was checked against the code on `main` first. Each closed issue got a short comment with the reasoning, and open bugs I checked got a comment that names the cause with file pointers, so every decision can be reviewed and reversed.
## Results
- Open issues: **766 → 516**.
- **245 closed**: 159 fixed or implemented, 77 not planned (obsolete, works as designed, or old reports without reproduction steps), 9 duplicates.
- **9 transferred** to plone/aurora (former `seven` topics).
- **About 240 open issues** now have a "Checked against `main` (Volto 19)" comment that names the cause, or says what is still missing.
- **Labels**: the 108 issues that had no type label now have one (except the #8318 announcement). 137 issues are labelled `21 status: confirmed`, with `61 scope: editor` / `62 scope: viewer` and `41 lvl: easy` where it fits.
- **Enhancements**: all open enhancements were checked against the code on `main`.
- 68 turned out to be implemented, obsolete or duplicates, and were closed.
- 28 are partly implemented; each got a comment that says what exists and what is still missing.
- The rest stay open as valid ideas.
- **Questions and discussions**: 14 that were answered in the thread or in the docs were closed with a pointer. Real, undecided discussions stay open.
- **New issues** found along the way:
- In Volto: #8487, #8489, #8490 (regression from #8113), #8491.
- In other packages: plone/plone.restapi#2078, plone/plone.restapi#2079, plone/plone.app.contenttypes#764, plone/plone.volto#216.
- **Pull requests**:
- The 19 PRs against the closed `seven` branch got the new label `99 tag: seven` and a comment asking to move them to plone/aurora (#8318) or close them.
- 6 PRs whose issue was already fixed by another PR got a comment asking whether they are still needed: #5615, #6592, #6753, #7215, #7535, #7623.
## Rules I applied
- I only closed an issue when the fix, removal or duplicate was verified in the code on `main`, or on volto.demo.plone.org.
- When I was less than sure, the closing comment says "If this is wrong, please reopen."
- Old bug reports without reproduction steps were closed as "not planned", with an invitation to reopen with steps for Volto 19. Reports from the Volto 18 era got a question and the label `30.1 needs: confirmation` instead.
- Enhancements and ideas stay open by default. They were only closed when already implemented or no longer meaningful.
- `21 status: confirmed` means the cause is visible in the code on `main`. It does not always mean the bug was reproduced in a browser.
## Live lists
These searches are always up to date:
- [Approved PRs that are not merged yet](https://github.com/plone/volto/pulls?q=is%3Apr%20is%3Aopen%20review%3Aapproved) (33)
- [Confirmed bugs with a linked PR](https://github.com/plone/volto/issues?q=is%3Aissue%20is%3Aopen%20label%3A%2221%20status%3A%20confirmed%22%20linked%3Apr) (46, of which 32 have an open fix PR, see the table below)
- [Confirmed bugs that are easy to fix](https://github.com/plone/volto/issues?q=is%3Aissue%20is%3Aopen%20label%3A%2221%20status%3A%20confirmed%22%20label%3A%2241%20lvl%3A%20easy%22) (38), good for sprints and first contributions
- [Issues that need someone to confirm them on Volto 19](https://github.com/plone/volto/issues?q=is%3Aissue%20is%3Aopen%20label%3A%2230.1%20needs%3A%20confirmation%22) (13)
## Approved PRs: what blocks them (snapshot of 2026-10-28)
**No conflicts, CI green: ready to merge?**
- [ ] #6361
- [ ] #7169
- [ ] #7685
- [ ] #8250
- [ ] #8485 (dependabot)
- [ ] #8486 (fixes #8380)
- [ ] #6870 (targets `18.x.x`)
**CI failing**
- [ ] #6544
- [ ] #8065
- [ ] #8304 (WIP)
**Blocked by required checks or reviews**
- [ ] #6086
- [ ] #6827
- [ ] #7180
- [ ] #7227
**Merge conflicts, needs a rebase**
- [ ] #2796
- [ ] #3325
- [ ] #3866
- [ ] #3912
- [ ] #4583
- [ ] #5016
- [ ] #5160
- [ ] #6346
- [ ] #6435
- [ ] #6465
- [ ] #6592 (probably superseded: #6341 was fixed by #6802 and #7982)
- [ ] #7218
- [ ] #7511
- [ ] #7779
- [ ] #8357
- [ ] #8377
**Against the closed `seven` branch**: #7344, #7345, #8020 (already commented).
**Dependabot**
- Ready: #8485 (approved), #8354 (patch release, mergeable).
- #8462 (moment): mergeable, although moment is being replaced (#8250).
- Major upgrades that need a decision: #8425 (vitest 3 → 5), #8370 (vite 6 → 7), both with conflicts.
- #8338 (tmp): conflicts, a Dependabot rebase should solve it.
**Small follow-ups found during triage** (no issue yet)
- `docs/source/blocks/introduction.md` still says the Title block cannot be removed by default, which is no longer true since #6885.
- `tocEntry` / `tocEntries` in the blocks config are used by the ToC block, but not documented.
- On `main`, the `view-<name>` body class is never set for the core views, because they have no `displayName` (see #1189).
## Questions for the Volto team
1. **Stale PRs.** There are 204 open PRs: 59 have changes requested and 64 are more than two years old. Should we ask the authors personally whether they want to finish them, and close the rest after a grace period?
2. **`seven` PRs.** Should we close them here after a grace period, once the authors had time to move them?
3. **Stale bot.** `stale-items.yml` keeps adding `27 status: stale` (46 open issues still have it), but nothing acts on that label. Keep it, or rely on manual triage?
4. **Prevention.**
- Many fixed issues stayed open because the PR said "Ref #…" or "for #…" instead of "Fixes #…".
- A required "Volto version" field in the bug report form would make future triage much easier.
5. **Idea backlog.** About 275 enhancements remain open as ideas. Would grouping them by component, for example on the roadmap board, help decide which ones to pursue?
<details>
<summary>Confirmed bugs with an open fix PR (32)</summary>
| Issue | Title | Open PR (review state) | Easy |
|---|---|---|---|
| #955 | user menu popup is not available on the site setup pages | #8441 (changes requested) | yes |
| #3474 | When used as folder contents, withQuerystringResults triggers an unnee | #7598 (changes requested) | |
| #3910 | can't edit on mobile as hard to close and reopen settings | #3912 (approved, conflicts) | yes |
| #4000 | auto-switch to relevance when using a keyword in a search block, even | #4213 (changes requested, conflicts) | |
| #4058 | Add Field modal when editing a content type schema needs resizing. | #5863 (changes requested, conflicts) | |
| #4538 | volto-slate does not properly support "list in list" as generated by P | #4583 (approved, conflicts) | |
| #4584 | Locale should not be hardcoded in sort | #4594 (review required, conflicts) | yes |
| #4762 | It is not possible to use variables ${navigation_root_url}" and "${por | #7779 (approved, conflicts) | |
| #5015 | Not able to edit second column of table block. | #5016 (approved, conflicts) | |
| #5142 | a11y - site setup - Addon-ons - cms ui | #6345 (changes requested, conflicts) | |
| #5212 | a11y - edit page - add block/blocks-chooser - cms ui | #6597 (changes requested, conflicts) | |
| #6348 | a11y - site setup - Date and Time - input fields - cms ui - focus visi | #6544 (approved) | |
| #6463 | Link content type flashes the logged in page when navigating client-si | #6464 (review required, conflicts) | |
| #6574 | Addition of text block | #6580 (changes requested) | |
| #6752 | deleteBlock helper doesn't handle the case where the layout is empty a | #6753 (review required, conflicts) | |
| #6787 | display field form errors in ObjectBrowserWidget. | #6827 (approved) | yes |
| #6987 | Registration form fails with 404 in Volto | #6988 (changes requested, draft) | |
| #7077 | FormValidation does not correctly validate schemas within ObjectListWi | #7078 (changes requested) | |
| #7094 | Express server adds an etag header on served HTML | #7109 (changes requested) | |
| #7265 | Typing error when using `description` in schema with TextWidget – prop | #7266 (changes requested) | yes |
| #7556 | Slate - Cursor moving to end of text at each keystroke in HtmlSlateWid | #7557 (changes requested) | |
| #7587 | Production LESS CSS Modules emit literal [local] in class names | #7588 (review required) | |
| #7708 | `viewableInBrowserObjects` configuration not working for links in text | #7739 (changes requested, conflicts) | |
| #7838 | Choice field dropdown arrow overlaps with edit/delete icons in Content | #7843 (review required, conflicts) | |
| #8016 | Search pagination components PrevItem and NextItem not updated on page | #8445 (review required) | |
| #8037 | Invalid load "redux_localstorage_simple_blocksClipboard.cut" warning f | #8446 (review required) | |
| #8335 | fix(a11y): improve react-select ARIA live messages for screen readers | #8395 (review required) | |
| #8367 | /change-password renders the full form to anonymous visitors | #8414 (review required) | yes |
| #8380 | Client-side logout leaves actions/navigation reducers with logged-in d | #8486 (approved) | |
| #8407 | Cannot copy/cut/paste blocks that are inside container blocks (Grid, G | #8417 (changes requested) | |
| #8439 | Table block: pressing Tab moves cursor to the beginning of the next ce | #8458 (review required) | |
| #8465 | Fix padding of links and references menu table | #8466 (changes requested) | yes |
</details>
<details>
<summary>Closed issues by reason (245)</summary>
**Completed (159):** #588, #977, #1080, #1160, #1181, #1383, #1397, #1404, #1431, #1443, #1597, #1616, #1642, #1728, #1770, #1799, #1805, #1828, #1831, #1852, #1865, #1867, #1878, #1913, #1914, #1921, #1957, #1965, #2005, #2014, #2075, #2095, #2105, #2111, #2135, #2166, #2171, #2207, #2208, #2227, #2228, #2235, #2248, #2271, #2278, #2298, #2300, #2365, #2379, #2414, #2483, #2521, #2540, #2545, #2587, #2591, #2685, #2717, #2728, #2775, #2791, #2802, #2857, #2877, #2880, #2887, #2918, #2968, #3011, #3016, #3025, #3038, #3040, #3074, #3192, #3263, #3307, #3341, #3418, #3423, #3435, #3568, #3627, #3632, #3633, #3662, #3702, #3722, #3735, #3741, #3797, #3851, #3863, #3896, #4018, #4056, #4059, #4081, #4119, #4162, #4167, #4171, #4241, #4263, #4346, #4370, #4397, #4402, #4410, #4412, #4415, #4477, #4508, #4525, #4579, #4624, #4638, #4653, #4659, #4660, #4723, #4738, #4828, #4833, #4844, #4855, #4907, #4915, #5121, #5204, #5210, #5219, #5308, #5386, #5396, #5400, #5451, #5614, #5617, #5623, #5677, #5691, #5716, #5754, #5802, #5954, #6071, #6169, #6283, #6341, #6532, #6742, #6969, #7181, #7222, #7330, #7527, #7533, #8109
**Not planned (77):** #597, #610, #654, #689, #1340, #1387, #1466, #1513, #1651, #1788, #1825, #1841, #1963, #2071, #2134, #2149, #2160, #2165, #2219, #2256, #2272, #2289, #2303, #2372, #2455, #2478, #2497, #2518, #2561, #2746, #2753, #2986, #3175, #3209, #3233, #3238, #3246, #3260, #3328, #3336, #3667, #3695, #3770, #3835, #3855, #3862, #3870, #3890, #4289, #4314, #4349, #4411, #4430, #4440, #4645, #4708, #5218, #5272, #5277, #5351, #5415, #5767, #5829, #5949, #6003, #6052, #6159, #6160, #6336, #6353, #6417, #6428, #7005, #7074, #7232, #7855, #7953
**Duplicate (9):** #7, #1384, #1580, #1962, #2773, #3470, #4123, #5421, #6233
**Transferred to plone/aurora (9):** #6195, #6254, #6260, #7097, #7159, #7519, #8012, #8046, #8264
</details>
Assisted-by: Claude Opus 5.5