Announcing: Seamless, efficient loading of time-range data.

Streamline your large-scale data analysis and debugging.

announcement

To enable viewing increasingly larger and larger data sets in Plot and State Transition panels, we’ve redesigned how Foxglove handles and delivers data for local files and cloud data. This unlocks viewing multi-millions of data points per series—all while supporting smooth zooming and panning.

This improvement is particularly useful for signal analysis in robotics. You can drill into vehicle state transitions for hours of recorded tests, visualize critical topics with dense data, or map large-scale environmental scans. Foxglove automatically handles downsampling to keep the app responsive while preserving the visual fidelity and outliers in your signals.

Several changes across the entire stack—frontend and backend—power these improvements.

In the app we’ve introduced a new API for fetching topic and series data over the entire time range. This API handles caching, deserialization, and message delivery to the panel while minimizing limited frontend app memory usage. Panels also received an overhaul in how they manage this data. The Plot and State Transition panels implemented improvements to how they store and downsample datums to store 10s and even 100s of millions of data points.

A Foxglove panel plotting 10 million data points.

On the backend we implemented APIs to stream specific fields from messages without streaming the entire topic. Our streaming APIs were already optimized to stream specific topics from a file. These improvements extend this to fields and even subfields for messages. Instead of transmitting entire messages, the server applies structured message paths—composed of field projections, array slicing, and conditional filters—to extract just the necessary values. The result is a reduced and focused data stream, significantly improving performance and bandwidth usage. This turns what could be a multi-hundred megabyte or even gigabyte network response into a few 10s of megabytes.

These enhancements improve the efficiency and performance by minimizing the volume and complexity of streamed data. You benefit directly from faster data loading, lower memory usage, and more responsive interfaces during your robot development, debugging, and telemetry inspection, all without needing to manually configure or filter raw message streams themselves.

If you’re building a custom panel for specialized visualization and want to access messages across an entire time range, you can tap into these enhancements through the extension API. You can request entire messages on a topic or specific fields from a message using the /data/stream endpoint.

Fast, reliable access to data is a cornerstone of Foxglove’s mission to empower developers building intelligent physical systems. From low-level control loops to high-level autonomy stacks, Foxglove gives you the tools to visualize, inspect, and debug complex behavior in real time. Whether you’re iterating on perception models, tuning controllers, or validating full-system integration, Foxglove helps you move faster and build reliable autonomy with confidence.

Read more

Start building with Foxglove.

Get started