Mapbox iOS Integration Patterns
Official patterns for integrating Mapbox Maps SDK v11 on iOS with Swift, SwiftUI, and UIKit.
Use this skill when:
- Installing and configuring Mapbox Maps SDK for iOS
- Adding markers and annotations to maps
- Showing user location and tracking with camera
- Adding custom data (GeoJSON) to maps
- Working with map styles, camera, or user interaction
- Handling feature interactions and taps
Official Resources:
Installation & Setup
Requirements
- iOS 14+
- Xcode 15+
- Swift 5.9+
- Free Mapbox account
Step 1: Configure Access Token
Add your public token to Info.plist:
Get your token: Sign in at mapbox.com
Step 2: Add Swift Package Dependency
- File → Add Package Dependencies
- Enter URL:
https://github.com/mapbox/mapbox-maps-ios.git - Version: "Up to Next Major" from
11.0.0 - Verify four dependencies appear: MapboxCommon, MapboxCoreMaps, MapboxMaps, Turf
Alternative: CocoaPods or direct download (install guide)
Map Initialization
SwiftUI Pattern
Basic map:
With ornaments:
UIKit Pattern
Add Markers
The SDK offers three ways to place a point on the map. Pick the simplest one that fits.
Agent note: A SwiftUI Mapbox sketch is incomplete without at least one annotation (Marker, PointAnnotation, or MapViewAnnotation). Do not ship a bare Map { } with no pin.
Which API should I use?
For hundreds or thousands of features, use a style layer (SymbolLayer on a GeoJSONSource) instead of annotations.
Markers API (recommended for simple cases, SwiftUI)
Multiple markers from a collection:
Scaling note.
MarkerandPointAnnotationeach create their own view or symbol entry per pin — fine up to about 100 markers. For larger datasets (hundreds or thousands of features — common with open-ended GeoJSON feeds), load the data into aGeoJSONSourceand render it with aSymbolLayerinstead. That scales to thousands of features and enables clustering.
PointAnnotation (custom image)
SwiftUI:
UIKit:
Multiple markers:
Show User Location
Step 1: Add location permission to Info.plist:
Step 2: Request permissions and show location:
Performance Best Practices
Reuse Annotation Managers
Batch Annotation Updates
Memory Management
Use Standard Style
Troubleshooting
Map Not Displaying
Check:
- ✅
MBXAccessTokenin Info.plist - ✅ Token is valid (test at mapbox.com)
- ✅ MapboxMaps framework imported
- ✅ MapView added to view hierarchy
- ✅ Correct frame/constraints set
Style Not Loading
Performance Issues
- Use
.standardstyle (recommended and optimized) - Limit visible annotations to viewport
- Reuse annotation managers
- Avoid frequent style reloads
- Batch annotation updates
Reference Files
Load these references when the task requires deeper patterns:
references/annotations.md— Circle, Polyline, Polygon Annotationsreferences/location-tracking.md— Camera Follow User + Get Current Locationreferences/custom-data.md— GeoJSON: Lines, Polygons, Points, Update/Removereferences/camera-styles.md— Camera Control + Map Stylesreferences/interactions.md— Featureset Interactions, Custom Layer Taps, Long Press, Gestures


