If you get a loading failure, calling didFailLoadWithError on your delegate, the bridge no longer receives or responds to any JS messages passed, as if the bridge connection is severed. In my case, I reload links into the same web view, so after a single failure, no subsequent loads handle JS messages.