{"action":"closed","issue":{"url":"https://api.github.com/repos/reactjs/react-router/issues/3441","repository_url":"https://api.github.com/repos/reactjs/react-router","labels_url":"https://api.github.com/repos/reactjs/react-router/issues/3441/labels{/name}","comments_url":"https://api.github.com/repos/reactjs/react-router/issues/3441/comments","events_url":"https://api.github.com/repos/reactjs/react-router/issues/3441/events","html_url":"https://github.com/reactjs/react-router/issues/3441","id":153812167,"number":3441,"title":"iOS 9.3 limits the number of times pushState can be called","user":{"login":"iatzmon","id":1395953,"avatar_url":"https://avatars.githubusercontent.com/u/1395953?v=3","gravatar_id":"","url":"https://api.github.com/users/iatzmon","html_url":"https://github.com/iatzmon","followers_url":"https://api.github.com/users/iatzmon/followers","following_url":"https://api.github.com/users/iatzmon/following{/other_user}","gists_url":"https://api.github.com/users/iatzmon/gists{/gist_id}","starred_url":"https://api.github.com/users/iatzmon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iatzmon/subscriptions","organizations_url":"https://api.github.com/users/iatzmon/orgs","repos_url":"https://api.github.com/users/iatzmon/repos","events_url":"https://api.github.com/users/iatzmon/events{/privacy}","received_events_url":"https://api.github.com/users/iatzmon/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-05-09T16:09:24Z","updated_at":"2016-05-10T11:17:35Z","closed_at":"2016-05-10T11:17:35Z","body":"Hi,\r\nThis isn't a react-router issue per se, but it looks like since version 9.3 of iOS Apple has limited the number of times a page can call the pushState API to 100 times. Any further attempt causes the following exception to be thrown:\r\n\r\n`SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent.`\r\n\r\nYou can read more about it [here](https://forums.developer.apple.com/thread/36650).\r\n\r\nIt seems that this is their (terrible) solution for an exploit using this API.\r\nMy app has many pages and can easily reach more than a 100 router transitions. Currently, the only workaround I can think of for this problem is to catch this exception and reload the application once it happens with the requested route, which resets the pushState counter back to 0.\r\nI tried to define the onError property for my router in order to handle the exception but it doesn't get called when it occurs, it seems the only way to do it is to wrap each call to push and replace with a try/catch block locally and handle it there.\r\nDo you have a better suggestion on how to handle this globally in my app?\r\n\r\nThanks"}}