Cuando una app falla, la frustración del usuario puede crecer rápidamente si no tiene una forma clara de reportar el problema. Para atender ese momento crítico, integramos en nuestras apps Flutter una herramienta sencilla y accesible que permite enviar reportes de bugs, incluyendo capturas de pantalla. Usamos Pocketbase como backend ligero y flexible para almacenar estos reportes, logrando una solución rápida de implementar y fácil de usar, tanto para los usuarios como para nuestro equipo.
APPS
Nombre de la Colección: apps. Esta colección actuará como un directorio para almacenar información única sobre cada aplicación que enviará logs.
- name: Este campo de texto nos permitirá guardar el nombre legible de la aplicación.
- package: Aquí almacenaremos el identificador único del paquete de la aplicación, crucial para diferenciar los logs.
- etc: Puedes añadir campos adicionales relevantes para la identificación y gestión de tus aplicaciones.

APIKEYS
Creamos una colección adicional apikeys: podemos agregar los campos necesarios, solamente vamos a usar el id

¿Por qué usar el id
como API Key?
Pocketbase genera automáticamente un id
único y seguro para cada registro que se crea en una colección. Podemos aprovechar esta característica para utilizar estos id
como nuestras API Keys. Esto simplifica el proceso, ya que no necesitamos generar claves complejas manualmente. Cada aplicación registrada en nuestra colección bugs_report
puede tener una entrada correspondiente en la colección apikeys
, y el id
de esta entrada actuará como su credencial única.
BUG_REPORTS
En la siguiente etapa, crearemos la colección bug_reports
, donde almacenaremos los detalles de los errores reportados por los usuarios de nuestras aplicaciones.
Como se observa en la imagen, un campo crucial es package
, el cual establece una relación simple con la colección apps
que creamos anteriormente. Al seleccionar el id
de una aplicación específica en este campo, vincularemos el reporte de bug a la aplicación correspondiente.


Además, esta colección incluye un campo imagenes
que permite adjuntar múltiples archivos en diversos formatos de imagen, generando automáticamente una miniatura de 100×100 para una visualización rápida.

Finalmente, los campos email
, telefono
, y nombre
son requeridos por el plugin flutter_bug_report_pb
, aunque se definan como opcionales para el usuario final al momento de reportar un bug. Asegúrate de incluir estos campos en tu colección bug_reports
para una correcta integración con el plugin.
Validando la API Key en la Colección bug_reports

La regla de escritura @request.headers.apikey ~ @collection.apikeys.id
en la colección bug_reports
es como un guardia de seguridad para los reportes de bugs. Funciona así:
@request.headers.apikey
: Esto le dice a Pocketbase que mire dentro de la cabecera (la parte de arriba) de la solicitud (el envío del reporte de bug) y busque algo que se llameapikey
.~
: Este símbolo significa «contiene» o «coincide con».@collection.apikeys.id
: Esto le dice a Pocketbase que vaya a la colecciónapikeys
y revise todos losid
(las identificaciones únicas) que hay allí.
Para poder crear un nuevo reporte de bug, el valor que venga en la cabecera de la solicitud con el nombre
apikey
debe ser igual alid
de alguno de los registros que existen en la colecciónapikeys
@request.headers.apikey ~ @collection.apikeys.id
De esta manera, solo las aplicaciones que conozcan una API Key válida (un id
de la colección apikeys
) podrán guardar nuevos reportes de bugs.
BugReportPlugin.configure(
host: "https://website.com", // La dirección de tu servidor de Pocketbase
collection: "bug_reports", // El nombre de la colección donde se guardarán los reportes
apiKey: "2cpaloye67sthot", // **IMPORTANTE:** El ID de UN registro específico de la colección `apikeys`. Este ID se enviará en la cabecera HTTP con el nombre `apikey`.
package: "sg4luigl0ymw8l2", // **IMPORTANTE:** El ID de UN registro específico de la colección `apps`. Este ID se enviará en el cuerpo (body) de la solicitud como un campo llamado `package`.
textDictionary: dictionary, // Un diccionario para personalizar los textos de la interfaz del reporte (opcional).
);
Resultados
Los reportes entrantes los podremos visualizar en Pocketbase, y eventualmente podrémos crear un dashboard para una mejor vista y crear reportes o analizarlos detenidamente.

PocketBase como backend para reportes de bugs en Flutter es una solución moderna, minimalista y eficaz para centralizar y gestionar errores desde tus aplicaciones móviles. Gracias a su arquitectura sin servidor y su fácil integración con plugins como bug_report_pb
, puedes capturar errores, adjuntar imágenes y almacenar los datos directamente en una base de datos lista para producción. Con solo configurar algunas colecciones (apps
, apikeys
, bug_reports
) y establecer una sencilla lógica de validación, ya estarás recolectando feedback crítico desde tus usuarios.
Ventajas de Usar PocketBase
- Ligereza: Backend sin dependencias pesadas, ideal para proyectos pequeños o medianos.
- Fácil configuración: No requiere configuraciones complejas de servidor o bases de datos externas.
- Almacenamiento de archivos integrado: Soporte nativo para imágenes y otros archivos multimedia.
- Reglas de seguridad personalizables: Filtrado por headers como
apikey
para control de acceso. - Panel de administración incluido: Visualización directa de colecciones y datos desde el navegador.
Desventajas a Considerar
- Escalabilidad limitada: No es ideal para sistemas que requieran escalabilidad horizontal o cargas masivas.
- Sin replicación/clustering: No ofrece redundancia nativa como otros BaaS (Backend as a Service).
- Curva de aprendizaje para reglas personalizadas: Aunque es flexible, las expresiones de reglas pueden ser confusas al principio.
Comparación: PocketBase vs Otras Soluciones
Característica | PocketBase | Firebase | Supabase |
---|---|---|---|
Peso | Muy liviano | Moderado | Pesado |
Offline disponible | Sí | Sí | Limitado |
Panel Admin incluido | Sí | Limitado | Sí |
Reglas tipo JWT/APIKey | Sí (flexible) | Sí (Auth integrada) | Sí (RLS) |
Requiere cuenta externa | No | Sí | Sí |
Fácil para autohosting | Sí | No | No |
Simplificación del Proceso
El uso de IDs autogenerados como API Keys elimina pasos manuales y errores comunes. Solo necesitas:
- Crear la colección
apikeys
. - Tomar el ID generado por PocketBase.
- Usarlo como API Key en tu plugin Flutter.
PocketBase se encarga del resto, gracias a su sistema de reglas que filtra el acceso con:@request.headers.apikey ~ @collection.apikeys.id
Personalización
El plugin bug_report_pb
permite modificar textos y comportamiento mediante un diccionario (textDictionary
). Esto permite adaptar la interfaz a cada aplicación, idioma o flujo de reporte deseado, brindando una mejor experiencia al usuario final.
Además, los campos requeridos (nombre
, email
, teléfono
) pueden marcarse como opcionales visualmente, mientras siguen presentes en la estructura de datos para una mejor integración backend.
Conclusión
Usar PocketBase como backend para reportes de bugs en apps Flutter es una elección práctica, eficiente y fácil de implementar. Ofrece una alternativa poderosa frente a soluciones más pesadas, ideal para desarrolladores que buscan control, simplicidad y velocidad en entornos autogestionados. Si buscas una manera sencilla de centralizar errores y mejorar la experiencia de tus usuarios, esta combinación puede ser justo lo que necesitas.
Deja una respuesta