← Back to blog

Por qué ToolBerry es offline-first

Imagínalo. Llegas a un sitio de trabajo al fondo de una propiedad, tres curvas más allá por un camino de grava, y tu señal cae a una sola raya. Abres tu…

Updated 26 de abril de 2026

Imagínalo. Llegas a un sitio de trabajo al fondo de una propiedad, tres curvas más allá por un camino de grava, y tu señal cae a una sola raya. Abres tu app de horarios para ver qué equipo te pidió el cliente que revises — y te sale un spinner cargando. Después una pantalla de "estás sin conexión". Después nada.

Ese momento es la razón por la que ToolBerry existe.

La mayoría de las apps de servicio en campo tratan a la red como si siempre estuviera ahí, y al "modo offline" como un plan de respaldo para cuando algo sale mal. ToolBerry es lo opuesto. La red es el plan de respaldo. Tu dispositivo es la fuente de verdad. Eso es lo que queremos decir con offline-first, y no es una función que pegamos al final — moldea casi todas las decisiones que tomamos sobre el producto.

Aquí va por qué lo hicimos así, y qué significa eso para ti.


Qué significa realmente "offline-first"

Vale la pena hacer una distinción al inicio, porque el término se usa de manera muy laxa.

Las apps tolerantes al offline asumen que la nube es la fuente de verdad. Guardan en caché algunos datos para que puedas seguir trabajando cuando se cae la señal, pero al perder la conexión, la experiencia se degrada — funciones dejan de servir, pantallas se quedan en blanco, y te quedas con la duda de si lo que escribiste realmente se va a guardar.

Las apps offline-first asumen que el dispositivo es la fuente de verdad. La nube es un destino de sincronización, no una dependencia. Tengas cinco rayas de LTE o estés en un sótano sin nada de señal, la app se comporta igual.

ToolBerry es del segundo tipo. Tus trabajos, clientes, sitios, contactos, equipos y horarios viven en una base de datos real en tu teléfono — no en una caché, no en una cola esperando hablarle a un servidor. Usamos SQLite, el mismo motor de base de datos que usan la mayoría de las apps que ya tienes en tu teléfono. Hay más detalles técnicos al final de este artículo si te interesa.


Las razones obvias: velocidad y confiabilidad

Si llevas tiempo trabajando en campo, ya las conoces:

Tu señal es poco confiable, pero el trabajo no. Sótanos. Edificios industriales. Propiedades rurales. Estacionamientos subterráneos. Cualquier lugar con paredes de metal. El trabajo en campo pasa en lugares que no se diseñaron pensando en torres celulares. A una app offline-first no le importa.

Velocidad. Leer desde tu dispositivo local es aproximadamente mil veces más rápido que esperar un viaje de ida y vuelta al servidor. Cargar el historial de un cliente, abrir una orden de trabajo, buscar entre cientos de trabajos — todo es instantáneo, porque no se está descargando nada. No hay estado de carga para tus propios datos. Simplemente aparecen.

Sin la ansiedad del "guardando…" Cada cambio que haces se escribe en tu dispositivo de inmediato. Sin estado a medias, sin "¿seguro que quieres salir de esta página?", sin riesgo de perder lo que escribiste porque la conexión parpadeó.

Estas son las razones básicas. Son con las que arranca todo argumento offline-first. Las razones más interesantes son las menos obvias.


Las razones menos obvias (que en realidad son las más importantes)

Tus datos son tuyos, no nuestros

La mayoría de las herramientas SaaS funcionan así: escribes el nombre, la dirección y el teléfono de tu cliente en un formulario, y esa información se manda a un servidor en el centro de datos de alguien más. Le estás confiando tus relaciones con clientes a esa empresa — y si tienen una caída, los compran, cambian sus precios, o deciden usar tus datos de formas que no anticipaste, no tienes muchas opciones.

El plan gratuito de ToolBerry invierte eso. Tus clientes, sitios e historial de trabajos viven en una base de datos en tu dispositivo. Nosotros no la tenemos. No la podemos perder, filtrar, vender ni retener como rehén. Si desapareciéramos mañana, tus datos seguirían en tu teléfono.

Para operadores independientes y equipos pequeños — especialmente en industrias donde la lista de clientes es el negocio — esa es una diferencia importante. No estás rentando el acceso a tu propia información.

"Gratis para siempre" es estructural, no promocional

Cada herramienta de servicio en campo que has evaluado tiene un problema del que no hablan: cada usuario gratuito les cuesta dinero. Servidores, bases de datos, ancho de banda, soporte — se acumula. Por eso limitan duro el plan gratuito y te empujan a planes pagos en cuanto el producto te empieza a parecer útil. Heroku tenía un plan gratuito famosamente generoso y terminó eliminándolo por completo en 2022 por exactamente esa razón.

Cuando decimos que ToolBerry es gratis de por vida para operadores independientes, lo podemos decir en serio porque un usuario gratuito genuinamente no nos cuesta casi nada. No hay servidor guardando tus datos, no hay base de datos que estemos pagando para mantener corriendo, no hay factura de infraestructura por usuario. La app en tu dispositivo hace el trabajo.

Eso cambia lo que el plan gratuito puede ser. En vez de un demo recortado diseñado para que actualices en 30 días, puede ser realmente el producto completo para gente que no necesita sincronización en equipo. Actualizas cuando la necesidad de tu negocio cambia de verdad — cuando contratas un segundo técnico, cuando quieres integración con QuickBooks, cuando necesitas sincronización entre dispositivos — no porque te pusimos un freno artificial. El muro de pago está alineado con el crecimiento de tu negocio, no con nuestra factura de servidores.

Como referencia: los precios típicos de los competidores de FSM empiezan alrededor de $169/mes y llegan a $250–$500 por técnico al mes en el rango empresarial. Nosotros podemos ser radicalmente más baratos porque nuestra estructura de costos es radicalmente distinta.

Tu disponibilidad no depende de la nuestra

Cuando tu app de horarios se cae dos horas un martes en la mañana, todo el equipo se queda atascado. Todos construyeron flujos de trabajo alrededor de una herramienta que de pronto no está. Con el plan gratuito de ToolBerry, esta categoría de problema no existe — la app en tu teléfono sigue funcionando sin importar lo que esté pasando del lado nuestro.

Incluso en planes pagos, donde la sincronización entra en juego, el modelo local-first significa que un problema en el backend degrada la sincronización, no la app. Tú sigues trabajando. La sincronización se pone al día después.

Amigable con la batería y el plan de datos

Las apps offline-first no están constantemente conversando con un servidor. Sin sondeo en segundo plano, sin conexiones keepalive, sin "buscando actualizaciones" cada treinta segundos. Eso es discretamente más amable con tu batería y tu plan de datos, especialmente si haces tethering en la carretera o usas un operador económico con un límite ajustado.

Sin registro significa sin fricción

Esto no es estrictamente porque seamos offline-first, pero solo es posible porque lo somos. Como tus datos viven en tu dispositivo, no necesitamos una cuenta de servidor para identificarte — lo que significa sin email, sin contraseña, sin verificación por SMS, sin asistente de configuración. Abre la app, empieza a agregar trabajos.

El número de pruebas gratuitas que la gente abandona en la pantalla de registro es enorme. Nosotros simplemente quitamos la pantalla.


Las concesiones honestas

Offline-first no es gratis. Hay concesiones reales, y preferimos ser directos sobre ellas en lugar de pretender que no existen.

La sincronización entre dispositivos es una función paga. Si quieres los mismos datos en tu teléfono, tu tablet y la computadora de la oficina, necesitas nuestro respaldo opcional basado en Dropbox o nuestro plan Team pagado. La sincronización en tiempo real entre dispositivos requiere un backend, y los backends cuestan dinero. No vamos a pretender otra cosa enterrando ese costo en la cuota mensual de todos.

Los respaldos son tu responsabilidad en el plan gratuito. Si pierdes tu teléfono y no conectaste Dropbox ni actualizaste, tus datos se van con él — igual que si perdieras un cuaderno en papel. Lo hacemos fácil de mitigar (el respaldo en Dropbox es gratis y se configura en unos treinta segundos), pero queremos que sepas que existe.

El tamaño inicial de la app es mayor. Offline-first significa que enviamos el motor de base de datos, tu esquema completo, y suficiente infraestructura para correr de manera independiente. La app pesa unos megabytes más que un equivalente cliente delgado. Lo sentirás una sola vez, al instalar.

Los modos privado/incógnito del navegador lo bloquean. Los navegadores intencionalmente impiden el almacenamiento local persistente en modos privados, lo cual significa que ToolBerry no puede guardar nada en esas ventanas. Hemos escrito sobre esto por separado — hay un artículo dedicado — pero vale la pena mencionarlo aquí como parte del panorama honesto.

Algunas funciones avanzadas genuinamente necesitan un backend. Coordinación de equipo en tiempo real, vistas de despachador, ruteo de órdenes de trabajo entre clientes, integraciones con contabilidad — no son funciones que estemos retrasando detrás de un muro de pago como truco. Genuinamente requieren un servidor. Offline-first resuelve una porción enorme del espacio del problema, pero no es una respuesta universal, y no te vamos a decir que lo es.


