Zere's Plugin Library (ZPL) is a widely used foundational library for BetterDiscord
that allows developers to create and manage complex plugins more efficiently. Status Update: Deprecation As of late 2024 and 2025, Zere's Plugin Library has reached End of Life (EOL) and is now considered deprecated and discontinued
: Most of the library's utility functions and features have been integrated directly into BetterDiscord’s built-in API
: While many existing plugins still require it to function, the library will no longer receive updates to fix issues caused by new Discord versions. Developers are encouraged to migrate their plugins to the native BetterDiscord API Overview for Users & Developers
If you are still using or maintaining plugins that rely on ZPL, here are the key resources: Download & Repo : The official repository remains available on GitHub (zerebos/BDPluginLibrary) for historical reference and maintenance of older plugins. Documentation
: Detailed technical guides for the library's legacy features can be found at the BDPluginLibrary Documentation site Installation : For manual installation, the .plugin.js
file is typically placed in the Discord plugins folder (accessible via
User Settings > BetterDiscord > Plugins > Open Plugins Folder Troubleshooting
: Since the library is EOL, recent Discord updates often break its functionality. Community discussions on Reddit's BetterDiscord board
are the best places to find temporary hotfixes or community-made forks. Why it was Important zeres plugin library
Before its deprecation, ZPL provided a "Standard Library" for BetterDiscord, offering: UI Components : Pre-made modals, tooltips, and settings panels.
: Easy access to Discord's internal modules and data structures. Automation : Build scripts (via
) to bundle complex plugin projects into single files for distribution. Are you looking to fix an existing plugin that requires this library, or are you developing a new one Zere's Plugin Library deprecation · Issue #57 - GitHub 30 Dec 2024 —
ZeresPluginLibrary (also known as Zere’s Plugin Library or BDPluginLibrary) is a developer-focused utility library designed to streamline the creation and maintenance of BetterDiscord plugins. It provides a standardized set of tools for UI components, settings management, and Discord-specific interactions that aren't natively available in the standard API. Core Purpose and Use Case
For Users: It is a mandatory dependency for many popular BetterDiscord plugins. If a plugin requires this library, it will typically alert you to download and install it (usually as 0PluginLibrary.plugin.js) into your plugins folder.
For Developers: It eliminates the need to reinvent the wheel by providing pre-built modules for things like:
Settings Panels: Easily create toggles, sliders, and text inputs for plugin configuration.
UI Components: Access consistent Discord-styled buttons, modals, and tooltips.
Utility Functions: Helper methods for DOM manipulation and interacting with Discord's internal modules. Status and Deprecation Zere's Plugin Library (ZPL) is a widely used
Current State: While widely used, the project has faced periods of deprecation or instability following major Discord updates.
Integration: Over time, several features originally exclusive to this library have been integrated directly into the BetterDiscord core API, reducing the total reliance on external libraries for newer plugins. Key Resources
Official Repository: Documentation and source code can be found on GitHub.
NPM Package: Developers can use the zerespluginlibrary package to help bundle and build their plugins. zerebos/BDPluginLibrary: Plugin library for BetterDiscord.
ZeresPluginLibrary (ZPL) is a foundational, open-source developer library created by Zerebos to standardize and simplify the creation of BetterDiscord plugins, providing essential UI components and utility functions for developers. For end-users, this library is required for many advanced plugins to function, acting as a middleware that ensures consistent settings menus and easier updates when Discord's internal code changes. You can find the library on the ZeresPluginLibrary GitHub repository.
BetterDiscord/ZeresPluginLibraryPlease provide the library’s repository URL or the exact application it extends, and I’ll generate a thorough report for you.
Ready to get started? Here is the definitive guide to installing the Zeres Plugin Library correctly.
This is a conceptual outline showing the lifecycle methods and using the library for settings and cleanup:
onLoad / start:
onStop / unload:
Key housekeeping:
Photoshop requires you to write JavaScript or use the complex "Conditional Actions" interface. GIMP requires Scheme or Python scripting. Zeres uses a visual interface. You check boxes, drag sliders, and arrange the order of operations. No code required.
The library supports "if/then" logic. For example:
This is typically found in the "Code Lab" or "Script Lab" extension that works alongside Zeres.
In modern software engineering, the "monolithic" approach is increasingly yielding to modular designs. Plugin architectures allow developers to extend application functionality without modifying the core codebase. However, standard implementations often rely on dynamic casting (e.g., dynamic_cast in C++ or reflection in Java/C#) which introduces runtime overhead and potential segmentation faults if version mismatches occur.
Zeres is proposed as a lightweight, header-only (or native binary) library that treats plugins not merely as external symbols, but as first-class citizens of the application's dependency graph. Zeres enforces a strict contract between the Host and the Plugin, ensuring that objects are validated before instantiation.
Let's move from theory to practice. How do professionals use this library in real life?
The host application uses a PluginRegistry to manage the ecosystem. Confirm the exact name and context (e
Zeres::PluginRegistry registry;
// Load library and metadata only
registry.scanDirectory("./plugins");
// Retrieve a specific interface safely
auto effect = registry.getInterface<IEffect>("com.example.effects.custom");
if (effect && effect->checkVersion("1.0.0"))
effect->apply(myImage);