ImmersiveMap is a native Swift + Metal vector-tile map engine for SwiftUI, running natively on iOS (UIKit) and macOS (AppKit) - no Mac Catalyst, no WebView, no JavaScript bridge.
Features
- SwiftUI
ImmersiveMapViewwith builder-style modifiers (.camera,.tileProvider,.mapStyle,.labelSettings, …); the public API is identical on iOS and macOS. - Native Metal rendering pipeline (on-demand frame loop, multi-pass render graph).
- Native iOS (UIKit) and macOS (AppKit) hosts behind a single SwiftUI surface.
- Mapbox vector tile provider (
MapboxTileProvider/MapboxMapStyle). - OpenStreetMap / Shortbread provider (
OpenStreetMapTileProvider/OpenStreetMapMapStyle). - Custom tile providers via
ImmersiveMapTileProvider/VectorTileProvider. - Globe and flat presentation with continuous morphing between sphere and plane; the day/night terminator fades out as the camera zooms into the surface.
- Labels, starfield, and avatar / live markers.
- Disk (raw + prepared) and in-memory tile caches.
Requirements
- Swift 6.0+, Xcode 16+
- iOS 18+ or macOS 15+ (native AppKit, not Mac Catalyst)
- A Metal-capable device or simulator
Known Limitations
- The public API is unstable and may change.
- Documentation is incomplete.
- Not production-ready yet.
- Not a drop-in replacement for Mapbox, MapLibre, or MapKit.
Install: add https://github.com/artembobkin/ImmersiveMap.git as a Swift Package dependency and select 0.1.1.