Sweet Promise-based XHR/JSONP library for browsers.


Iris is a library for handling HTTP (through XMLHttpRequest) and JSONP requests in a more high-level way. It uses promises to allow for more declarative and flexible handling of the responses from either side.

// HTTP example 
var http = require('iris').http
    .timeout(10) // in seconds 
       dialog.error('The operation timed out.')
    .failed(function() {
       dialog.error('Ooops, something went wrong.')
// JSONP example 
var jsonp = require('iris').jsonp
     .ok(function(data) {
        $('#post-count').text(data.posts.length + ' posts.')
     .timeouted(function() {
        dialog.error('The operation timed out.')
     .failed(function() {
        dialog.error('Ooops, something went wrong.')

Iris depends on the following libraries:

Additionally, there's a dependency on the set of safely shim-able ECMAScript 5 features, which can be provided by a library like es5-shim.

  1. you'll need node.js and npm. As soon as you got your hands on those beautiful thingies, you can just run the following in your project's directory.

    $ npm install iris
  1. Then require iris in your script:

    var iris = require('iris')
  2. Then compile it (use --watch for added development-phase awesomeness):

    $ browserify your-script.js -o bundle.js
  3. Finally, just put it all in your page:

      {{ ... }}
        {{ lots of things may go here, too }}
        <script src="/path/to/bundle.js"></script> 

Iris is nicely hosted (and developed) on Github. You can download the lastest snapshot or clone the entire repository:

$ git clone git://
  • Use the Github tracker to report bugs or request features. Like a boss!

  • Fork, do your changes and send me a pull request if you want to~

  • For general support, you can send me an e-mail on

Iris is licensed under the delicious and permissive MIT licence. You can happily copy, share, modify, sell or whatever — refer to the actual licence text for less information:

$ less LICENCE.txt