BlocSignal: transformadores de eventos sin streams para Flutter
La librería BlocSignal propone una implementación de transformadores de concurrencia que evita Dart Stream y RxDart, usando funciones puras y locks para reducir la latencia en eventos de alta frecuencia.

En aplicaciones Flutter, los eventos de alta frecuencia, como los que produce un scroll a 120 Hz, suelen controlarse con transformadores de concurrencia para evitar peticiones duplicadas. Las implementaciones tradicionales, basadas en RxDart y streams, añaden una capa de complejidad que puede afectar al rendimiento. BlocSignal, una librería de código abierto para gestión de estado, propone eliminar por completo el uso de Streams en estos transformadores, sustituyéndolos por funciones puras de orden superior y locks.
El problema que aborda es conocido: en paquetes como bloc_concurrency, un transformador droppable se implementa mediante exhaustMap de Rx, lo que implica que cada evento atraviesa StreamControllers internos, suscripciones y microtareas. Durante un gesto rápido, pueden llegarse a procesar 20-30 eventos en 250 ms, generando una cantidad innecesaria de basura y compitiendo por el presupuesto de 8,3 ms por frame. BlocSignal define el transformador como una función que recibe el evento, el handler y un callback de emisión, sin ningún argumento de stream. Por ejemplo, droppable usa simplemente un flag booleano que comprueba si hay una ejecución activa; si la hay, descarta el evento de inmediato. Al terminar, el flag se resetea. Todo el proceso es síncrono salvo la propia petición asíncrona, que se maneja con whenComplete.
Además de la reducción de overhead, BlocSignal introduce telemetría como parte del flujo. Los eventos pueden rastrearse con OpenTelemetry y Flutter DevTools, lo que permite ver dónde se descartan o preempten sin ensuciar el estado de la presentación con contadores manuales. El autor defiende que esto evita que el estado de la UI se acople a las tasas de refresco.
El código está disponible en el repositorio de GitHub, y se ofrecen dos paquetes para integrar la telemetría: bloc_signals_otel y bloc_signals_devtools.
A pesar del enfoque prometedor, conviene ser prudente. Las afirmaciones de rendimiento no se acompañan de benchmarks independientes, y existe una issue abierta (#239) que podría revelar casos límite sin resolver. Habrá que esperar a que más equipos lo adopten para ver si cumple lo que promete.

