> ## Documentation Index
> Fetch the complete documentation index at: https://illegalcord.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Plugins

> Manage Illegalcord plugins and understand how bundled plugin folders map to the source tree.

Illegalcord plugins are compiled into the client from the repository. The plugin browser is not a separate marketplace in this source tree; it reflects the plugins that the build system discovers.

## Plugin sources

| Source folder         | Shown as            | Notes                                                    |
| --------------------- | ------------------- | -------------------------------------------------------- |
| `src/plugins`         | Stock plugins       | Vencord-style plugins included by the fork.              |
| `src/equicordplugins` | Equicord plugins    | Equicord-specific plugins and API additions.             |
| `src/userplugins`     | Illegalcord plugins | Illegalcord-specific bundled plugins in this repository. |

Platform suffixes such as `.desktop`, `.web`, `.dev`, `.discordDesktop`, `.vesktop`, and `.equibop` control whether a plugin is included in a build.

## Browse plugins

<Steps>
  <Step title="Open Plugins">
    Go to Discord User Settings, then open **Illegalcord Settings > Plugins**.
  </Step>

  <Step title="Search or filter">
    Use the search box to match plugin names, descriptions, acronyms, and search terms. Use filters for enabled, disabled, stock, Equicord, Illegalcord, new, and API plugins.
  </Step>

  <Step title="Open plugin details">
    Use the info icon for a description, authors, tags, source type, and links.
  </Step>

  <Step title="Configure settings">
    Use the cog wheel when a plugin exposes a `settings` schema.
  </Step>
</Steps>

## Enable and disable plugins

Each plugin card has a toggle. Most plugins can start or stop without a full reload, but plugins with Webpack patches often require a restart to apply cleanly.

<Tip>
  The Plugins tab shows a restart banner when a change needs a reload. Restart from the banner instead of stacking more changes blindly.
</Tip>

## API plugins

Some plugins are APIs used by other plugins. Examples include APIs for chat buttons, context menus, badges, message accessories, message popovers, header buttons, and profile sections.

Declarative plugin fields automatically enable the matching API plugin. Imperative `add*` and `remove*` calls require an explicit `dependencies` entry in the plugin object.

## Plugin metadata

The build generates plugin metadata from source. After adding, moving, or renaming plugins, run:

```bash theme={null}
pnpm generatePluginJson
```

Use the narrower commands when needed:

```bash theme={null}
pnpm generateEquicordPluginJson
pnpm generateVencordPluginJson
```

## Editing plugins safely

* Keep new plugins in a folder with `index.ts` or `index.tsx`.
* Use `export default definePlugin({ ... })`.
* Use `Devs` or `EquicordDevs` for authors in mergeable plugins.
* Prefer declarative plugin fields over manual lifecycle registration.
* Pair every side effect from `start()` with cleanup in `stop()`.
* Search existing utilities before adding helpers.

<Warning>
  Plugins run in the Discord client context. Review source before enabling unfamiliar plugin code, especially in forks.
</Warning>
