My current job has pretty low standards for maps in reports, and unfortunately QGIS has a dealbreaker issue: I'd like to just import a basemap, display my data on top, and then export as an image; however, in QGIS the resolution of the basemap scales with the resolution of the export. So, for example, if you want a 300 dpi image, all the city and and street labels (from the basemap) will be microscopic. It's baffling that the software does this, and as a result I have to use ArcMap for these simple maps.
QGIS will, for raster basemaps, fetch the detailed version to get you your high DPI detail but this of course involves stitching together lots of tiles from the basemap's lower zoom levels - which then have small labels. For raster maps which are not labelled, it makes complete sense and produces a much better result than the alternative (picking the "scale based" zoom level and interpolating).
This is kind of the only "right" answer when dealing with raster basemaps. It's either pixellated or going to be rendered "too small" for the zoom level.
Vector basemaps don't have this problem, and QGIS supports them, so that's the way to go if you can get data. QGIS can then render at the required DPI in full clarity but with elements scaled/positioned appropriately.
I was about to firmly disagree, but perhaps my issue is that I've been assuming XYZ tiles were vector. Maybe _some_ are vector, based on the connection? If I'm remembering right, I imported a load of XYZ sources, and then never thought twice about them. I should have been more discerning. I'll look deeper into getting some proper vector basemaps.
> This is kind of the only "right" answer when dealing with raster basemaps.
I believe ArcMap uses rasters (when you choose the simple "add data" feature and one of their pre-selected basemaps), but they still render the labels appropriately when you export.