✨ Features and improvements
- Add methods for changing a vector tile source dynamically (e.g. `setTiles`, `setUrl`). [8048](https://github.com/mapbox/mapbox-gl-js/pull/8048) (h/t [stepankuzmin](https://github.com/stepankuzmin))
- Add a `filter` option for GeoJSON sources to filter out features prior to processing (e.g. before clustering). [9864](https://github.com/mapbox/mapbox-gl-js/pull/9864)
- Vastly increase precision of `line-gradient` for long lines. [9694](https://github.com/mapbox/mapbox-gl-js/pull/9694)
- Improve `raster-dem` sources to properly support the `maxzoom` option and overzooming. [9789](https://github.com/mapbox/mapbox-gl-js/pull/9789) (h/t [brendan-ward](brendanhttps://github.com/ward))
🐞 Bug fixes
- Fix a bug where bearing snap interfered with `easeTo` and `flyTo` animations, freezing the map. [9884](https://github.com/mapbox/mapbox-gl-js/pull/9884) (h/t [andycalder](https://github.com/andycalder))
- Fix a bug where a fallback image was not used if it was added via `addImage`. [9911](https://github.com/mapbox/mapbox-gl-js/pull/9911) (h/t [francois2metz](https://github.com/francois2metz))
- Fix a bug where `promoteId` option failed for fill extrusions with defined feature ids. [9863](https://github.com/mapbox/mapbox-gl-js/pull/9863)
🛠️ Workflow
- Renamed the default development branch from `master` to `main`.