Plugin System Overview
Extend Frame-Master with powerful plugins for frontend frameworks, databases, authentication, and more.
🏗️ How Plugins Work
Plugins hook into Frame-Master's server lifecycle and request pipeline.
Server Start → serverStart.main()
Request → before_request → request → after_request
HTML → html_rewrite()
Build → beforeBuild → afterBuild
🔌 What Plugins Can Do
Plugins extend virtually every aspect of Frame-Master.
⚛️
Frontend Frameworks
React, Vue, Svelte SSR
🔐
Auth & Sessions
OAuth, JWT, cookies
🔄
Request Pipeline
Intercept & modify requests
🎨
HTML Transform
Rewrite before sending
🔨
Build Process
Custom configurations
📡
WebSockets
Real-time communication
⚡ Quick Example
A minimal plugin structure.
my-plugin.ts
import type { FrameMasterPlugin } from "frame-master/plugin/types";export function myPlugin(options = {}): FrameMasterPlugin {return {name: "my-plugin",version: "1.0.0",priority: 50, // Optional: lower = runs firstserverStart: {main: async () => console.log("Plugin loaded!"),},router: {before_request: async (master) => {master.setContext({ startTime: Date.now() });},request: async (master) => {// Handle or intercept requests},after_request: async (master) => {// Modify response headers},},};}
📦 Using Plugins
Add plugins to your Frame-Master configuration.
frame-master.config.ts
import { defineConfig } from "frame-master";import reactSSR from "frame-master-plugin-react-ssr";import session from "frame-master-plugin-session";export default defineConfig({plugins: [reactSSR(),session({ secret: process.env.SESSION_SECRET }),],});
📋 Plugin Properties
Quick reference for plugin configuration.
Required
namestringrequiredUnique plugin identifier
versionstringrequiredSemantic version
Hooks
serverStart{ main?, dev_main? }Server initialization
router{ before_request?, request?, after_request?, html_rewrite? }Request processing
build{ buildConfig?, beforeBuild?, afterBuild? }Build customization
Configuration
prioritynumberExecution order (lower = first)
Default: undefined
requirement{ frameMasterVersion?, bunVersion?, frameMasterPlugins? }Dependencies
💡
Full Reference
See the Hooks Reference for complete documentation on all available hooks.
