Frequently Asked Questions
General
What is Jspreadsheet Server?
Jspreadsheet Server is a Node.js backend that keeps a live, server-side spreadsheet in sync with every connected user over WebSocket, and exposes the same documents to your backend systems through a REST API. Changes are applied once on the server, where formulas recalculate authoritatively, and broadcast to every peer.
What do I need to implement myself?
Two things: authentication (three async hooks that decide whether a request may proceed) and persistence (where documents are stored). Everything else, including sequencing, conflict resolution, the formula engine, fan-out and caching, is handled by the server.
Do I need a license?
Yes. The server requires a clientId and licenseKey, passed in the server configuration. You can request a trial from your Jspreadsheet account.
Where does my data live?
On your infrastructure. The server is a Node.js service you host, and documents are persisted through your own storage via adapters. No spreadsheet data leaves your servers.
Collaboration and sync
How are concurrent edits resolved?
Every operation is applied to the document's single live instance on the server, in arrival order, and broadcast to all peers, which replay the same operations in the same order. For writes to the same cell, the operation the server applies last defines the stored value. See sync & conflicts.
Do all users see the same formula results?
Yes. The same formula engine your users see in the browser runs headless on the server, so computed values are authoritative rather than recalculated differently on each client. See the architecture overview.
What happens when a client loses its connection?
On reconnect the client compares the document's version signature with the server's; if the document changed while the client was offline, it reloads the document to a consistent state. The details are covered in sync internals.
Persistence and storage
Which databases are supported?
Ready-made adapters exist for MongoDB, PostgreSQL and Redis. You can also build your own adapter by implementing five async handlers against any storage you already run.
Is persistence per document or per operation?
Per operation. Each change is persisted through your storage as it is applied, rather than rewriting the whole document. See the persistence contract for the exact behaviour.
Deployment and scaling
Can I run it inside an existing Express application?
Yes. The server can attach to the same HTTP server and port as Express. See Express integration.
How do I scale beyond one node?
Partition documents across nodes with a consistent hash on the document guid: each document is owned by exactly one instance at a time, so capacity grows linearly and no coordination layer is needed. See the scaling guide.
Can I run it behind a reverse proxy?
Yes. A dedicated subdomain or path prefix behind Nginx both work, including the WebSocket upgrade.
AI integration
Can AI agents work on my spreadsheets?
Yes. The MCP server exposes documents to AI assistants through the Model Context Protocol, under the same authentication rules as any user, and the ChatGPT extension brings OpenAI directly into the spreadsheet UI.