Epos is not a boilerplate, framework, or bundler. It is a web extension runtime that runs your code directly in the browser during development.
Just describe which files to load and where.
{
"name": "My Extension",
"targets": [
{
"matches": "*://*.example.com/*",
"load": ["main.css", "main.js"]
},
{
"matches": "<popup>",
"load": ["popup.css", "popup.js"]
},
{
"matches": "<background>",
"load": ["background.js"]
}
]
}The simplest API for cross-context communication. Smart automatic routing. Works in every context.
// In background:
epos.bus.on('math:sum', (a, b) => a + b)
// On web page:
const result = await epos.bus.send('math:sum', 1, 2)Modify your state in one context, see the changes in all other contexts instantly.
const state = await epos.state.connect()
// Modify like a regular object.
// All changes are synced real-time!
state.items = []
state.items.push('Hello world!')Store and access your files and data in every context. Powered by IndexedDB.
// Store in background:
await epos.storage.set('user-pic', imageFile)
// Access later in popup:
const pic = await epos.storage.get('user-pic')Every feature works seamlessly across all extension contexts. All required setup is handled automatically.
// The same API for every context: // background, popup, side panel, web pages, iframes import epos from 'epos'
Install Epos and start building your next extension.