Fixing Safari + Saft on Leopard

November 04, 2007

Update: Jeff Harrell and a few others have e-mailed me to let me know that Safari does now have some form of session restoration; see "Reopen All Windows From Last Session" in the "History" menu. Kind of a weird place to put it if you ask me (why not mention it in the preferences?). In any event, there seems to be some slight delay before it "saves" a newly opened window/tab to the restoration 'list,' but it does seem to do this even without a valid "quit" signal, which is great -- I killed the process, and it restored the tabs I had opened since I last "quit." I'm assuming it works the same way when the browser crashes (i.e., if the windows/tabs have been open longer than whatever the delay is, they'll be put in the restoration list). The only thing this implementation doesn't seem to account for is the case where a malignant site is causing Safari to crash; will Safari continue to load this page when you restore the session, or will it give you the option of skipping it?

Update: Hao Li has released a new version of Saft (v10.0.1) that likely fixes the problems outlined below (and conforms to the Input Manager requirements introduced in Leopard).

I finally started messing around with Safari 3 on Leopard1 this weekend and was kind of surprised and disappointed to see that it still doesn't have native support for window/tab restoration (for much more on this multi-year omission, please see Browser session restoration on Mac OS X, which I penned three years ago).

Warranted(!) griping aside, I looked to see if Saft (which I first mentioned in the article linked to above, and which takes care of the restoration issue) had been updated to support Safari v3.0.4 (the version that shipped with Leopard). Turns out, it has been updated to work with the new browser, and so I happily paid my six bucks to upgrade it, even though I could never really use Safari as my primary browser.2

If you didn't already know, Leopard kind of does away with Input Managers,3 which means that for Saft to work, it now has to launch Safari. OK, fine, but when I launch Safari with Saft I get no windows. None. Asking for a new window produces nothing on the screen. However, asking for a new tab does give me a window (with two tabs!), but takes away the address bar. Huh?

I played around with various files and preferences, but no matter what I did, the result was always the same: either no window or a window without an address bar. Finally, out of pure frustration, I just decided to scrap my com.apple.Safari.plist file and start over. Funny enough, this actually did the trick, and now Saft is working as it should.


  1. On Tiger, I installed the Safari 3 beta as soon as it was released, but it never worked quite right. And by quite right, I mean at all. At its most fundamental, a web browser should render a web page; however, on my machine it sometimes took four or five reloads before I saw anything. Moreover, I was never able to get anything to render on first pass — I was required to reload the page at least once, always.   

  2. SafariBlock hasn't been updated, there's still no real extension functionality, and Google Browser Sync doesn't support Safari.   

  3. This was probably done to curtail runtime code injection.   

You should follow me on Twitter here