Calvin Metcalf

By: Calvin Metcalf
Published: 12 August 2014

PouchDB 3.0.0 is finally released! It's faster, it's more stable, it's easier to debug, it doesn't freeze the DOM and it spontaneously generates kittens.

Please file issues or tell us what you think. We would also like to give a huge thanks to our new and existing contributors.

This release includes a migration. Your existing database will be updated automatically, but you cannot downgrade to a previous version of PouchDB once you've upgraded.

Breaking Changes:

  • The browser build pouchdb-nightly.js has been renamed to pouchdb.js. It was never really a nightly anyway. (#2146)
  • opts.server has been deprecated from the replicate() and sync() APIs. You can still replicate from one HTTP server to another, but the data will flow through PouchDB rather than being server-initiated. (#2313)
  • You can no longer rely on errors to have an identifying name. Instead, rely on CouchDB-centric errors to have a status (i.e. err.status instead of There are some that still have an identifying name, but these could be removed at any time. The upside of this is that stack traces should be more consistently helpful. (#2545)

Major Changes:

  • Constructor option opts.size to work around Safari/iOS storage quotas (#2347)
  • PouchDB.defaults() for default constructor options, which permits many new features in pouchdb-server. (#2054)
  • _local documents are now unversioned in the underlying backend for better map/reduce performance and to better align the update_seq with CouchDB (#2023). Also fixes an issue with replication and changes(). (#2342)
  • Performance improvements. (#2391, #2392, #2393)
  • MD5 hashes are now calculated incrementally in a way that won't freeze the DOM. (#445, #2497)
  • More efficient replication. (#2466, #2475)


  • Fix for replication of multiple attachments. (#2358)
  • Fix for bulkDocs() in Cloudant. (#2365)
  • Fix read-only replication for CORS/40*. (#2484)
  • Fix for reserved words in docs. (#2477)
  • Fixes for change events in .sync(). (#2555)
  • Fixes for race condition in bulk docs with new_edits=false in LevelDB. (#2574)
  • Fixes for opts.stale in query(). (pouchdb/mapreduce#196, pouchdb/mapreduce#198)
Complete list of changes