Composer is a set of stackable libraries for building complex single-page apps.
  • DOM patching

    Only renders the parts of your templates that have changed, batching updates for efficiency.
  • List tracking

    Mirrors a set of elements in the DOM from models in a collection, preserving sort order.
  • Eventing

    Loosely tie your app's systems together using the independent eventing module.
  • Promise integration

    Include your favorite promise library, call one function, and all async functions return promises.
  • Router

    Easily segment portions of your app by URL. Automatically route links in your app.
  • Filtered collections

    Create collections that attach to other collections and apply filters and sorting.
  • Class system

    Use the tiny base class system for making your own extendable modules.
  • Controller event merging

    Controllers inherit DOM event tracking from the controller they extend.
  • Documentation

    Easy to understand docs with lots of runnable examples make learning Composer easy.

Composer is framework-agnostic: it does not require jQuery, Mootools, or any other framework to function (however, to support older versions of IE, Mootools is reccommended). As of version 1.1.0, Composer’s only external dependency is History.js (and as of 1.2.0, Composer uses morhpdom for its optional xdom feature).

For the curious, read about the differences between Composer and Backbone.

Also see apps using Composer in production »


Composer’s router requires History.js to function properly. Composer’s xdom system requires some form of DOM diffing/patching library (morphdom is the supported default, although you can provide your own).

Browser support

Composer is tested on recent versions of Firefox, Chrome, Safari, and IE >= 6. Note that IE 6-9 support is dependent on Mootools being present (and will not necessarily be supported in the future). For now, all tests pass in all major browsers.

Run the test suite now!