This page lists more theoretical in-depth articles about the SDK.

SDK Infrastructure

CommonJS, packages, and the SDK

CommonJS includes a specification for JavaScript modules: reusable pieces of JavaScript code. This guide provides an introduction to the CommonJS module specification and explains its relationship to the SDK.

Program ID

The Program ID is a unique identifier for your add-on. This guide explains how it's created, what it's used for and how to define your own.

Module search

The algorithm used to find and load modules imported using the require() statement.

Firefox compatibility

Working out which Firefox releases a given SDK release is compatible with, and dealing with compatibility problems.

SDK Idioms

Working With Events

Write event-driven code using the the SDK's event emitting framework.

Two Types of Scripts

This article explains the differences between the APIs available to your main add-on code and those available to content scripts.

Content Scripts

Introducing content scripts

An overview of content scripts.

Loading content scripts

Load content scripts into web pages, specified either as strings or in separate files, and how to control the point at which they are executed.

Content script access

Detailed information on the objects available to content scripts, the differences between content scripts and normal page scripts, and how to communicate between content scripts and page scripts.

Using "port"

Communicating between a content script and the rest of your add-on using the port object.

Using "postMessage()"

Communicating between a content script and the rest of your add-on using the postMessage() API, and a comparison between this technique and the port object.

Reddit example

A simple add-on which uses content scripts.

XUL Migration

XUL Migration Guide

Techniques to help port a XUL add-on to the SDK.

XUL versus the SDK

A comparison of the strengths and weaknesses of the SDK, compared to traditional XUL-based add-ons.

Porting Example

A walkthrough of porting a relatively simple XUL-based add-on to the SDK.