finds.dev← search

// the find

mapbox/mapbox-gl-native

★ 4,453 · C++ · NOASSERTION · updated Jul 2023

Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node.js, and Qt applications, powered by vector tiles and OpenGL

The C++ core rendering engine behind Mapbox's native SDKs for Android, iOS, macOS, Qt, and Node.js. It takes Mapbox Style Specification JSON and renders vector tiles via OpenGL or Metal. This is the engine, not the SDK — most developers should use the platform-specific SDKs that wrap it.

The actor/mailbox concurrency model in include/mbgl/actor/ is well-designed — message-passing between threads with typed mailboxes avoids the shared-state mess typical of rendering engines. The expression system (include/mbgl/style/expression/) is thorough: interpolation, compositing, distance functions, format expressions — the style spec is fully represented in C++ types. Offline support is a first-class citizen with its own file source abstraction, not bolted on. The benchmark suite covers render, tile parsing, filter evaluation, and offline DB — enough to catch regressions without guessing.

Archived since July 2023 — Mapbox replaced this with a proprietary SDK; adopting this means you own the maintenance from here forward, including Metal/Vulkan migration work that never landed. The monorepo structure with platform-specific Android Gradle files mixed into a CMake project is a build system nightmare — getting it to compile on a fresh machine requires fighting submodules, platform toolchains, and underdocumented CMake options simultaneously. No Vulkan backend: OpenGL ES is deprecated on Apple platforms and losing ground on Android, so any serious investment here starts with a graphics API port. The Node.js bindings are effectively dead — last meaningful work predates the archive and the ecosystem has moved to maplibre-gl-native for open-source needs.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →