Once you know the basics, these guides will help you with intermediate to advanced extension development topics.

Best Practices

Respecting the JavaScript Global Namespace

In this blog post, Mark Ziesemer explains how to prevevent global namespace pollution by wrapping your extension's variables.

Editor's Pick: Security Best Practices in Extensions

Every extension developer should know and follow the security best practices outlined in this document to keep users safe.

Localizing an Extension

This article explains how to localize an extension, including XUL and JavaScript strings.

Responsible First-run Usage

This blog post describes what a bad first-run experience means for users, and gives tips for improving that experience.

Security

Evaluating Code with Restricted Privileges

This article describes the use of Components.utils.evalInSandbox, which is a way to evaluate code "such as remote code" without chrome privileges.

Creating Sandboxed HTTP Connections

This article explains how to create sandboxed HTTP connections that don't affect the user's cookies.

Displaying Web Content in an Extension

Learn how to display web content in an extension without security issues.

Five Wrong Reasons to Use eval in an Extension

In this blog post, Wladimir Palant gives five wrong ways to evaluate code in an extension.

Localization

Localizing Extension Descriptions

Learn how to localize the names and descriptions in extension install manifests.

Localization and Plurals

This article explains how to properly localize strings with plurals.

BabelZilla overview

Learn how the BabelZilla localization community works.

Advanced Topics

Video: Stupid/Awesome Extension Development Hacks

In this video, Jono Xia explains how to go further in extension development using XPCOM, overlays, XHRs, DOM manipulation, etc. in order to make Firefox do things you might have never thought possible.

JavaScript Code Modules

JavaScript code modules let multiple privileged JavaScript scopes share code. For example, a module could be used by Firefox itself as well as by extensions, in order to avoid code duplication.

Creating Custom Firefox Extensions with the Mozilla Build System

This article describes how to set up the development environment for a large, complex Firefox extension with a need for high-performance, use of third-party libraries in C/C++, or interfaces not exposed via XPCOM.

Multiple Item Packaging

This article explains how to create an extension package with multiple items "extensions".

Extension Documentation Index

If you can't find what you're looking for in the above articles, try the Mozilla Developer Center's Extensions landing page.