Qué significa esto para ti

Si manejas trabajos desde una camioneta: ToolBerry se comporta igual ya sea que estés en un estacionamiento del centro o en una propiedad rural sin servicio. No hay un modo en línea o fuera de línea del que estar pendiente — solo está la app, y funciona.

Si manejas horarios, despacho u operaciones desde una oficina: el modelo local-first significa que la gente en campo realmente puede confiar en la herramienta que les estás dando. Sus datos no desaparecen en una cola de sincronización que no puedes auditar. Su app no se traba cuando su conexión parpadea. Y cuando estés listo para coordinar entre un equipo, los planes pagos están construidos sobre el mismo cimiento — sincronización por encima, no atornillada.

Si estás evaluando ToolBerry contra los grandes: la arquitectura es de otra categoría, no una mejora incremental. El modelo de costo, la postura de privacidad y la confiabilidad en campo nacen todos de la misma decisión central. Vale la pena pesarlo con cuidado.


¿Tienes una pregunta?

Siempre estamos felices de hablar sobre cómo funciona esto para tu situación específica. Escríbenos a contact@toolberry.app.


Para los curiosos técnicos

Si quieres entender cómo está construido esto realmente, aquí está el panorama por debajo del cofre.

SQLite en el dispositivo

ToolBerry usa SQLite como su base de datos local — el mismo motor que viene dentro de iOS, Android, Chrome, Firefox, macOS y la mayoría de las aplicaciones de consumo que usas a diario. No es una caché. No es localStorage. Es una base de datos relacional de verdad con soporte completo de SQL: joins, transacciones, índices, llaves foráneas, todo. La hemos probado con cientos de miles de registros en teléfonos comunes y el rendimiento se mantiene plano.

En iOS y Android nativos, accedemos a SQLite mediante las APIs estándar del sistema vía Capacitor. En el navegador/PWA usamos un build de SQLite compilado a WebAssembly, persistido a disco vía OPFS (Origin Private File System) — una API de navegador relativamente nueva diseñada exactamente para este tipo de uso.

Por qué SQLite en lugar de IndexedDB o localStorage

La mayoría de las apps web con modo offline usan IndexedDB o localStorage. Ambas tienen limitaciones:

  • localStorage es un almacén clave-valor con un tope rígido de ~5 MB y E/S síncrona en el hilo principal. Inutilizable para cualquier conjunto de datos significativo.
  • IndexedDB es más capaz pero tiene una API famosamente incómoda, no tiene SQL, consistencia débil entre navegadores, y problemas conocidos de confiabilidad.
  • SQLite sobre OPFS nos da SQL real, transacciones reales, comportamiento predecible entre plataformas, y la misma capa de queries que compartimos con nuestro backend. Es la única opción que escala a un conjunto de datos real de producción sin compromiso.

Cómo encaja la sincronización (eventualmente)

Los usuarios del plan gratuito están totalmente offline por diseño. Los planes pagos agregan sincronización, y la arquitectura está construida alrededor de que el dispositivo sea la autoridad:

  1. Cada escritura va primero a la base de datos SQLite local, de inmediato, sin red de por medio.
  2. Las escrituras también se registran en una bandeja de salida local.
  3. Cuando el dispositivo está en línea y el usuario tiene plan pago, la bandeja de salida se vacía hacia nuestro backend.
  4. Los cambios desde otros dispositivos llegan como un flujo y se fusionan en la base de datos local.

Es el mismo patrón general que usan Linear y la mayoría de las apps colaborativas modernas con enfoque local-first. Significa que la app local nunca se bloquea esperando a la red, y la sincronización se vuelve una preocupación de fondo en lugar de una ruta crítica.

Por qué la estructura de costos es tan distinta

Un SaaS de FSM tradicional aloja los datos de cada cliente en una base de datos central, corre servidores de API por petición, y paga por almacenamiento, cómputo y ancho de banda en cada interacción. El costo marginal por usuario gratuito es real, y a escala domina.

El plan gratuito de ToolBerry es una SPA estática servida desde un CDN — costos de ancho de banda medidos en fracciones de centavo por usuario — y todos los datos viven en los dispositivos de los usuarios. No hay nada que tengamos que alojar más allá del bundle de la app. Los planes pagos reintroducen infraestructura de backend para sincronización e integraciones, pero solo para los usuarios que realmente lo necesitan.

Esa es la razón estructural por la que "gratis para siempre" funciona para nosotros y no funcionó para Heroku. Ellos pagaban costos reales de infraestructura por usuario y trataban de recuperarlos vía conversión. Nosotros no.

Para leer más

Share
XLinkedIn