Skip to content

Releases: apache/pouchdb

3.1.0

10 Nov 16:22

Choose a tag to compare

Today marks the dawn of a new PouchDB release, 3.1.0 is released today with a whole bunch of goodness. Here are some of the highlights:

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.

PouchDB Guides (#2766)

Nolan Lawson and Nick Colley worked together to produce some excellent guides to PouchDB which you can see @ http://pouchdb.com/guides/. They cover a lot of the issues surrounding building PouchDB applications including conflicts and promises vs callbacks. As a bonus the guides as well as the rest of the website now work offline.

Compaction removes orphaned attachments (#2818)

If you have been using attachments in your PouchDB databases, you may have noticed that it was a bit bigger round the waist than it should have been. We now work harder to ensure there isnt any extra things lying around the database taking up space that you no longer need. This change came along with a lot of compaction and attachment related fixes: #2890, #2905, #2951

Test against CouchDB master (#2850)

There is a big change brewing in CouchDB world, https://issues.apache.org/jira/browse/COUCHDB-1843 is in progress to merge the clustered 'BigCouch' merge from Cloudant into CouchDB master. This will represent a big change towards CouchDB however there is no need to worry, we now run all of our tests against the current master CouchDB (and they are all green!) so when the big CouchDB 2.0 release comes, your PouchDB applications will continue to work as well as before.

In related news

We keep a list of plugins and related external projects to PouchDB, here are a few new ones we added during this month:

  • PouchDB Dump and Load are designed to help you load data into your newly started PouchDB app faster than replication will do currently.
  • If you want to use PouchDB with Angular, you are in luck, there are now 4! adapters to help you integrate them: angular-pouchdb, Factoryng, ngPouch, ng-pouchdb.
  • Ember users arent left in the wild: ember-pouchdb should get you going with PouchDB and Ember.
  • If you are using Blobs with PouchDB, you probably want to take a look at blob-util.

Bug fixes Galore

Some of the other important fixes include:

  • (#2951) - fix concurrency in leveldb.js
  • (#2935) - new_edits=false works regardless of order
  • (#2867) - do not stack notify change listeners
  • (#2779) - fix undeletion with wrong rev
  • (#2794) - explain normal 404s in console.info
  • (#2841) - respect options when making dependent dbs
  • (#2844) - Encode attachment names
  • (#2807) - auto_compaction properly trims tree
  • (#2708) - implement attachment stub length

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

3.0.6

23 Sep 01:51

Choose a tag to compare

As Cupertino fans snuggle up to their bigger and better iDevices, PouchDB users will appreciate PouchDB 3.0.6. This release contains a workaround for some unforeseen hiccups in Apple's new implementation of IndexedDB for Safari 7.1 and iOS 8.

All joking aside, we are happy to welcome Apple to the IndexedDB party (better late than never!), and we are working with the WebKit devs to resolve the issue. In the meantime, PouchDB 3.0.6 provides a workaround where we fall back to Web SQL on Apple browsers.

Other fixes in this release:

  • db.compact() performance improvements (#2623)
  • Ensure attachments work after Chrome 38 upgrade (#2773)
  • Invalid/unauthorized documents no longer halt replication (#2268)
  • Filtering no longer halts replication (#2689)
  • Update lie dependency to 2.8.0

New features in this release:

  • db.info() shows whether auto_compaction is set (#2744)

3.0.5

07 Sep 19:38

Choose a tag to compare

Tonight our fine dining selection is PouchDB 3.0.5, which fixes some issues with excessive recursion and also PouchDB.sync not always working correctly.

PouchDB.sync un-borked (#2735)

You can now call PouchDB.sync('mydb', 'http://localhost:5984/mydb') using just the database names.

Less typing === more win.

No more infinite recursion (#2543)

You can now have as many revisions to your documents as you want, and you'll no longer descend Inception-style into a "too much recursion" or "maximum call stack" error.

We literally wrote a custom JSON parser to fix this. That's how much we love you.

3.0.4

05 Sep 02:18

Choose a tag to compare

This week we present PouchDB 3.0.4, which fixes a bunch of stuff with attachments. Now the kittens generated by the 3.0.0 release may be safely stored in Pouch.

Attachmentspalooza

  • In Firefox, different attachments now (correctly) have different MD5 hashes. Previously they were just hashes of the string '[Object] object'. With this, we also now check that the hashes we produce are identical to the ones that CouchDB produces (with the exception of plaintext ones due to Erlang being weird and not having ASCII strings) (#2698).
  • Weirdness in Chrome 37-39 with FileReader and empty blobs is now fixed (#2713).
  • Fix for a bug in Chrome 37 relating to blobs in IndexedDB (#2701).
  • HTTP pouches now support buffer/blob data in attachments (#2577).

Other fixes in 3.0.4

3.0.3

30 Aug 01:59

Choose a tag to compare

Another week, another PouchDB patch release!

This week we present PouchDB 3.0.3, which fixes some ornery issues with replication that were introduced by recent performance optimizations (#2685).

In fact, those performance optimizations have been rolled back. The current implementation appears to be the fastest possible given CouchDB's replication protocol, and the clever tricks introduced in 3.0.0 actually pushed conflicts into CouchDB's revision history, which is bad news for apps that rely on custom conflict resolution. (If you just use the default "pick a random winner," you probably didn't notice anything.)

And although "custom conflict resolution" may only describe a minority of apps, we felt it's better to be correct 100% of the time than to be speedy.

Dealing with slow replication

If you experience slow replications after upgrading to 3.0.3, here are some suggestions:

  1. Avoid CORS if you can, because it uses twice as many HTTP requests. Some tips for doing this:
    • If you are using IrisCouch, you can create a couchapp (i.e. let CouchDB serve your HTML/CSS/JS).
    • If you are running your own CouchDB, you can set up a reverse proxy with Apache or Nginx that allows you to serve your app and CouchDB from the same domain. Or create a couchapp.
  2. Try using the "every doc is a delta" pattern, as described in this blog post and exemplified in the delta-pouch plugin. Your replications will be much faster, because PouchDB is able to use an optimization for generation-1 documents, and in this setup, every document is a generation-1 document.
  3. Otherwise, just minimize the number of documents you create. Or minimize the number of documents you sync to the client. Views can be helpful with this, although the low performance of the query() API relative to the allDocs() API should be balanced with that.

Other fixes in 3.0.3

  • Auto-compaction is no longer experimental! It's fully supported. (#2655)
  • 'change' listeners aren't called after replication is canceled. (#2478)
  • Bower package is smaller. (#2659)

3.0.2

21 Aug 03:52

Choose a tag to compare

PouchDB 3.0.2 is another small patch release, this time to fix a bug in replication of deleted documents (#2636).

Other fixes:

  • Ensure PouchDB stops writing after replication is over (#2639)
  • Fix a race condition in LevelDB (#2631)
  • Allow special URI characters in doc IDs (#2651)

3.0.1

16 Aug 18:57

Choose a tag to compare

PouchDB 3.0.1 is a patch release to fix a migration bug in PouchDB 3.0.0 (#2456). Please upgrade your existing users directly from 2.2.3 and do not use 3.0.0.

This release also contains a small performance boost for bulkDocs() (#2553).

3.0.0

12 Aug 16:53

Choose a tag to compare

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 err.name). 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:

  • Local documents are now unversioned for better map/reduce performance and to better align the update_seq with CouchDB (#2023). Also fixes an issue with replication and changes(). (#2342)
  • 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)
  • 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)

Bugfixes:

  • 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

2.2.3

31 May 19:01

Choose a tag to compare

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

Major Changes:

  • Experimental browser adapter plugins (#2190)
  • Fix Ember.js integration (#2158)
  • Fix Browserify integration (#2249, pouchdb/mapreduce#170)
  • Fixes for conflict resolution (#2072)
  • Better error handling in replication (#2122)
  • Fix Internet Explorer 10-11 (#1661, #2198, #2132)
  • Fix attachments in Android 4.x (#1992)
  • Fix LevelDB memory leak, race condition, error messages (#2250, #2251, #2144)
  • Perf improvements for replication in WebSQL & IndexedDB (#2180, #2178)
  • Bugfixes for IndexedDB inclusive_end (#2129)
  • Fix changes() memory leak (#2311)
Complete list of changes

2.2.2

18 May 05:19

Choose a tag to compare

2.2.2 is a minor release to fix an error in the 2.2.1 npm package caused by a bug in Node 0.11 (#2245)