Docs menu
Limits
Published
These are the limits the platform applies to every account, where each one is checked, and the error you get when you reach it. What each plan includes is on the pricing page.
“In the browser” means the app checks it before anything is sent. “On the server” means Dotpane’s servers check it, whatever the browser does. Some limits are checked in both places.
Requests
These apply to dash.fetch.
| Limit | Value | Checked | When you reach it |
|---|---|---|---|
| Calls a minute | 60 per account, over any 60 seconds. Each pane also stops at 60. | On the server and in the browser | RATE_LIMITED |
| Calls at once | 10 per account. Each pane also stops at 10. | On the server and in the browser | RATE_LIMITED |
| Calls a month | 100,000 per account, per calendar month in UTC. | On the server | QUOTA_EXCEEDED |
| Time for one call | 10 seconds, including reading the response. | On the server | PROXY_TIMEOUT |
| Response size | 2 MB, measured after it is decompressed. | On the server | PROXY_RESPONSE_TOO_LARGE |
| Request body | 256 KB. | On the server | PROXY_REQUEST_TOO_LARGE |
| Whole request | 300 KB once encoded, so a binary body fits up to about 220 KB. | In the browser | PROXY_REQUEST_TOO_LARGE |
| URL | 2,048 characters. | On the server | PROXY_URL_INVALID |
| Headers | 30 headers, 8 KB in total as written, 64 KB once secrets are filled in. | On the server | VALIDATION_FAILED |
cache |
0 to 3,600 seconds, GET only. | In the browser and on the server | VALIDATION_FAILED |
A call counts towards the minute, the month and the calls at once as soon as it passes Dotpane’s checks. That includes calls answered from the cache, and calls where the API then fails or times out. A call refused before that point, for example for a host that is not in the manifest, does not count. The Usage page shows how many calls you have made this month.
Panes
| Limit | Value | Checked | When you reach it |
|---|---|---|---|
| Panes per account | 100. | On the server | LIMIT_REACHED |
| Panes on one canvas | 40. | On the server | LIMIT_REACHED |
| Code | 256 KB for index.html, style.css and component.js together, in UTF-8 bytes. |
On the server, when the draft or a version is saved | VALIDATION_FAILED |
| Manifest | 16 KB, in UTF-8 bytes. | On the server, when the draft or a version is saved | VALIDATION_FAILED |
| Pane name | 80 characters. | On the server | VALIDATION_FAILED |
| Pane size | 24 × 40 cells at most, and no wider than the canvas. | On the server | VALIDATION_FAILED or LAYOUT_INVALID |
| Manifest contents | 30 props, 10 secret slots with 10 hosts each, 20 network hosts. All rules are in the manifest reference. |
On the server, when a version is saved | VALIDATION_FAILED |
| Messages from a pane | 200 a second. Each call to dash.fetch, dash.storage, dash.emit or dash.log is one, and so is starting or stopping to listen to an event name. |
In the browser | The first message over the limit is refused with RATE_LIMITED; the rest of that second are dropped. |
dash.log |
16 KB per call, 50 calls a second. | In the browser | Longer output is cut short; calls over the rate are dropped. |
Storage
dash.storage belongs to one pane on one canvas. The same pane placed twice has two separate stores.
| Limit | Value | Checked | When you reach it |
|---|---|---|---|
| Keys | 100 per pane. | On the server | LIMIT_REACHED |
| One value | 64 KB, measured as JSON. | On the server | VALIDATION_FAILED |
| All values | 256 KB per pane, measured as JSON. | On the server | LIMIT_REACHED |
| Writes | 60 a minute per pane, counting set and remove. |
On the server | RATE_LIMITED |
| Key length | 1 to 128 characters. | In the browser and on the server | VALIDATION_FAILED |
| Storage calls at once | 10 per pane. | In the browser | RATE_LIMITED |
In the editor’s preview, storage lives in memory and is thrown away when the preview reloads. The same key and size limits apply there, but not the write rate.
Events
These apply to dash.on and dash.emit. Events stay on one canvas and are not delivered back to the pane that sent them.
| Limit | Value | Checked | When you reach it |
|---|---|---|---|
| Event name | 1 to 64 characters. | In the browser | dash.on and dash.emit throw VALIDATION_FAILED. |
| Payload | 16 KB, measured as JSON. | In the browser | dash.emit throws VALIDATION_FAILED. |
| Events listened to | 100 different names per pane. | In the browser | Further names are refused with LIMIT_REACHED. dash.on does not throw; the refusal is written to the browser’s console. |
Refresh
These apply to dash.refresh.
| Limit | Value |
|---|---|
| Shortest interval | 15 seconds. A smaller number is raised to 15, without an error. |
| While hidden | Runs pause while the pane is off screen or the browser tab is hidden, and one run catches up when it is shown again. |
| Overlap | A run never starts while the previous one is still going; that tick is skipped. |
Each run’s calls count towards the request limits above. A pane that makes one call every 15 seconds uses 4 of the account’s 60 calls a minute.
Account
| Limit | Value | Checked | When you reach it |
|---|---|---|---|
| Canvases | 20. | On the server | LIMIT_REACHED |
| Canvas name | 60 characters. | On the server | VALIDATION_FAILED |
| Canvas columns | 6 to 24. A new canvas has 12. | On the server | VALIDATION_FAILED |
| Cell height | 40 to 120 pixels. A new canvas has 64. | On the server | VALIDATION_FAILED |
| Secrets | 50. | On the server | LIMIT_REACHED |
| Secret value | 8 KB. | On the server | VALIDATION_FAILED |
| Allowed hosts per secret | 1 to 10. | On the server | VALIDATION_FAILED |
| Sign-in links | 5 an hour for each email address, and 5 an hour for each IP address. | On the server | RATE_LIMITED. The sign-in page asks you to wait a few minutes. |
| Sign-in link lifetime | 15 minutes, and it works once. | On the server | The sign-in page asks you to request a new link. |