✨ Features
- Add `image` expression operator to determine image availability ([8684](https://github.com/mapbox/mapbox-gl-js/pull/8684))
- Enable `text-offset` with variable label placement ([8642](https://github.com/mapbox/mapbox-gl-js/pull/8642))
🍏 Improvements
- Faster loading and better look of raster terrain ([8694](https://github.com/mapbox/mapbox-gl-js/pull/8694))
- Improved code documentation around resizing and {get/set}RenderedWorldCopies and more ([8748](https://github.com/mapbox/mapbox-gl-js/pull/8748), [#8754](https://github.com/mapbox/mapbox-gl-js/pull/8754))
- Improve single vs. multi-touch zoom & pan interaction ([7196](https://github.com/mapbox/mapbox-gl-js/issues/7196)) ([#8100](https://github.com/mapbox/mapbox-gl-js/pull/8100))
🐞 Bug fixes
- Fix rendering of `collisionBox` when `text-translate` or `icon-translate` is enabled ([8659](https://github.com/mapbox/mapbox-gl-js/pull/8659))
- Fix `TypeError` when reloading a source and immediately removing the map ([8711](https://github.com/mapbox/mapbox-gl-js/pull/8711))
- Adding tooltip to the geolocation control button ([8735](https://github.com/mapbox/mapbox-gl-js/pull/8735)) (h/t [BAByrne](https://github.com/BAByrne))
- Add `originalEvent` property to NavigationControl events ([8693](https://github.com/mapbox/mapbox-gl-js/pull/8693)) (h/t [stepankuzmin](https://github.com/stepankuzmin))
- Don't cancel follow mode in the GeolocateControl when resizing the map or rotating the screen ([8736](https://github.com/mapbox/mapbox-gl-js/pull/8736))
- Fix error when calling `PopuptrackPointer` before setting its content or location ([8757](https://github.com/mapbox/mapbox-gl-js/pull/8757)) (h/t [zxwandrew](https://github.com/zxwandrew))
- Respect newline characters when text-max-width is set to zero ([8706](https://github.com/mapbox/mapbox-gl-js/pull/8706))
- Update earcut to v2.2.0 to fix polygon tessellation errors ([8772](https://github.com/mapbox/mapbox-gl-js/pull/8772))
- Fix icon-fit with variable label placement ([8755](https://github.com/mapbox/mapbox-gl-js/pull/8755))
- Icons stretched with `icon-text-fit` are now sized correctly ([8741](https://github.com/mapbox/mapbox-gl-js/pull/8741))
- Collision detection for icons with `icon-text-fit` now works correctly ([8741](https://github.com/mapbox/mapbox-gl-js/pull/8741))