@loaders.gl/core
The core API for loaders.gl, a framework-independent toolkit for loading and parsing big-data, 3D, and geospatial formats.
Repository Health
Technical Analysis
@loaders.gl/core is the core API of loaders.gl, a framework in the vis.gl suite that provides a collection of framework-independent loaders and writers focused on geospatial, 3D, and big-data visualization. The core package defines the universal load, parse, and encode functions that every loaders.gl format module plugs into.
Rather than parse a specific format itself, the core exposes a consistent interface — parse, parseInBatches, load, encode, and loader registration — so you can read anything from glTF, LAS point clouds, and 3D Tiles to CSV, Parquet, Arrow, and shapefiles through the same API. It supports streaming and batched parsing, Web Worker offloading, and pluggable fetch and filesystem backends.
What You Get
- Universal
parse,parseSync,parseInBatches,load, andloadInBatchesfunctions that work with any loaders.gl loader - Table and binary
encodefunctions plus writer support for round-tripping data - Loader registration and automatic loader selection by content type or extension
- Streaming and batched iteration, Web Worker offloading, and pluggable fetch and filesystem backends
Common Use Cases
- Loading 3D assets and point clouds (glTF, LAS, 3D Tiles, PLY, OBJ) for WebGL/WebGPU rendering
- Parsing large geospatial datasets (GeoJSON, shapefile, Parquet, Arrow, FlatGeobuf) in the browser or Node
- Streaming and batch-parsing big tabular data without blocking the main thread
Under The Hood
Architecture
The core package (modules/core) is deliberately format-agnostic: its src/lib/api directory holds the pipeline verbs — parse, parse-in-batches, load, encode, select-loader, register-loaders, create-data-source — while individual formats live in sibling monorepo modules (gltf, las, 3d-tiles, csv, parquet, arrow, shapefile, and dozens more). Fetching is abstracted through lib/fetch, iteration through iterators (makeIterator, makeStream), and worker orchestration through worker-utils, so any loader can be driven synchronously, asynchronously, in batches, or on a worker thread through the same calls.
Tech Stack
Written in TypeScript and organized as a large Yarn-workspaces monorepo of ~50 modules. The core depends on the internal @loaders.gl/loader-utils, @loaders.gl/schema, @loaders.gl/schema-utils, and @loaders.gl/worker-utils packages plus @probe.gl/log, and targets both browser and Node environments.
Code Quality
As a mature vis.gl project with 2,800+ commits and 100+ contributors, loaders.gl maintains extensive documentation, per-module test suites, and CI. The core cleanly separates the API surface from transport, iteration, and worker concerns, and the monorepo layout keeps each format’s parsing logic isolated and independently testable.
API Design
The public API is small and composable: pick a loader, call parse(data, Loader) or load(url, Loader), and receive a normalized result. The same verbs scale up to parseInBatches for streaming and accept options for workers and fetch behavior, so developers learn one interface and reuse it across every format. Excellent website documentation and consistent naming keep the learning curve reasonable despite the breadth of supported formats.