Skip to content

Releases: apache/pouchdb

6.4.2

24 Jan 12:32

Choose a tag to compare

In this release PouchDB now supports IndexedDB by default in Safari and will drop support for WebSQL in future versions.

A brief history of WebSQL

Just over 5 years ago PouchDB got its first support for WebSQL, originally to support Opera WebSQL was able to pick up for the lack of support for IndexedDB in Safari and gave PouchDB the ability to support a wide variety of browsers. Opera gained IndexedDB support from its switch to Blink / Chromium and with WebSQL failing to become a web standard Safari started supporting IndexedDB from its 7.1 release. Initially there were too many bugs in Safari's implementation for PouchDB to use it however after a lot of work from the WebKit devs and a few releases IndexedDB support became stable in Safari and as of this release is now the default storage engine for PouchDB in Safari.

Switching to IndexedDB vastly reduces the amount of work we need to do to keep PouchDB stable, any new features and improvements relating to storage up until now has meant duplicating the entire code and effort for WebSQL, we will also see a nice reduction in the bundle size.

Migrating current users

If you are using PouchDB and expect to want to use new releases then you will need to
migrate your current users, this release of PouchDB supports both WebSQL and IndexedDB
in Safari so one solution that may work depending on your circumstances is to
replicate between them like so:

function openDB(name, opts) {
  return new Promise(function(resolve, reject) {
    var localdb = new PouchDB(name, opts);
    localdb.info().then(function(info) {

      if (info.adapter !== 'websql') {
        return resolve(localdb);
      }

      var newopts = opts || {};
      newopts.adapter = 'idb';

      var newdb = new PouchDB(name, opts);
      var replicate = localdb.replicate.to(newdb);
      replicate.then(function() {
        resolve(newdb);
      }).catch(reject);
    }).catch(reject);
  });
}

More Deprecations

With PouchDB we aim to keep breaking changes to a minimum which means when we do have a
breaking change release like the upcoming 7.0 there will usually be a few other changes.
Currently it looks likely that we will remove our Promise Polyfill and switch to the fetch API for HTTP requests. These arent all certain and you can follow along or join in with the 7.0 release discussion here.

Other Changes

  • #7019 - Dont crash on empty HTTP requests
  • #7008 - Add Glitch bug helper
  • #6954 - Fix hang when storage quota is exceeded
  • #6958 - Fix PouchDB find with zero values
  • #6971 - Fix allDocs keys and limit < keys.length

Get in touch

As always, we welcome feedback from the community and would love to hear what you think of this release as well as PouchDB's future direction. Please don't hesitate to file issues or get in touch. And of course, a big thanks to all of our new and existing contributors!

6.4.1

18 Dec 11:17

Choose a tag to compare

build 6.4.1

6.4.0

17 Dec 09:42

Choose a tag to compare

I'm happy to announce the release of PouchDB 6.4.0, bringing in a number of important features and fixes. For a full changelog from 6.3.0 to 6.4.0 please see the releases page. Some of the highlights:

Add update_seq option to allDocs() and query()

#6230 - Dale Harders added support for passing update_seq: true to either allDocs() or query() or will return the current databases update_seq.

Add pending pending property

#5710 - Dale also added support for passing through the pending property newly implemented in CouchDB that reports the number of pending documents to replicate.

Use a single transaction for allDocs with keys requests

#6854 - @nename0 implemented an optimisation to use a single transaction in indexedDB and WebSQL for allDocs requests with keys. This seen a huge 8X speedup in Chrome and 2X in Firefox.

Add support to store cookies on Node.js

#6814 - @ptitjes fixed HTTP requests in Node.JS to ensure they use a cookie jar.

Full changelog

Bug fixes and performance improvements

  • #6443 - Support seq_interval for changes and use during replication
  • #6890 - Preventing SecurityError on Firefox
  • #6855 - Cache bust GET requests on IE11
  • #6736 - Fix {binary: true} in db.get() with open_revs and HTTP adapter
  • #6730 - Fix single-sided checkpointing
  • #6766 - Prevent field lookup on undefined value
  • #6793 - Fix incompatibility with pouchdb-wrappers

Get in touch

As always, we welcome feedback from the community and would love to hear what you think of this release as well as PouchDB's future direction. Please don't hesitate to file issues or get in touch. And of course, a big thanks to all of our new and existing contributors!

6.3.4

15 Jul 09:15

Choose a tag to compare

Full changelog

