As a huge web map performance nerd, when I come across a new web map I usually fire up my browser’s DevTools and check out the network tab during a hard reload. I think many web maps, especially those made with esri’s WebApp Builder or ArcGIS Online, are bloated messes. These services are fine for non-essential, quick and dirty web maps, but in my opinion have become over-utilized in the GIS community as a drop-in replacement for purpose-built APIs. I thought it would be interesting to compare hello world package sizes of common web mapping APIs to give myself visibility to the relative impact of mapping API dependencies. Disclaimer, these sizes were measured by me installing a hello world for each library locally on the publish date, so there are no guarantees of ongoing accuracy. ArcGIS Online was measured as average bundle size via network requests.
|API||gzipped build size in kb||uncompressed build size in kb|
Overall I personally recommend Leaflet for simple locator maps, OpenLayers for web apps that mimic traditional desktop GIS functionality, and MapBox GL for larger applications that prioritize visualization quality first and foremost. Personally I have a really hard time seeing the niche for the ArcGIS-JS API given its size and vendor lock-in, unless you absolutely need some of its specific features for your application to run. That being said, I firmly believe any of these libraries are a fantastic choice over a WebApp Builder or ArcGIS Online map in virtually every scenario.
In general I think most GIS managers and coordinators should take a good hard look at their web map offerings and run some real benchmarking tests to see just how heavy their applications are. Every time I use a WebApp Builder or ArcGIS Online map I get frustrated by how ugly and slow these apps are in order to facilitate the quick turnaround time. I once interviewed with a company that had decided to cease all truly custom web map development and only produce lightly customized WebApp Builder maps. Their argument was that fully customized applications are more difficult to maintain and WebApp Builder apps can do most things that they want. I think this mindset leads to junk products that have already lost a large portion of their users to long initial load times.