Releases: pouchdb/pouchdb
3.0.6
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 whetherauto_compaction
is set (#2744)
3.0.5
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
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
- When running sync, it only creates one instance for each database (#2662).
- Performance improvements for persisted map/reduce, and it also uses less space (pouchdb/mapreduce#191 and pouchdb/mapreduce#185).
3.0.3
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:
- 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.
- 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.
- 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 theallDocs()
API should be balanced with that.
Other fixes in 3.0.3
3.0.2
3.0.1
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
Breaking Changes:
- The browser build
pouchdb-nightly.js
has been renamed topouchdb.js
. It was never really a nightly anyway. (#2146) opts.server
has been deprecated from thereplicate()
andsync()
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 oferr.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 andchanges()
. (#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
inquery()
. (pouchdb/mapreduce#196, pouchdb/mapreduce#198)
Complete list of changes
2.2.3
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
2.2.1
2.2.1 is a minor release that fixes a bug in viewCleanup()
where indexes were not properly cleaned up (#2162).
No data will be lost if you upgrade from 2.2.0 to 2.2.1; you can continue using persistent map/reduce like you were before. This release does not contain a database migration.
This release also updates our dependencies, such as lie v2.7.4, which contains some performance improvements since the last release.