✨ Features
- Add disabled icon to GeolocateControl if user denies geolocation permission. [8871](https://github.com/mapbox/mapbox-gl-js/pull/8871))
- Add `outofmaxbounds` event to GeolocateControl, which is emitted when the user is outside of `map.maxBounds` ([8756](https://github.com/mapbox/mapbox-gl-js/pull/8756)) (h/t [MoradiDavijani](https://github.com/MoradiDavijani))
- Add `mapboxgl.getRTLTextPluginStatus()` to query the current status of the `rtl-text-plugin` to make it easier to allow clearing the plugin when necessary. (ref. [7869](https://github.com/mapbox/mapbox-gl-js/issues/7869)) ([#8864](https://github.com/mapbox/mapbox-gl-js/pull/8864))
- Allow `hash` Map option to be set as a string, which sets the map hash in the url to a custom query parameter. ([8603](https://github.com/mapbox/mapbox-gl-js/pull/8603)) (h/t [SebCorbin](https://github.com/SebCorbin))
🍏 Improvements
- Fade symbols faster when zooming out quickly, reducing overlap. ([8628](https://github.com/mapbox/mapbox-gl-js/pull/8628))
- Reduce memory usage for vector tiles that contain long strings in feature properties. ([8863](https://github.com/mapbox/mapbox-gl-js/pull/8863))
🐞 Bug Fixes
- Fix `text-variable-anchor` not trying multiple placements during collision with icons when `icon-text-fit` is enabled. ([8803](https://github.com/mapbox/mapbox-gl-js/pull/8803))
- Fix `icon-text-fit` not properly respecting vertical labels. ([8835](https://github.com/mapbox/mapbox-gl-js/pull/8835))
- Fix opacity interpolation for composition expressions. ([8818](https://github.com/mapbox/mapbox-gl-js/pull/8818))
- Fix rotate and pitch events being fired at the same time. ([8872](https://github.com/mapbox/mapbox-gl-js/pull/8872))
- Fix memory leaks that occurred during tile loading and map removal.([8813](https://github.com/mapbox/mapbox-gl-js/pull/8813) and [#8850](https://github.com/mapbox/mapbox-gl-js/pull/8850))
- Fix web-worker transfer of `ArrayBuffers` in environments where `instanceof ArrayBuffer` fails.(e.g `cypress`) ([8868](https://github.com/mapbox/mapbox-gl-js/pull/8868))