Bounded memory
Ring buffer with configurable capacity. Memory stays flat no matter how fast your stream is or how long it runs.
Off-thread ingest
Chunk processing runs in a dedicated Web Worker. Your main thread and render loop never pay ingest cost.
WebGPU compute culling
A WGSL compute shader handles frustum culling and importance sampling on the GPU. Automatic WebGL fallback on every other browser.
Importance engine
One score drives both buffer eviction and per-frame sampling. High-value points survive longer and render more often.
Static file loading
PLY, XYZ, LAS, LAZ, and COPC files parse off-thread with progressive rendering. Points appear as they load.
React-native API
Drop-in components and hooks with full TypeScript types. Render live points in under 10 lines of code.
Up in minutes
Mount the component, connect your stream, push chunks. The buffer, worker, and renderer are all managed for you.
Read the quick startimport { StreamedPointCloud } from "pointflow";
import { createWebSocketAdapter } from "pointflow";
function Scene() {
const adapter = createWebSocketAdapter(
"wss://your-lidar-stream"
);
return (
<StreamedPointCloud
adapter={adapter}
maxPoints={50_000}
/>
);
}
