If you are using Indexed DB and you are planning to have two separate tabs write to the DB, then you will run to problems (I'll explain further below).
You are right that the entire DB is placed in an in-memory cache on startup. If you are only doing READ_ONLY queries, you will not be interacting with IDB
after startup and therefore there will not be any issues.
Once you start issuing READ_WRITE queries, things break. Imagine the following scenario.
1) Tab1 adds a record in TableA with primary key 100.
2) Tab2 attempts to add a record in TableA with the same primary key. Normally (if both queries happened in the same tab), Lovefield would detect the constraint violation (PK must be unique), and would throw an appropriate exception. Because Tab2's in-memory indices are not updated after 1, Lovefield will not detect the violation and will attempt to write to IDB. You have just entered undefined/unspecified behavior. If you want to dive deeper in this undefined behavior, here is what will happen.
Lovefield will (erroneously) succeed writing the 2nd row with the same primary key in IDB. The DB is corrupted now (persisted data violate constraints). Next time you open a new tab and attempt to initialize a DB connection, you will always get a PK violation error, with no way to recover.
This was just one example of many that will corrupt the DB in a multi-connection case. In short, it is not safe to make any assumptions when using multiple DB connections. I suggest you rethink the following things about your app.
1) Do you really need persistence? There are many use cases where an app wants to leverage Lovefield's SQL queries, but does not need persistence. If that's the case, MEMORY_DB is the right choice, not INDEXED_DB.
2) Do you need to allow multiple tabs writing to the DB? Consider using webworker/serviceworker (I have not tried using Lovefield in a service worker myself, but others have tried with varying degrees of success).
3) Could you have multiple DB connections but limit to only have one tab writing to the DB, and everybody else just reading? In that case you would not corrupt the DB, but you would get obsolete results in all tabs (except the one that writes).
I understand that none of the above sounds very appealing, but unfortunately that is the state of things with regards to multiple DB connections.
Hope that helps