There’s been conjecture of late regarding the increased popularity that Safari would have if it supported favicons in its tabs. For light users of the web who surf and do not build, it’s conceivable that this could indeed be the deciding factor in determining whether to use Safari or Chrome.

For those who are building the future World Wide Web however, there’s a more substantial reason why Safari is unusable. Here’s a screenshot of my Activity Monitor from this past Wednesday. As you can see, Safari was taking nearly 18GB of memory, some of which was virtual memory, since my MacBook Pro has only 16GB of physical memory. Virtual memory is substantially slower than physical memory, which means my computer was running at a crawl. The only thing to do was to quit Safari.

I've blurred out a work-related domain, because I'm super private like that.

What was I doing that caused Safari to need this much memory? I was running Webpack Hot Module Replacement in a VueJS application. This is standard stuff for Chrome though; I’m running HMR more hours than not when I’m at my computer. But I had Safari open on this particular day because I was trying to troubleshoot a bug that was specific to Safari, which is pretty much all that I ever use Safari for.1 And Safari just couldn’t handle it. This wasn’t a fluke, either. Every time I open up Safari with HMR running, this happens.

That Safari gradually demands more and more memory is not unique to me, either. Andrew Hodgkinson writes at Stack Exchange:

I’ve seen this ever since Safari 8 on OS X 10.9.5, OS X 10.10.x all versions with Safari 8 and sadly in Safari 9 on all El Capitan betas to date, too. The Safari memory leak in my case is severe and Safari has to be completely quit & restarted often. It only seems to happen if you tend to have a few windows open a lot, which you “reuse”; but overall, Safari just grows and grows (by many GB).

This jives with my experience. I needn’t have many Safari tabs open when this problem occurs. I can have 20 or 30 Chrome tabs open, no problem, but if I have just 2-3 Safari tabs open and one of them has an HMR socket connection, Safari’s toast. Andrew goes on:

Suggestions about “putting in more memory” are absurd. I’ve a 16GB MacBook Pro laptop which is the maximum configuration of soldered-on (“pro” my rear-end!) memory which Apple provide. It simply isn’t possible to add more. Memory pressure and slowdown tend to get critical when Safari exceeds 10GB. I did once persist to the point where it was using over 13GB. When restarted with all tabs manually revisited to ensure all pages are loaded, it’ll go back to about 2.5Gb. A leak of that size is utterly indefensible.

This is a stark change in behaviour from Safari 7, which behaved basically fine in this regard - yet there are surprisingly few reports of it online. It isn’t a subtle problem and Safari 8 has been around for ages. Others would have noticed, yet few report it.

You know why few people report it? Because no serious frontend developer uses Safari. Safari’s great if you’re just casually surfing around. It’s unusable if you’re trying to get work done. At least, the kind of work that the people in my world do.

  1. As an aside, one great way to learn to dislike a piece of software is to only open it when you’re trying to fix bugs that are specific to that software. As far as perceptions go, I view Safari on equal footing to FireFox and Internet Explorer for this reason. ↩︎