---
title: Apps limits
url: https://www.tines.com/stories/docs/apps/apps-limits/
updated: 2026-08-26T13:52:01+00:00
---

*[tines.com](https://www.tines.com/llms.txt) › [Docs](https://www.tines.com/stories/docs/llms.txt) › [Apps](https://www.tines.com/llm/stories/docs/apps.md)*

# Apps limits

*[View on tines.com](https://www.tines.com/stories/docs/apps/apps-limits/)*

See the [Apps overview ](https://www.tines.com/stories/docs/apps/)for an introduction to each of these sections.

## Apps

Maximum app limits per tenant:

| Type | Limit |
| --- | --- |
| Published apps | Set by your license. *Talk to your Tines representative to raise this limit.* |
| Unpublished (draft) apps | No limit |
| Versions per app | No limit |

---

## App files

Maximum file limits per app:

| Type | Limit |
| --- | --- |
| Files per app | 5,000 files |
| File size | 128 KB per file |
| Total source size per build | 5 MB *The combined size of every file in the app. Builds over this size fail with an error.* |
| Supported file types | tsx, ts, jsx, js, json |
| Entry point | `App.tsx`, which cannot be renamed or deleted |
| Asset uploads (images, fonts, video) | Not supported in the codebase. *Add images through the app builder conversation, or serve them from a Tines resource through an app endpoint.* |

---

## Framework and dependencies

Versions and packages available to an app:

| Type | Limit |
| --- | --- |
| Framework | React only. Other frameworks are not supported. |
| React and React DOM | 19 (fixed version, preloaded for you) |
| React Router | 6 (fixed version) *Use the `TinesRouter` wrapper from `@tines/apps` rather than `BrowserRouter`, `HashRouter`, or `MemoryRouter`.* |
| Styling | Tailwind CSS only. *CSS, Sass, and SCSS files are not supported.* |

> **NOTE:** On a self-hosted deployment running without an internet connection, the only packages an app can install are the ones preloaded in the build image. The app builder is told which packages are available and builds with those. See [here](https://preview.tines.com/stories/docs/self-hosted/apps/) for more information.

---

## Runtime environment

Apps run in a sandboxed iframe. This limits which browser features app code can reach:

| Type | Limit |
| --- | --- |
| Local storage and cookies | Not available. *State that needs to survive a page refresh must be stored through an app endpoint.* |
| Browser crypto functions | Not available *The iframe is not a secure context, so `crypto.randomUUID()` and `crypto.subtle` throw. Generate IDs another way, or use a third-party library.* |
| Network requests from app code | Not supported. *Reach Tines and third-party services through an app endpoint.* |
| Parent page APIs and the parent page URL | Not available. *Use `TinesRouter` and the `@tines/apps` hooks for route state, not `window.location`.* |
| Embedded external video | Not supported |
| Embedding an app outside Tines | Not supported. *Apps cannot be embedded in an external site as an iframe. Inside Tines, apps can be added to cases and page collections.* |
| File downloads | Supported through `downloadFile()` *The viewer confirms each download.* |

---

## App endpoints

Maximum endpoint limits per app:

| Type | Limit |
| --- | --- |
| Endpoints linked per app | No limit, but you may encounter performance issues if your story has a very large number of actions. |
| Endpoint response timeout | 30 seconds |
| Recommended response time | Under one second |

> **TIP:** Endpoints that respond in under a second make an app feel responsive, so keep the story behind an endpoint short and consider reusing recent responses for repeated requests.

---

## Reading Tines data via hooks

Maximum limits per request when an app reads cases, records, and resources directly through the `@tines/apps` hooks:

| Type | Limit |
| --- | --- |
| Request timeout | 30 seconds |
| Records per page | 20 by default, 500 maximum |
| Rows per records query | 1,000 rows |
| Parent record IDs per request | 100 IDs |
| Creating, updating, or deleting data | Not supported. *The hooks are read-only. Use an app endpoint to write to Tines.* |

---

## Access control

Who can view and build an app:

| Type | Limit |
| --- | --- |
| Viewer access options | Anyone on this team, anyone in this tenant, only specific people, or via SSO authentication |
| Anonymous access | Not supported. *Viewers must be signed in to Tines. Tenant owners can always open every app on the tenant.* |
| Builder access | Members of the app's team with an Apps permission |
| Sharing an app outside your tenant | Not supported |
