Plugins lack a consistent enabled/disabled option
Maintainers usually reply within 1 day
@lakshmidad is already working on this.
Since Oct 9, 2026.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- backend
Research direction
Start with templates/plugin/src/index.ts and compare the configuration types linked in plugin-multi-tenant, plugin-mcp, and plugin-seo. Review the affected plugin packages listed in the issue and align their on/off configuration with the template. Done means every listed plugin uses the same option and disabled plugins still add their collections and fields for schema consistency.
Written by the indexing model from the issue text.
Description
Describe the Bug
Most official plugins can't be turned off via config, and those that can don't agree on the option name:
enabled?: boolean: plugin-cloud-storage, plugin-multi-tenant, plugin-sentrydisabled?: boolean: plugin-mcp,templates/plugin- no option: plugin-ecommerce, plugin-form-builder, plugin-import-export, plugin-nested-docs, plugin-redirects, plugin-search, plugin-seo, plugin-stripe
Expected: every plugin supports the same on/off option. Per the plugin template, a disabled plugin should still add its collections/fields so the DB schema stays consistent.
Link to the code that reproduces this issue
https://github.com/payloadcms/payload/blob/124b55a/packages/plugin-seo/src/types.ts
Reproduction Steps
Compare the plugin config types:
enabled: https://github.com/payloadcms/payload/blob/124b55a/packages/plugin-multi-tenant/src/types.ts#L93disabled: https://github.com/payloadcms/payload/blob/124b55a/packages/plugin-mcp/src/types.ts#L273disabledin the plugin template: https://github.com/payloadcms/payload/blob/124b55a/templates/plugin/src/index.ts#L10- none: https://github.com/payloadcms/payload/blob/124b55a/packages/plugin-seo/src/types.ts
Which area(s) are affected?
plugin: ecommerce, plugin: form-builder, plugin: import-export, plugin: mcp, plugin: nested-docs, plugin: redirects, plugin: search, plugin: seo, plugin: stripe, area: templates
Environment Info
payload main @ 124b55a (4.0.0-canary.37)
- Dominant language
- TypeScript
- Stars
- 45.5k
- Forks
- 4.3k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 295
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
-
Bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
payloadcms/payload#19060 ·
Maintainers usually reply within 1 day
-
WhereBuilder throws "Cannot read properties of undefined (reading 'value')" when the list URL filters on a field that is not filterablePossibly taken A pull request linked to this issue is open or already merged. OpenBug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
payloadcms/payload#19002 · 1 comment ·
Maintainers usually reply within 1 day
-
Regression: `findByID` with `disableErrors: true` throws `NotFound` for null/empty ids since 3.91.0Possibly taken @Krrishkumar125 claimed this 4 days ago. Openarea: core Bug invalid-reproduction status: needs-triage v3
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
payloadcms/payload#18935 · 1 comment ·
Maintainers usually reply within 1 day
-
bug: Local API call with req resets req.fallbackLocale to defaultLocalePossibly taken A pull request linked to this issue is open or already merged. Openarea: core Bug created-by: Contributor
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
payloadcms/payload#18768 ·
Maintainers usually reply within 1 day
-
[plugin-multi-tenant] Infinite redirect loop with custom tenantFieldName and isGlobal collectionsPossibly taken A pull request linked to this issue is open or already merged. OpenBug plugin: multi-tenant status: needs-triage v3
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
payloadcms/payload#18690 ·
Maintainers usually reply within 1 day
All issues in payloadcms/payload
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
awslabs/visual-asset-management-system#804 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
restatedev/sdk-typescript#813 ·
-
bug desktop P1 session XS
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Merit-Systems/x402scan#1312 ·
-
type:bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Azure/apiops-cli#331 ·
Maintainers usually reply within 3 days