The following is a list of code-level reference documentation you'll likely need in developing a Firefox OS app.
Note: The technologies detailed below should work across modern browsers; notes are included below to indicate where this differs.
Note: For a granular, detailed account of what new features have been added in what Firefox OS releases, consult our Firefox OS release notes.
Foundations of a Firefox OS app
A Firefox OS app is simply an Open Web App, but with extra features available such as being installable, and access to device APIs to control hardware and device features such as contacts, alarms, etc.
- App manifest
- The manifest describes your app. This guide explains how the manifest works and how to create one.
- App Installation and Management APIs
- The programmatic interface you use for installing apps and managing them.
- Working offline
- Strategies and technologies you can use to ensure that your app works when there's no network connection available.
- Types of apps
- This article explains the types of apps: hosted, privileged, and certified. You need privileged or certified apps for access to sensitive device APIs. Privileged and certified apps are packaged apps.
- App permissions
- Access to device APIs is key to creating many useful apps. Here is what's available and how to access them.
Layout and structure
- The building blocks of responsive design
- Learn the basics of responsive design, an essential topic for modern app layout.
- Media queries
- Mobile first
- Often when creating responsive application layouts, it makes sense to create the mobile layout as the default, and build wider layouts on top.
- Flexible boxes
- CSS flexible boxes let you configure your app's user interface to automatically adjust the positioning and sizes of elements based on the size and orientation of the display.
Drawing and animation
- CSS transforms
- CSS transitions
- CSS transitions let you animate changes to your CSS. Once a transition effect is configured, changes to your CSS occur over a period of time instead of instantaneously. This makes it possible to easily and efficiently create a wide variety of visual effects in your apps.
- CSS animations
- HTML canvas
- The HTML
<canvas>element provides a 2D graphics workspace for you to draw in. This has many uses, including 2D games.
- WebGL is a Web-friendly version of OpenGL ES that lets your app offer hardware-accelerated 3D graphics.
- Scalable Vector Graphics (SVG) is a technology that lets you draw graphics using vectors instead of bitmapped images. This is great for scalability, presenting diagrams and charts, and for high-quality, scalable user interfaces.
Firefox OS device APIs
These are emerging Web platform standards and device APIs crucial to Firefox OS app development and to Open Web Apps.
The following table gives the app manifest permissions for hosted and privileged apps. For more information see App permissions.
|Manifest permission||API name||Description||Minimum app type required||
||Default granted||Platform/version supported|
||Alarm||Schedule a notification, or schedule an application to be started.||hosted||none||
||FxOS 1.2 for audio
Desktop Firefox 20+
||AudioChannels||Alarm clock, calendar alarms.||privileged||none||
||AudioChannels||UI sounds, Web content, music, radio.||hosted||none||
||AudioChannels||New email, incoming SMS.||privileged||none||
||Browser||Enables the app to implement a browser in an
Take photos, shoot video, record audio, and control the camera.
privileged in Firefox OS 2.0+ internal/certified up to Firefox OS 1.4
||FxOS 1.0.1-1.4 certified
FxOS 2.0+ privileged
||Contacts||Add, read, or modify contacts from the address book on the device and read contacts from the SIM.||privileged||
Firefox Android 18
||mozNotification for Gecko <22, Notification for Gecko 22+||Display a notification on the user's desktop. Note that this has changed, so for Gecko <22 (Firefox OS <1.2) you need to use
||FxOS 1.0.1, Android 4.0, Desktop 4.0 for prefixed version
FxOS 1.2, Android 22, Desktop 22 for non-prefixed version
||Device Storage||Add, read, or modify music files stored on the device.||privileged||
||Device Storage||Add, read, or modify picture files stored on the device.||privileged||
||Device Storage||Add, read, or modify files stored on the device's SD card.||privileged||
||Device Storage||Add, read, or modify video files stored on the device.||privileged||
||FM Radio||Control the FM radio.||hosted||none||
||Geolocation||Obtain the current location of the user.||hosted||none||
||FxOS 1.0.1, Desktop Firefox 3.5, Android 4.0|
||Keyboard||Allows the app to act as a virtual keyboard by listening to focus change events in other apps.||privileged||none||
||Mobile Network||Obtain mobile network information (MCC, MNC, etc.).||privileged||none||
||Firefox Accounts||Allows the use of Firefox Accounts when using the navigator.mozId API.||privileged||none||
||Simple Push||Enable an app to wake up to receive notification.||hosted||none||
||Storage||Utilize storage (appcache, pinned apps, IndexedDB) without size limitations. See appcache, IndexedDB.||hosted||none||
Desktop (early versions)
||SystemXHR||Allows anonymous (no cookies) cross-origin XHR without the target site having CORS enabled. Similar to the TCP Socket API but restricted to XHR, not just raw sockets, so it is slightly less risky. See XMLHttpRequest.||privileged||none||
||TCP Socket||Create TCP sockets and communicate over them.||privileged||none||
Desktop (early versions)
||GetUserMedia||Obtain MediaStream from video input devices, e.g. camera. This is needed to allow video capture in Firefox OS 1.4+.||hosted||none||
Note: To declare an app as privileged, you need to put
"type" : "privileged" into your app manifest. You don't need to include the
type field in your manifest for web apps, as
web is the default value.
General Web APIs
Elements, events, network requests, storage and other standard Web APIs
- Network requests - send and receive data with XMLHttpRequest
XMLHttpRequestis the DOM API used to send and receive information using HTTP, including for downloading files.
- DOM events
- The event reference provides a complete list of all the events that can be sent and received to interact with DOM objects.
- Touch events
- This documentation covers touch events in particular, which of course you are likely to encounter when developing apps for touchscreen devices.
- Online & offline events
- Allows your app to dynamically respond to changes in network connection availability.
- Travers and manipulate the historical view state of your app with various commands - helpful in rewinding or advancing the user's current view
- Embedding and manipulation of audio content with the HTML5 Audio Tag
- Embedding and manipulation of video content with the HTML5 Video Tag
- Enables your app to request the user's current location and listen for location changes.
- Screen orientation
- Listen for high-level screen orentation changes between various portrait and landscape positions.
- Device orientation
- Allows your app to detect granular device orientation changes from on-device sensors.
- A database access layer for Web apps that provides a scriptable interface for storing and retrieving large sets of data on the user's device.
- The Storage API family provides various way to persistently store limited amounts of simple data on a user's device.
- Web workers
Firefox Marketplace services
These documents and guides will help you learn how to publish your app and manage it on the Firefox Marketplace.