This ticket is a continue of discussion https://github.com/mapbox/mapbox-gl-js/issues/10162#issuecomment-742160053
Why I think that paying for each new mapbox instance is not the best solution. Some examples:
https://www.dropbox.com/s/i0zsi2dmf665l2g/Screen%20Recording%202020-12-10%20at%2012.18.02.mov?dl=0
Possible solution: use the same map instance to reduce cost
https://www.dropbox.com/s/kv2dqn9mv36rk3o/Screen%20Recording%202020-12-10%20at%2012.19.44.mov?dl=0
Possible solution: hide the map inside div with display: none, and do magic with styles, center and data before rendering a new modal window.
https://www.dropbox.com/s/5ky1iewfocui3do/Screen%20Recording%202020-12-10%20at%2012.21.14.mov?dl=0
Possible solution: to render a new page URL without page reload, so to make SPA from MPA site.
I think that using sessions for billing is more fair solution. For example, calc all new map instances as single one if there is no delay between invocation for 20 min. If 20 minutes have passed since the last call of new instance - this is a new session.
@bravecow
I believe, we had similar use cases.
We widely use 2-3-4 maps on one page in sync to compare different types or dates of satellite imagery.
In most cases, we use only our own in-house generated tiles for in-house processed satellite imagery.
We use react for such pages, but each page is separate (not SPA, we have the Rails app).
With v2 all these maps would be billed and it would be crazy expensive.

@bravecow @aleksejleonov Thank you for sharing these cases (cool stuff!)
We see the multiple maps within a page session and mini-map scenarios as valid ways to use GL-JS and are investigating how this can be addressed.
The same map, not SPA, switching between filters changes URL and a new map instance is called:
https://www.dropbox.com/s/5ky1iewfocui3do/Screen%20Recording%202020-12-10%20at%2012.21.14.mov?dl=0
Possible solution: to render a new page URL without page reload, so to make SPA from MPA site
It's not clear from the video - are the filters changing the hash portion of the URL or loading a new webpage? From the video it looks like this can be achieved with a single map instance, using map#setStyle and other runtime styling APIs.
@asheemmamoowala ops, sorry. Forget to record address bar. This switcher changes page URL, for SEO purpose these maps should be accessed on different URL. Since it is not SPA, page fully reloads.
This will be an issue with our application as well. Using frameworks like React it is really common to end up creating new map instances unintentionally. There are ways to avoid it but it puts a high burden on the developer. There are also plenty of cases where it's a legitimate design choice to show multiple maps (see screenshot), and you may not want to discourage it. Of course that's more of a business decision than a technical one.

Some examples of use cases for which the new billing model will lead to a major increase in the cost of Mapbox.
Map embed
If a map is embedded in a web page, a session will be counted on page load.
If the user moves to a different page and comes back after 2 seconds to the page with the map embed, another session is being counted.
With Mapbox GL1.0 and map loads billing, you introduced sessions with 12 hours timeout.
In Mapbox GL2.0, a user can generate 2 different sessions within 2 seconds.
12 hours session is great but as someone suggested, 30 minutes sessions would be reasonable.
Map Creation
We have customers creating and customizing maps through our platform.
In our editor, a user can open multiple maps simultaneously. The main map is used for preview. Other smaller maps are used as “tools” for customizations like drawing, positioning, zoom, pitch...
Those “tools” are designed to be opened for a few seconds and then closed.
A user can open and close those “tools” maps tens of times while editing a map.
This would lead to a very large number of map loads based on the Mapbox GL2.0 definition of map loads.
Similarly for a mobile game. The user will often switch to different views within the game, and then back to the map. A user might load the map dozens of times in a play session.
Just me, doing development on it have already performed ~800 map loads after just a few days....
It's prohibitively expensive, a single player might cost me $1+/m in just map loads. Imagine the bill.
Edit: Some back of the napkin math makes a marginally-successful location-based game with regular switching to and from the map (Say ~50k users), would cost between $35,000 -> $70,000/month in just map loads....
And that's regardless of if you're actually using mapbox tiles or your own tiles, since the new billing model charges you per load regardless of where your assets come from
We have similar issues.
Our use case is a mobile data collection app where a user selects a form to complete and then steps through the form to submit the data. One of the pages of the form _could_ be a map for them to enter a location or polygon. So each time a user starts this form, they could be costing us a map load, and they can do this as many times as they like, so our Mapbox costs now become completely unbounded. This isn't a sustainable business model for us.
Most helpful comment
@bravecow
I believe, we had similar use cases.
We widely use 2-3-4 maps on one page in sync to compare different types or dates of satellite imagery.
In most cases, we use only our own in-house generated tiles for in-house processed satellite imagery.
We use react for such pages, but each page is separate (not SPA, we have the Rails app).
With v2 all these maps would be billed and it would be crazy expensive.