jimhigson/oboe.js

A streaming approach to JSON. Oboe.js speeds up web applications by providing parsed objects before the response completes.

JavaScript

4,815

362 commits

updated Nov 17, 2025

See the code

README

Archive note (2024)

This project is now archived. As of 2024, no code changes have been made in 5 years, and I (Jim) have not had the time to port it to new technology, or maintain it in a way that it deserves.

For existing projects using this code, it should continue to work, but I would recommend looking for other solutions.

I (Jim) still think there is a clear gap in the market for a streaming-first JSON parser that doesn't wait for responses to finish before it starts using them. For anyone who is interested in making that project, reach out and I'd be happy to discuss. Today, with modern javascript and typescript (ie async iterators), a much nicer modern API could be made than the one I created in 2013.

Many thanks to JuanCaicedo and Aigeec in particular for continuing to contribute fixes and modernise this project through to ~2020.

The Oboe.js website has been ported to a static site Github Pages, and the plan is to keep it online with a deprecation notice.

Interested what I've been working on since? Check out my github and maybe 🕹️play my retro-game

The original README follows below.


Oboe.js is an open source Javascript library for loading JSON using streaming, combining the convenience of DOM with the speed and fluidity of SAX.

It can parse any JSON as a stream, is small enough to be a micro-library, doesn't have dependencies, and doesn't care which other libraries you need it to speak to.

We can load trees larger than the available memory. Or we can instantiate classical OOP models from JSON, or completely transform your JSON while it is being read.

Oboe makes it really easy to start using json from a response before the ajax request completes. Or even if it never completes.

Where next?

jimhigson/oboe.js

A streaming approach to JSON. Oboe.js speeds up web applications by providing parsed objects before the response completes.

JavaScript

4,815

362 commits

updated Nov 17, 2025

See the code

README

Archive note (2024)

This project is now archived. As of 2024, no code changes have been made in 5 years, and I (Jim) have not had the time to port it to new technology, or maintain it in a way that it deserves.

For existing projects using this code, it should continue to work, but I would recommend looking for other solutions.

I (Jim) still think there is a clear gap in the market for a streaming-first JSON parser that doesn't wait for responses to finish before it starts using them. For anyone who is interested in making that project, reach out and I'd be happy to discuss. Today, with modern javascript and typescript (ie async iterators), a much nicer modern API could be made than the one I created in 2013.

Many thanks to JuanCaicedo and Aigeec in particular for continuing to contribute fixes and modernise this project through to ~2020.

The Oboe.js website has been ported to a static site Github Pages, and the plan is to keep it online with a deprecation notice.

Interested what I've been working on since? Check out my github and maybe 🕹️play my retro-game

The original README follows below.


Oboe.js is an open source Javascript library for loading JSON using streaming, combining the convenience of DOM with the speed and fluidity of SAX.

It can parse any JSON as a stream, is small enough to be a micro-library, doesn't have dependencies, and doesn't care which other libraries you need it to speak to.

We can load trees larger than the available memory. Or we can instantiate classical OOP models from JSON, or completely transform your JSON while it is being read.

Oboe makes it really easy to start using json from a response before the ajax request completes. Or even if it never completes.

Where next?

Project health

Overall

3.0/10

Maintained

0/10

Code review

7/10
OpenSSF Scorecard

npm

Latest release

2.1.7 · Sep 25, 2024

Releases this year

0

Significant stargazers

(top 24 of 46)

Guy Bedford

1,970 followers · starred Oct 2013

Max

6,688 followers · starred Oct 2013

Tobias Koppers

9,591 followers · starred Oct 2013

David Sherret

2,130 followers · starred Oct 2013