Why not just use IndexedDB in the browser if you don’t want an SQL database?
b) You can't use IndexedDB on the server, so you wouldn't be able to write sync code that runs on both the client and the server
Modern offline-first applications include a local backend every bit as complex and demanding as a server-based backend.