You can totally compare electron and chrome packaged Apps. They are very similar. For both of them you get:
- Develop your Desktop App using Web Technologies
- App runs on top of Chrome
- Automatic updates. Though in Chrome you get it for free, for Electron you need to do some work.
- OS Integration - Both have better integrations with the OS than a normal website, but Electron supports a wider range of OS integration.
- Work offline or online.
- Both work on Linux, OSX and Windows. Chrome Web Apps also work on Chromebooks.
Here are the differences:
- Electron uses node.js. So you can import many modules not easily available in Chrome Apps.
- Distribution, with electron you package and distribute the app yourself. With Chrome Apps you distribute them through Chrome Webstore.
- Environment. An Electron App is packaged with its full environment. Chrome Apps just use Chrome environment so they are lighter, but may behave differently for different users depending on the Chrome version they use.
- Chrome Apps require the user to have Chrome installed, Electron doesn't.
- Electron has better developer tools for testing and debugging.
- Electron is an open source platform. Chrome Apps is also built on top of multiple open technologies but specially distribution is controlled by Google.
- Electron documentation is much better even though it's a much younger platform.
- Adoption: There are quite a lot of big and successful apps built on top of Electron such as Visual Studio Code, GitHub client, Slack. Chrome Apps just never picked up as much momentum.
- Chrome Apps can be tightly integrated into Google Drive
UPDATE 2016-08-19:
It seems Google recently deprecated Chrome Apps on any platform other than ChromeOS. So I'd say it's no longer a valid option.
http://blog.chromium.org/2016/08/from-chrome-apps-to-web.html
I've been testing PouchDB, RxDB (which relies on PouchDB with RxJS streams for queries), Realm-JS (native database like sqlite3), FireStore. NeDB doesn't support remote sync.
I won't go into performance metrics details on each database, but PouchDB has been very slow and heavy on memory when querying more than 20.000 items (tried with indexeddb/websql adapter).
RxDB was generally much faster with that many items, especially when subscribing to query changes (tried with indexeddb/websql adapter too). Also schema and migrations are very handy.
FireStore is a good choice and comes with very easy setup of server and client components, but you'll need to be comfortable to run on a google platform. There is some flexibility with firebase functions if you want some control over server logic and there is customizable ACLs for your collections. Speed has been good and on par with RxDB. Comes with a very good auth module if you want it.
If you want to be able to scale much much more on the client side, which you probably don't, or if you want to make complex queries, I'd really recommend using something like realm. You'll need to compile for each platform like you've experienced with sqlite3, but there is sync, offline persistence, rich queries and great performance. There is just no way that javascript based solutions like PouchDB, RxDB or FireStore can compete, even with sqlite backends, since much of the computation will still happen in your precious JS thread. realm is doing much of its heavy lifting on the native library. I've been able to do LIKE "abc" queries on 100.000 items, returning hundreds of results, within less than hundred milliseconds and without noticeably freezing my UI or pumping up memory usage heavily. Supports client migrations too, which is nice.
In the end, there are multiple answers:
1. Want to host everything yourself and don't need massive scale client side (you can sync against subsets of your server data with filters), RxDB ist very good and comes with nice set of features.
2. Want very easy setup, nice modules like auth, server functions etc, and don't need massive scale on the client (can also sync against server data subsets with filters), FireStore is great.
3. Need lots of lots of data on the client, realm is my preference. I personally really dislike the realm sync platform for its pricing model (though technically it's cool), but the database itself is free and maybe you could try and implement a custom sync.
Take my results with a grain of salt, I've had some very specific challenges like large, non-relational collections and fulltext-search, your use-case will probably differ a lot.
Best Answer
You must use Chrome Apps for software on Chrome OS. Also, Google has not announced any intention to remove Chrome Apps from Chrome OS. You will need NW.js or Electron on Windows, Linux, and Mac.
However, this does not require completely separate codebases. NW.js has native support for Chrome Apps, and there is a partial polyfill for Electron.
There are some differences you need to account for, such as the lack of autoupdating and installation from the Chrome Web Store for NW.js/Electron.