Firefox Source Tree Documentation — Firefox Source Docs documentation
Firefox Source Tree Documentation
Report an issue
View page source
Firefox Source Tree Documentation
Overview
A Glossary of Common Terms
A Quick Guide to Mozilla Applications
Gecko
Firefox for Desktop
Firefox for Android
Firefox for iOS
Getting Started
Getting Set Up To Work On The Firefox Codebase
Working On Firefox
Working on Firefox
Firefox Contributors’ Quick Reference
Working with stack of patches Quick Reference
Pocket Guide: Shipping Firefox
Editor / IDE integration
Getting reviews
Levelling up
How to submit a patch
Data Collection
Data Review
Introduction to Jujutsu
Searchfox
Firefox AI Coding Policy
Code Review FAQ
Reviewer Checklist
Capturing a minidump
Debugging A Hang On macOS
Debugging A Minidump
Debugging Firefox with GDB
Debugging Firefox with LLDB
Debugging Firefox with Pernosco
Debugging Firefox with rr
Debugging Firefox with Valgrind
Debugging On macOS
Debugging On Windows
Debugging WebRTC Calls
Symbolicating TreeHerder stacks locally
How to get a process dump with Windows Task Manager
How to get a stacktrace for a bug report
How to get a stacktrace with WinDbg
Understanding Crash Reports
Configure Development Certificate
Signing Local macOS Builds
Firefox Source Code Directory Structure
Understanding Artifact Builds
Firefox for Mobile Devices
Supported Build Hosts and Targets
Working with ESR115
Engineering Show and Tell
Filing good bugs
Bug Handling
Guides
Policies
Processes
Related documentation
Firefox User Guide
Firefox DevTools User Docs
The Core Tools
More Tools
Connecting the Developer Tools
Debugging the browser
Extending DevTools
Migrating from Firebug
Contribute
Source Code Documentation
Governance
Overview
Modules
Firefox Front-end
How-To’s
Address Bar
Browser Usage Telemetry
Frontend Code Review Best Practices
Command Line Parameters
Browser Startup
Category manager indirection (callModulesFromCategory)
CustomizableUI Component
Enterprise Policies
Web Apps in Firefox
Form Autofill
Firefox Home (New Tab)
Firefox Welcome Experience (about:welcome)
Installer
Installation Attribution
Default Browser Agent
Migration
PageDataService
Places
Messaging System
Search UI
tabbrowser
Touch Bar
UITour
Firefox Branding
Storybook for Firefox
Reusable UI widgets
Other types of UI Widgets
Lit
XUL and HTML
Figma Code Connect
Design Tokens
Backup Component
Sidebar
moz-cached-ohttp Protocol
DOM
DOM IPC
DOM Navigation
Push
Script Security
Xray Vision
DOM Workers & Storage
Web IDL bindings
IOUtils Migration Guide
Federated Credential Management
Implementing specifications using WHATWG Streams API
Use Counters
Logging native keyboard and IME event handler behavior
Editor
Editor module structure
Editor module specific rules
IME handling guide
Style system (CSS) & Layout
Style System Overview
Layout Overview
Dynamic change handling along the rendering pipeline
Layout Engine Visual Tests (reftest)
Layout Code Reviewer Checklist
Layout Debugger
AccessibleCaret
Graphics
Rendering Overview
Layers History
Asynchronous Panning and Zooming
Silk Overview
Moz2D
Processes, Threads and IPC
IPDL: Inter-Thread and Inter-Process Message Passing
Gecko Processes
Shutdown handling of processes
Utility Process
Firefox DevTools Contributor Docs
Automated tests
Files and directories
Tool Architectures
Frontend
Backend
Performance
Preferences
Recurring tasks
Toolkit
Profiles Service
JavaScript Logging
Add-on Manager
Autocomplete
Background Task Mode
Crash Manager
Crash Reporter
Internal URLs
Search Service
IP Protection
Shield Recipe Client
Nimbus
Messaging System Schemas
Picture-in-Picture
Prompts
Subprocess Module
Telemetry
Firefox on Glean (FOG)
Toolkit Modules
Toolkit Widgets
Fingerprinting Resistance
URL Classifier
WebExtensions API Development
Managing the built-in en-US dictionary
Application Update
Anti-Tracking
Translations
Session Store
SpiderMonkey
Building and testing SpiderMonkey
Running Automated JavaScript Tests
Hacking Tips
SavedFrame
JavaScript Language Feature Checklist
So You Want to Add a Bytecode Op
Adding Use Counter Telemetry to the JS Engine
Components of SpiderMonkey
JS Loader
System Modules
JS Loader APIs
GeckoView
Documentation
More information
Fenix
Acronym Dictionary
Addressing a performance regression
Architecture Decisions
Architecture Overview
Crash Monitoring
Creating a release branch
Data practises
Development Test Plan
Fennec Legacy: Migration
Firebase Cloud Messaging for WebPush
Firefox for Android Team Processes
Implementing Telemetry
Implementing a Nimbus Experiment
List of Fenix Threads
Logging Crash Information
Metric Feature Tags
Debug settings menu instructions
Telemetry - Implementation, Reviews, Renewals
Creating Glean Annotations
Data review
Test Telemetry Pings
Working with Strings
Adjust
Certificates
Crash Reporting
Experiments
Manual Testing
Metrics Definitions
Release Checklist
Startup Performance
Substituting Local GeckoView
Sync Integration Tests
Telemetry
UI Tests
Focus for Android
Architecture Decisions
Battery Debugging
Content blocking
Crash Reporting with Sentry
Development Custom GeckoView
Feature & Issue workflow
Running GeckoView in a debug environment
Homescreen Tips
Multisession architecture
Recommended pre-push hook
Release Process
Release tracks
Removing strings
Sprint Process
Telemetry
UI Test
WebIDL
Overview
WebIDL source file flavors
Producing C++ code
Requirements
libpref
High-level design
Low-level details
Networking
How-to’s
Tutorials
Deep Dives
References
Remote Protocols
Common documentation
Protocols
Architecture
Bugs
Communication
Services
Remote Settings
Sync
Permissions
Permission Manager
Browser-Scoped Permissions
Remote Permissions
Unused Permission Expiry
File Handling
URI Loader Service
External Helper App Service
Firefox on macOS
Using macOS APIs
A primer on macOS SDKs
Firefox on Windows
Windows DLL Blocklisting
Windows Pointing Device Support in Firefox
Windows Limited Access Features
Firefox AI Runtime
Architecture
APIs
Notifications
Models management
How to perftest a model
WebExtensions AI API
Guidelines for New Contributors
Architecture
Document Accessibility Lifecycle
GeckoView Thread Topography
Colors and High Contrast Mode
HCM Settings
High Contrast Mode (HCM) Media Queries
Media Playback
MediaFormatReader
Code quality
Static Analysis
Linting
Coding style
TypeScript
Writing Rust Code
Basics
Rust/C++ interop
Rust Update Policy
XPCOM components in Rust
Rust Components
Topic Guides
API References
Developing Rust Components
uniffi-bindgen-gecko-js developers guide
Gecko Profiler
Profiler Code Overview
Buffers and Memory Management
Instrumenting JavaScript
Instrumenting Rust
Instrumenting Android
Markers
Profiling Memory
Profiling Sandbox violations (Linux)
Performance
General Performance references
Memory profiling and leak detection tools
Profiling and performance tools
Power Profiling
Performance Metrics
Database bindings (SQLite, KV, …)
XPCOM
Consuming XPCOM functionality
Tooling around XPCOM
Writing new XPCOM interfaces/classes
NSPR
Documentation
Getting NSPR
Community
Related Topics
Network Security Services (NSS)
Web Security Checks in Gecko
Key Concepts and Terminology
Loading Lifecycle in Firefox
Security Checks During Loading
The Firefox Build System
Mach
Pushing to Try
Build System
Firefox CI and Taskgraph
Managing Documentation
Vendoring Third Party Components
Testing & Test Infrastructure
Automated Testing
Understanding Treeherder Results
Sheriffed intermittent failures
Turning on Firefox tests for a new configuration
Avoiding intermittent tests
Debugging Intermittent Test Failures
Testing Policy
Configuration Changes
Browser chrome mochitests
Chrome Tests
Marionette
geckodriver
Test Verification
WebRender Tests
Mochitest
XPCShell tests
TPS
web-platform-tests
GTest
Fuzzing
Sanitizer
Performance Testing
Code coverage
Testing & Debugging Rust Code
AI Agent Tools
AI Agent Tools for Firefox Development
Releases & Updates
Mozilla Update Infrastructure
Watershed Updates
Desupport Updates
Update Verify
Localization & Internationalization
Internationalization
Locale management
UI Internationalization
ICU
ICU4X
Localization
Localization Overview
Fluent
Migrating Strings From Legacy or Fluent Files
Single localization source for multiple builds
L10N Glossary
Firefox and Python
mozbase
Using third-party Python packages
Metrics Collected in Firefox
Metrics
Indices and tables
Index
Module Index
US