# plasmohq/plasmo

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/plasmohq-plasmo).**

13,069 stars · 456 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/PlasmoHQ/plasmo
- Homepage: https://www.plasmo.com
- awesome-repositories: https://awesome-repositories.com/repository/plasmohq-plasmo.md

## Topics

`browser-extension` `bundler` `chrome-extension` `edge-addon` `firefox-addon` `parcel` `reactjs` `sdk` `typescript`

## Description

Plasmo is a browser extension framework and build tool designed for developing cross-browser extensions from a single codebase. It functions as a development environment that automates manifest generation and bundles source code into compatible packages for multiple web browser engines.

The project includes a developer toolset featuring hot module replacement for real-time code updates and an automated publisher to deliver completed builds to various browser web stores.

Its capability surface covers extension UI development through the injection of components into web pages and a communication layer for exchanging data between background workers, popups, and content scripts. It also provides utilities for managing extension state and integrating remote code into the final bundle.

## Tags

### Web Development

- [Cross-Browser Extension Frameworks](https://awesome-repositories.com/f/web-development/browser-integration-utilities/browser-extension-development/browser-extensions/cross-browser-extension-frameworks.md) — Functions as a framework for bundling source code into cross-browser extensions using a unified build system. ([source](https://github.com/plasmohq/plasmo#readme))
- [Browser Extension Development](https://awesome-repositories.com/f/web-development/browser-integration-utilities/browser-extension-development.md) — Provides a comprehensive toolset for building, packaging, and managing the lifecycle of browser extensions.
- [UI Element Injection](https://awesome-repositories.com/f/web-development/client-side-components/script-injection-mechanisms/dom-script-injection/ui-element-injection.md) — Renders custom interface elements directly into the document object model of target websites. ([source](https://github.com/plasmohq/plasmo#readme))
- [Automated Store Publishers](https://awesome-repositories.com/f/web-development/browser-integration-utilities/browser-extension-development/browser-extensions/automated-store-publishers.md) — Provides a delivery pipeline for bundling and uploading completed extension builds to browser web stores.
- [Extension Publishing Pipelines](https://awesome-repositories.com/f/web-development/extension-publishing-pipelines.md) — Automates the process of publishing updated extension builds to browser web stores through a delivery pipeline.

### Development Tools & Productivity

- [Hot-Reloading Systems](https://awesome-repositories.com/f/development-tools-productivity/hot-reloading-systems.md) — Provides real-time code updates using hot module replacement to eliminate manual page refreshes. ([source](https://github.com/plasmohq/plasmo#readme))
- [Hot Module Replacement](https://awesome-repositories.com/f/development-tools-productivity/platforms-runtimes-language-services/hot-module-replacement.md) — Updates running extension code in the browser in real-time without requiring a full reload.
- [Asset Bundling](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-performance-optimization/build-optimization-tools/bundle-optimizers/asset-bundling.md) — Provides a compile-time process to bundle remote scripts and local dependencies into production assets.
- [Web Store Publishing Automation](https://awesome-repositories.com/f/development-tools-productivity/deployment-automation/web-store-publishing-automation.md) — Automates the publishing of completed extension builds to various browser web stores. ([source](https://github.com/plasmohq/plasmo#readme))
- [Browser Extension Developer Tools](https://awesome-repositories.com/f/development-tools-productivity/extension-development-utilities/browser-extension-developer-tools.md) — Offers a developer environment with hot module replacement for real-time updates to extension components and scripts.

### DevOps & Infrastructure

- [Browser Compatibility Targets](https://awesome-repositories.com/f/devops-infrastructure/cicd-pipeline-automation/core-build-engines/configuration-lifecycle-management/production-build-configurations/browser-compatibility-targets.md) — Generates compatible manifests and builds for various browser engines and versions from one codebase. ([source](https://github.com/plasmohq/plasmo#readme))
- [Extension Manifest Generators](https://awesome-repositories.com/f/devops-infrastructure/service-mesh-control-planes/package-manifest-generators/extension-manifest-generators.md) — Automatically generates browser-specific configuration files and manifests from a single source definition.

### Programming Languages & Runtimes

- [Multi-Target Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers/multi-target-compilers.md) — Produces compatible builds and assets for multiple different browser engines from a single codebase.

### Software Engineering & Architecture

- [Message Bus Systems](https://awesome-repositories.com/f/software-engineering-architecture/message-bus-systems.md) — Implements a structured communication layer for exchanging data between background workers, popups, and content scripts.

### User Interface & Experience

- [Component Communication](https://awesome-repositories.com/f/user-interface-experience/component-utilities/ui-frameworks/component-apis/communication-data-flow/component-communication.md) — Facilitates data exchange and action triggering between various extension components. ([source](https://github.com/plasmohq/plasmo#readme))
- [DOM Mounting Point Configurations](https://awesome-repositories.com/f/user-interface-experience/custom-configuration-extensions/dom-mounting-point-configurations.md) — Enables the mounting of framework-based UI components directly into the DOM of third-party web pages.

### Part of an Awesome List

- [Build and Bundling](https://awesome-repositories.com/f/awesome-lists/devtools/build-and-bundling.md) — Integrates external scripts and analytics providers into the final bundle to extend functionality. ([source](https://github.com/plasmohq/plasmo#readme))

### Data & Databases

- [State Management Stores](https://awesome-repositories.com/f/data-databases/state-management-stores.md) — Provides utilities for storing and retrieving user settings and application data via persistent storage. ([source](https://github.com/plasmohq/plasmo#readme))