New features

  • Stefan du Fresne: #6565 - Replacing uuid function with node-uuid
  • Alex Anderson: #5490 - Include doc ID in conflict errors
  • Hadrien de Cuzey: #6308 - Add option to disable checkpoints
  • Alex Anderson: #6529 - Include doc ID in 404 (not_found) errors for IDB adapter
  • Samuel Zhang: #5832 - Force update
  • Garren Smith: #6452 - Add support for use_index in pouchdb-find
  • Garren Smith: #6495 - Add explain endpoint for pouchdb-find
  • Garren Smith: #6443 - Add $allMatch support for pouchdb-find

Bug fixes and performance improvements

  • Will Holley: #6510 - validate _changes timing parameters
  • Alex Anderson: #6545 - throw Errors, not Strings
  • Adrien Vergé: #6504 - fix possible "EventEmitter memory leak detected"
  • Stéphane Alnet: #5981 - ensure close() doesn't block destroyed events
  • Garren Smith: #6472 - pouchdb-find: don't return design docs with all_docs index
  • Will Holley: #6458 - consistent error handling for mapreduce

6.3.2

13 Jul 15:19

Choose a tag to compare

Broken, please use 6.3.4

6.3.1

13 Jul 14:50

Choose a tag to compare

Broken, please use 6.3.4

6.3.0

13 Jul 11:55

Choose a tag to compare

Broken, please use 6.3.4

6.2.0

20 Apr 15:12

Choose a tag to compare

Full changelog

New features

  • #6289 - Merge in PouchDB-find
  • #5717 - Selector filter in changes feed and replication
  • #6106 - deprecate .type() in favor of ._remote

Bug fixes and performance improvements

  • #5987 - remove references to "db" option
  • #6338 - pouchdb-find: don't emit missing fields
  • #6345 - fix nextTick ES6 import in pouchdb-utils
  • #6358 - fix pouchdb-find null error
  • #6366 - fix $or/$nor without explicit $eq
  • #6422 - Add export of in-memory-logic

6.1.2

07 Feb 17:12

Choose a tag to compare

Bugfixes

  • 97400dd: Nolan Lawson: (#6203) - fix conflict error in delete-then-update-then-undelete
  • 3e454a3: kartikagarwal1993: (#6053) - assign defaults to new pouch db instance in PouchDB.plugin()
  • c331d90: Jonathan Hall: (#6178) - Add missing space to an error message.
  • 62f00fc: Will Holley: (#6132) - merge user-specified and default headers
  • 36bbda8: Nolan Lawson: (#6144) - make stemming use up less memory

Documentation

  • 1739f51: Nolan Lawson: (#6171) - update docs re: attachment blobs
  • a46bca8: Nolan Lawson: (#6121) - remove nightly build references from README
  • 950bea3: Dale Harvey: (#6094) - Update site version and fix typos

Miscellaneous

  • 9d962b7: Nolan Lawson: (#6170) - don't expose src directory to npm
  • 0a39bbf: Nolan Lawson: (#6162) - make polyfills extractable
  • 7089d39: Nolan Lawson: (#6167) - fix and improve test scripts
  • 1f6debc: Nolan Lawson: (#6020) - separate mapreduce into mapreduce & abstract-mapreduce
  • dadbbef: Nolan Lawson: (#6143) - perf tests: use marky, measure median, add iterations param
  • fbc311b: Dale Harvey: (#6114) - Remove passing tests from expected failures

6.1.1

18 Jan 16:01

Choose a tag to compare

Full changelog

New features

  • #6039 - include id in all bulk_docs results

Bug fixes and performance improvements

  • #5987 - remove references to "db" option
  • #6002 - remove excessive debug dep
  • #5962 - fix broken verify-bundle-size.sh script
  • #5990 - Use native Map/Set
  • #6012 - replace js-extend with Object.assign
  • #6018 - simplify processNextBatch in mapreduce
  • #5501 - fall back from bulk_get on any error
  • #6027 - remove unused utils.extend
  • #6015 - use Map and Set in mapreduce
  • #6016 - separate funcs for map vs reduce
  • #6031 - faster IDB changes() with batched cursor
  • #5930 - use travis_retry
  • #6055 - remove docCount optimization from IDB
  • #6055 - remove docCount optimization from WebSQL
  • #6089 - Don't add default heartbeat to non-live _changes requests
  • #6068 - safely reimplement IDB docCount optimization
  • #6096 - clean up and reduce memory usage of mapreduce
  • #6099 - use Map/Set in viewCleanup()
  • #6101 - add perf test for building secondary indexes