eslint-plugin-mv3
An ESLint plugin for catching unsafe Manifest V3 executeScript closures at lint time.
2026·Open source tool·live
Manifest V3 has a small trap that is easy to miss: a function passed to scripting.executeScript is serialized before it runs. Values from the outer scope do not come with it.
I wrote this plugin to catch that boundary before runtime. It checks that injected functions stay self-contained, that parameters are passed through args, and that the executeScript shape remains statically analyzable.
It was a small tool built around a sharp edge. The goal was not to make extension work feel clever, but to make one fragile boundary easier to trust.
what changed
- A linter can protect architecture, not just style.
- The best checks are often the ones that make hidden boundaries visible.
- eslint
- mv3
- extension