Meta Smart Glasses + Flutter: Backpressure, Frame Pacing, and Event Coalescing A Flutter tutorial details how to build operator-facing interfaces for Meta Smart Glasses and robotics systems by using backpressure, frame pacing, and event coalescing to achieve predictable latency and bounded memory rather than maximum message throughput. The tutorial recommends a latest-value cache for state-like data such as pose, preview frames, and current detections, bounded queues with explicit overflow policies and drop counters for every queue, and separate reliable paths with acknowledgement semantics for commands, alarms, and audit events. It advises profiling on a physical target in profile mode via Flutter DevTools, comparing p50, p95, and p99 latency rather than averages, and keeping safety-critical control loops on the robot because a Flutter app is not a hard real-time controller. Meta Smart Glasses + Flutter: Backpressure, Frame Pacing, and Event Coalescing Meta Smart Glasses + Flutter: Backpressure, Frame Pacing, and Event Coalescing This advanced tutorial treats Flutter as the operator-facing presentation layer while wearable SDKs, Jetson services, ROS 2 nodes, and NVIDIA-accelerated inference handle device-specific or compute-heavy work. The goal Meta Smart Glasses + Flutter: Backpressure, Frame Pacing, and Event Coalescing This advanced tutorial treats Flutter as the operator-facing presentation layer while wearable SDKs, Jetson services, ROS 2 nodes, and NVIDIA-accelerated inference handle device-specific or compute-heavy work. The goal is predictable latency, bounded memory, useful observability, and graceful degradation—not simply maximizing message throughput. Architecture note: Keep safety-critical control loops on the robot. A Flutter app is not a hard real-time controller and must not be the sole safety mechanism. Track freshness, event-to-display latency, throughput, frame pacing, CPU, memory, network use, battery, thermal state, dropped messages, reconnect time, and command acknowledgements. Do not use a single FPS number to represent the entire system: a smooth screen can still display stale data. sensor capture - native/ROS processing - gateway publish - Flutter receive - state accepted - widget build - frame rendered Record source and receive timestamps separately. Use monotonic clocks for elapsed durations within a process. When comparing devices, account for clock offset and uncertainty. Profile on a physical target in profile mode and inspect Flutter DevTools' Performance view. Debug-mode timing is not a reliable production baseline. See https://docs.flutter.dev/tools/devtools/performance Start from a clean launch. Connect to the robot or replay a fixed trace. Run a representative scenario for several minutes. Record frame times, memory, CPU, message rates, stale-data counts, and reconnects. Change one variable at a time. Compare p50, p95, and p99 latency, not just averages. class PipelineMetrics { int received = 0; int accepted = 0; int dropped = 0; int stale = 0; int uiPublishes = 0; } Use bounded metric windows or histograms; do not store every sample forever. High-rate sources should not directly trigger widget rebuilds. Use a latest-value cache for state-like data, bounded queues for events that must be preserved, and a controlled presentation cadence. class LatestValue