richtext-lexical: `slashMenu.dynamicGroups` are dropped (self-concatenation in the merge, and not offered on a bare "/")
Maintainers usually reply within 1 day
@muhammad-wasif-code is already working on this.
Since Nov 4, 2026.
- #19320 by @muhammad-wasif-code — open
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 77/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- react, typescript
Research direction
Start in lexical/plugins/SlashMenu/index.js and trace how dynamicGroups are read, merged, and shown for a bare "/". Fix the merge to include dynamic items without mutating the configured group, preserve its menu position, and allow fetching when the query is empty. Check that dynamic groups work with an empty static groups array and with a function that declares no parameters; done when the reported cases display correctly.
Written by the indexing model from the issue text.
Description
Version: @payloadcms/richtext-lexical 4.0.0-beta.6
A client feature's slashMenu.dynamicGroups items never appear in the slash menu. In lexical/plugins/SlashMenu/index.js:
- Self-concatenation: when a dynamic group's key matches an existing group (e.g.
basic), the merge does
It concatenates the existing group with itself and never addsif (group?.items?.length) group.items = group.items.concat(group.items)dynamicGroup.items. Every dynamic item is lost, and the static items are duplicated in the mutated config object. - Order: the matched group is filtered out and pushed to the end, so merging moves it to the bottom of the menu.
- Bare "/": dynamic groups are fetched and merged only
if (queryString), so they never show for "/" with no query. - Undocumented preconditions: dynamic groups are read only when the feature also declares static
groups(an empty array works), and only when thedynamicGroupsfunction declares a parameter (the code checks.length). Payload also doesn't filter dynamic items by the query, unlike static items. That last point may be intended, but it isn't documented.
Suggested fix: concatenate dynamicGroup.items, copy instead of mutating the config group, replace the matched group in place, and run the merge for queryString != null. We run this as a patch and can open a PR.
- Dominant language
- TypeScript
- Stars
- 45.6k
- Forks
- 4.4k
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 237
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from payloadcms/payload
-
plugin-multi-tenant: `isGlobal` collections redirect tenant-scoped users to `/admin` since 3.93.0 (GlobalViewRedirect prop-name mismatch)Possibly taken A pull request linked to this issue is open or already merged. OpenBug plugin: multi-tenant
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
payloadcms/payload#19420 ·
Maintainers usually reply within 1 day
-
area: ui Bug created-by: Contributor status: needs-triage v3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
payloadcms/payload#19413 ·
Maintainers usually reply within 1 day
-
area: ui Bug created-by: Contributor status: needs-triage v3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
payloadcms/payload#19412 ·
Maintainers usually reply within 1 day
-
area: ui Bug created-by: Contributor status: needs-triage v3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
payloadcms/payload#19403 ·
Maintainers usually reply within 1 day
-
area: ui Bug created-by: Contributor status: needs-triage v3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
payloadcms/payload#19396 ·
Maintainers usually reply within 1 day
All issues in payloadcms/payload
Similar issues
-
Billion-context documentation addendum: nudge is independent of window occupancy. | billion-context 文档补充:nudge 与窗口占用无关Possibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 1/5 1-3 hours Newbie friendliness 86/100
ranxianglei/billion-context#5893 ·
Maintainers usually reply within 1 day
-
stringify escapes leading digits in pseudo-class arguments (:nth-child(1) becomes :nth-child(\31 ))Open
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
enhancement security severity:low
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Battle-Cattle/BCUK-Bot-4#959 ·
Maintainers usually reply within 1 day
-
[Bug]: Claude account rows no longer show the email (since #8055), so "Account 1, 2, 3" cannot be told apartPossibly taken A pull request linked to this issue is open or already merged. Openaccount-pool bug gui
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
lidge-jun/opencodex#8286 · 2 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
Maintainers usually reply within 1 day