What's New

ImmersiveMap 0.1.1

2026-07-10T21:38:20Z

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 ImmersiveMapView with 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.

ImmersiveMap

CI Swift Versions Platforms Release License

ImmersiveMap demo

Native Swift + Metal map rendering engine for SwiftUI apps.

Status: early alpha. The public API is not stable yet. Not production-ready. Not a drop-in replacement for Mapbox, MapLibre, or MapKit.

ImmersiveMap is an experimental native Swift + Metal map rendering engine for SwiftUI apps on Apple platforms. It is built for developers who need direct control over map rendering, custom vector tile providers, globe rendering, and native SwiftUI integration - without a WebView or a JavaScript bridge.

Features

Feature Status
SwiftUI integration Alpha
Native iOS (UIKit host) Alpha
Native macOS (AppKit host, no Catalyst) Alpha
Native Metal renderer Alpha
Mapbox vector tiles Alpha
OpenStreetMap / Shortbread provider Alpha
Globe rendering Alpha
Labels Alpha
Avatars / live markers Alpha
Disk / memory tile cache Alpha
Offline maps Planned
3D Tiles Planned
Stable public API Not yet
Production readiness Not yet

Requirements

  • Swift 6.0+
  • Xcode 16+
  • iOS 18+
  • macOS 15+ (native AppKit, not Mac Catalyst)
  • Metal-capable device or simulator

Installation

ImmersiveMap is available on the Swift Package Index.

Add ImmersiveMap as a Swift Package dependency:

https://github.com/artembobkin/ImmersiveMap.git

Or in Xcode:

  1. Open your project.
  2. Select File → Add Package Dependencies…
  3. Paste the repository URL.
  4. Add the ImmersiveMap library to your app target.

Quick Start

import SwiftUI
import ImmersiveMap

struct ContentView: View {
    @State private var camera = ImmersiveMapCameraController()

    var body: some View {
        ImmersiveMapView()
            .cameraController(camera)
            .enableCameraUIControls()
            .ignoresSafeArea()
    }
}

ImmersiveMap ships with a built-in tile provider, so the snippet above renders a map out of the box - no token or account required. The same SwiftUI code runs natively on iOS (UIKit host) and macOS (AppKit host): ImmersiveMapView bridges to the platform view internally.

To use Mapbox vector tiles instead, attach a provider and style:

ImmersiveMapView()
    .tileProvider(MapboxTileProvider(accessToken: "your-mapbox-public-token"))
    .mapStyle(MapboxMapStyle())
    // camera and other modifiers...

Example Apps

The repository includes two host apps that reference the package locally:

  • ImmersiveMapIOS - iOS demo app
  • ImmersiveMapMac - native macOS demo app (AppKit, not Catalyst)

To run:

  1. Clone the repository.
  2. Open ImmersiveMap.xcworkspace.
  3. Select the ImmersiveMapIOS or ImmersiveMapMac scheme.
  4. Add your Mapbox public token if you use the Mapbox provider (see the launch environment variables below).
  5. Build and run.

The host apps read optional launch environment variables: IMMERSIVE_MAP_TILE_BASE_URL, IMMERSIVE_MAP_AUTH_TOKEN, IMMERSIVE_MAP_MAPBOX_ACCESS_TOKEN, IMMERSIVE_MAP_MAPBOX_TILESET_ID. If the Mapbox token is present, the host apps use the Mapbox Vector Tiles API; otherwise they fall back to the OpenStreetMap / Shortbread provider.

Architecture

See Documentation/docs/architecture.md.

Screenshots

ImmersiveMap globe Europe view

ImmersiveMap globe overview

Known Limitations

  • Early alpha; the public API may change.
  • Not production-ready yet.
  • Not a drop-in replacement for Mapbox, MapLibre, or MapKit.
  • Currently focused on Apple platforms.
  • Requires Metal.
  • Tile provider terms and attribution are the responsibility of the app developer.
  • Performance characteristics are still being measured.

Roadmap

See Documentation/docs/roadmap.md.

Testing

Run tests with Swift Package Manager:

swift test

Or run the ImmersiveMapTests target from Xcode.

Attribution and Tile Provider Terms

ImmersiveMap is MIT-licensed, but map tiles, styles, and geospatial datasets may have their own licenses and attribution requirements. When using Mapbox, OpenStreetMap, or other providers, make sure your app follows their terms and attribution rules.

Contributing

ImmersiveMap is currently maintained as a single-maintainer experimental project. Issues and feedback are welcome. Pull requests are accepted for documentation, examples, bug fixes, and tests. See CONTRIBUTING.md.

License

ImmersiveMap is available under the MIT license. See LICENSE.

Commercial Support

I am available for consulting and custom ImmersiveMap integrations.

Contact: @BobkinArtem

Description

  • Swift Tools 6.0.0
View More Packages from this Author

Dependencies

Last updated: Mon Jul 13 2026 10:55:30 GMT-0900 (Hawaii-Aleutian Daylight Time)