It would be amazing if we could interrupt the loading of the plugin store, as of now, if you accidentally click the plugin store you have to wait till it's loaded completely before you can navigate to a different page.
It might sounds like a silly and small problem, but as my internet connection isn't the best, which means it sometimes takes around 20 seconds before the plugin page is loaded. And unfortunately I misclick it a lot. Easily 20 times during a full working day.
To put this in perspective:
20 seconds every misclick =
That means on yearly basis I am waiting on a request for 26 hours and 24 minutes!

This came up on Twitter recently, and weβve been looking into how to fix it ever since. It turned out it was a side effect of how the Plugin Store loads its data βΒ rather than the JS making the API request directly, it sends a request to the Craft install, which then makes the actual API request, and then responds to JS with the APIβs response.
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β β β β β β
β β β β β β
β ββββββΆβ ββββββΆβ β
β JavaScript β β Craft β β API β
β βββββββ βββββββ β
β β β β β β
β β β β β β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
Problem with that is that a lot of environments (especially local) have a small limit (often 1) on the number of concurrent connections that can be handled. And when you navigate away from a page in a web browser, the web browser doesnβt immediately close any of the existing requests itβs loading βΒ until the subsequent page request has received a response. And if that next page request is to Craft, and Craft is tied up being the middleman for this API request, then it wonβt be able to process the subsequent page request until the API request is completed.
Soβ¦ there are a couple things we are doing to improve things. First is to stop using Craft as a middleman for JS API requests, unless thereβs a good reason to (i.e. the API response is going to have an effect on Craftβs state.) Also we are splitting up the API requests into much smaller, more cacheable chunks, so A) thereβs a much better chance that the response comes back immediately thanks to being cached, and B) even if itβs not cached, there wonβt be nearly as much data to generate in the first place.
We expect these changes to be ready in the next 2-3 weeks.
Great to see this is getting its deserved attention!
@brandonkelly interesting problem and analysis, caught the eye.
Digging a little earlier in morning, and since you're using Axios already, seems you may be able to back out right away now that you're going to do it all in the browser.
http://axios-js.com/docs/index.html#Cancellation
There's some interesting background perhaps via https://blog.bloomca.me/2017/12/04/how-to-cancel-your-promise.html and
https://medium.com/@bramus/cancel-a-javascript-promise-with-abortcontroller-3540cbbda0a9, if the straightforward Axios implementation makes these kind of side notes.,
On the humor side, ran into this mis-type on another article this morning: 'use-aster-free bug'...
Yes, sorry, that is another part of this. Once the JS is pinging the API directly, we will be able to start cancelling the request if the user is trying to navigate away from the page.
cool...
We just released Craft 3.3.16 with a fix for this!
Most helpful comment
This came up on Twitter recently, and weβve been looking into how to fix it ever since. It turned out it was a side effect of how the Plugin Store loads its data βΒ rather than the JS making the API request directly, it sends a request to the Craft install, which then makes the actual API request, and then responds to JS with the APIβs response.
Problem with that is that a lot of environments (especially local) have a small limit (often
1) on the number of concurrent connections that can be handled. And when you navigate away from a page in a web browser, the web browser doesnβt immediately close any of the existing requests itβs loading βΒ until the subsequent page request has received a response. And if that next page request is to Craft, and Craft is tied up being the middleman for this API request, then it wonβt be able to process the subsequent page request until the API request is completed.Soβ¦ there are a couple things we are doing to improve things. First is to stop using Craft as a middleman for JS API requests, unless thereβs a good reason to (i.e. the API response is going to have an effect on Craftβs state.) Also we are splitting up the API requests into much smaller, more cacheable chunks, so A) thereβs a much better chance that the response comes back immediately thanks to being cached, and B) even if itβs not cached, there wonβt be nearly as much data to generate in the first place.
We expect these changes to be ready in the next 2-3 weeks.