Это зависит от того, что делает ваше расширение. Теоретически, если ваше расширение довольно простое (например, оно не требует каких-либо специальных API, таких как http, или доступа к файловой системе, и оно не изменяет компоновку браузера), то теоретически вы можете повторно использовать один и тот же код между браузерами (но, поскольку каждый браузер имеет собственный формат расширения, вы должны создать дескрипторы / код браузера для каждого расширения). Написание расширений на языке, отличном от javascript, возможно с использованием некоторого Name нашего языка для JS-компилятора. Например, SpeedTracer
для Chrome частично написан на GWT (компилятор Java to JavaScript).
Короче говоря, вы можете повторно использовать один и тот же код между расширениями для разных браузеров и использовать языки, отличные от javascript, для создания расширений браузера.