Skip to content

Latest commit

 

History

History
102 lines (79 loc) · 3.87 KB

File metadata and controls

102 lines (79 loc) · 3.87 KB

Roadmap

Phase 1: Project skeleton

  • Monorepo structure with Bun workspaces
  • TypeScript types and interfaces
  • React component exports
  • Nitro config and initial HybridView spec
  • ESM build pipeline (react-native-builder-bob)
  • ESLint, Prettier, GitHub Actions CI
  • Expo example app
  • Documentation (README, architecture, contributing)

Phase 2: Nitro View foundation

  • Finalize MapView.nitro.ts HybridView spec
  • Run Nitrogen codegen
  • Implement HybridMapView in Swift (iOS)
  • Implement HybridMapView in Kotlin (Android)
  • Wire React MapView to Nitro HybridView via getHostComponent
  • Verify native view renders in example app (bun example ios / bun example android)

Phase 3: iOS — MapKit integration

  • Add MapKit framework dependency
  • Render MKMapView in HybridMapView
  • Support mapType (standard, satellite, hybrid; terrain falls back to standard on iOS)
  • Camera control (setCamera, animateCamera)
  • Region change events
  • Press and long-press events

Phase 4: Android — Google Maps integration

  • Add Google Maps SDK dependency
  • Render MapView in HybridMapView
  • Support mapType (standard, satellite, hybrid, terrain)
  • Camera control
  • Region change events
  • Press and long-press events

Phase 5: Overlays

  • Decide overlay architecture (per-view vs data-driven)
  • Marker rendering with title/subtitle callouts
  • Draggable markers
  • Polyline rendering with styling
  • Polygon rendering with fill/stroke
  • Circle rendering with radius
  • Overlay press events

Phase 6: Events and gestures

Delivered incrementally during Phases 3–5; polished for platform consistency in Phase 6.

  • onRegionChange / onRegionChangeComplete
  • onPress / onLongPress on map
  • onPress / onDragEnd on markers
  • onPress on polylines, polygons, circles
  • onMapReady callback

Phase 7: Advanced features

  • Marker clustering
  • Custom map styles
  • User location display
  • Compass and scale controls
  • Edge padding for camera fitting

Phase 8: Polish and release

  • Multi-provider MapView architecture
  • Google Maps provider on iOS
  • Public README and package metadata
  • Expo setup documentation
  • CI quality checks
  • Release performance benchmark pass
  • Migration guide from react-native-maps
  • npm publish (v1.0.0)
  • GitHub release with changelog

Open decisions

Decision Options Status
Overlay architecture Per-view native vs data-driven descriptors Data-driven (Option B)
Clustering library Custom vs platform-native Platform-native (MKClusterAnnotation / maps-utils)
Provider architecture In-place SDK switching vs adapter remount Provider adapter + React remount
Overlay animations Reanimated core path vs native descriptors Native descriptor animations; Reanimated optional
Custom view markers Snapshot-only vs live/hybrid native views Hybrid: live MapKit, snapshot Google (ADR 0004)
Offline support Tile caching strategy Future consideration

Custom view markers (ADR 0004)

  • Phase 0: apply MarkerDescriptor image, anchor, centerOffset, rotation, flat, and opacity on iOS Google
  • Phase 1: <Marker> children via snapshot into existing image pipeline
  • Phase 2: <MarkerView> HybridView — live MapKit views, snapshot on Google

Future provider work

  • OpenStreetMap-backed provider
  • Mapbox provider
  • Provider-specific install and configuration docs