Fixing the Safari spinning beachball

spinning beachball of death

Safari users know about the “spinning beachball”—when using the browser, Mac OS X’s modal wait cursor appears for no reason, sometimes while you’re in the middle of typing or scrolling a page. I had been experiencing the beachball periodically over the last few months and my fix had been to quit and restart the browser—or, when it got especially bad, my PowerBook. Then I installed the public beta of NetNewsWire 2.0 and for the first time noticed the same beachball activity there. That inspired me to seek a fix.

I thought the two might be related, since the new built-in browser in NNW 2.0 uses WebKit, the browser framework classes that also underpin Safari. I wondered whether the same cause was at the root of both SBODs.

I first tried the number one suggestion for the problem from Google, which was disabling auto-fill for forms in Safari (choose Preferences from the Safari menu, click AutoFill, and turn off the third checkbox). This didn’t do anything. I then tried emptying Safari’s cache. Also nothing.

The last thought I had was that there was a problem with the underlying WebKit libraries. The only problem is that there wasn’t a clean way to rebuild them that I was aware of. So I went for a brute force method: I downloaded and re-installed Safari 1.2. After a reboot, I tried to run Safari, and it was fast, no beachball. I then tried running NNW, and it worked smoothly as well.

I don’t really like this solution, because it doesn’t isolate a fix. The problem could have been corrupted binaries, or it could have been prebinding that needed fixing—the reinstallation accomplished both. It also might leave me vulnerable. I don’t know whether the Safari 1.2 standalone download includes some of the security fixes that have been made since the browser was released. Finally, I am noting some irregularities with pop-up menus reporting “Localized String Not Found” in the place of some options. Nevertheless, my browsing experience is generally faster, so I thought this might help some others.