Plugin API Overview
The plugin API provides these methods:function
Register new utility classes
function
Register utilities that accept values
function
Register new variants
function
Register variants that accept values
function
Register component classes (same API as addUtilities)
function
Access theme values
function
Access config values
Creating a Simple Plugin
Here’s a basic plugin structure:tailwind.config.ts
Adding Static Utilities
Add utilities with fixed styles:Match Utilities (Dynamic Values)
Create utilities that accept values:Match Utilities Options
ThematchUtilities function accepts options:
Type Parameter
Thetype parameter validates arbitrary values:
'any'- Any value is accepted'color'- Colors only'length'- Length values (px, rem, etc.)'percentage'- Percentage values'number'- Numbers'angle'- Angle values (deg, rad, etc.)- Array of types:
['length', 'percentage']
Adding Variants
Create custom variants:Accessing Theme Values
Access theme values in your plugin:Plugin with Configuration
Create plugins that accept configuration:Real-World Plugin Examples
Scrollbar Utilities
Text Shadow Plugin
Animation Delay Plugin
Distributing Plugins
Create a shareable plugin package:my-plugin/index.ts
package.json:
Plugin Best Practices
- Use TypeScript - Get type safety and better IDE support
- Provide defaults - Make configuration optional with sensible defaults
- Follow naming conventions - Use Tailwind’s naming patterns
- Document thoroughly - Include usage examples and options
- Test across browsers - Ensure cross-browser compatibility
When creating utilities that use modifiers (like opacity modifiers for colors), set
modifiers: 'any' in the options to allow arbitrary modifier values.