{"action":"created","issue":{"url":"https://api.github.com/repos/facebook/react/issues/8227","repository_url":"https://api.github.com/repos/facebook/react","labels_url":"https://api.github.com/repos/facebook/react/issues/8227/labels{/name}","comments_url":"https://api.github.com/repos/facebook/react/issues/8227/comments","events_url":"https://api.github.com/repos/facebook/react/issues/8227/events","html_url":"https://github.com/facebook/react/pull/8227","id":187854368,"number":8227,"title":"[Fiber] If error is not caught, unmount entire tree","user":{"login":"acdlite","id":3624098,"avatar_url":"https://avatars.githubusercontent.com/u/3624098?v=3","gravatar_id":"","url":"https://api.github.com/users/acdlite","html_url":"https://github.com/acdlite","followers_url":"https://api.github.com/users/acdlite/followers","following_url":"https://api.github.com/users/acdlite/following{/other_user}","gists_url":"https://api.github.com/users/acdlite/gists{/gist_id}","starred_url":"https://api.github.com/users/acdlite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acdlite/subscriptions","organizations_url":"https://api.github.com/users/acdlite/orgs","repos_url":"https://api.github.com/users/acdlite/repos","events_url":"https://api.github.com/users/acdlite/events{/privacy}","received_events_url":"https://api.github.com/users/acdlite/received_events","type":"User","site_admin":false},"labels":[{"id":196858374,"url":"https://api.github.com/repos/facebook/react/labels/CLA%20Signed","name":"CLA Signed","color":"e7e7e7","default":false},{"id":130714623,"url":"https://api.github.com/repos/facebook/react/labels/GH%20Review:%20review-needed","name":"GH Review: review-needed","color":"fbca04","default":false}],"state":"open","locked":false,"assignee":{"login":"sebmarkbage","id":63648,"avatar_url":"https://avatars.githubusercontent.com/u/63648?v=3","gravatar_id":"","url":"https://api.github.com/users/sebmarkbage","html_url":"https://github.com/sebmarkbage","followers_url":"https://api.github.com/users/sebmarkbage/followers","following_url":"https://api.github.com/users/sebmarkbage/following{/other_user}","gists_url":"https://api.github.com/users/sebmarkbage/gists{/gist_id}","starred_url":"https://api.github.com/users/sebmarkbage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sebmarkbage/subscriptions","organizations_url":"https://api.github.com/users/sebmarkbage/orgs","repos_url":"https://api.github.com/users/sebmarkbage/repos","events_url":"https://api.github.com/users/sebmarkbage/events{/privacy}","received_events_url":"https://api.github.com/users/sebmarkbage/received_events","type":"User","site_admin":false},"assignees":[{"login":"sebmarkbage","id":63648,"avatar_url":"https://avatars.githubusercontent.com/u/63648?v=3","gravatar_id":"","url":"https://api.github.com/users/sebmarkbage","html_url":"https://github.com/sebmarkbage","followers_url":"https://api.github.com/users/sebmarkbage/followers","following_url":"https://api.github.com/users/sebmarkbage/following{/other_user}","gists_url":"https://api.github.com/users/sebmarkbage/gists{/gist_id}","starred_url":"https://api.github.com/users/sebmarkbage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sebmarkbage/subscriptions","organizations_url":"https://api.github.com/users/sebmarkbage/orgs","repos_url":"https://api.github.com/users/sebmarkbage/repos","events_url":"https://api.github.com/users/sebmarkbage/events{/privacy}","received_events_url":"https://api.github.com/users/sebmarkbage/received_events","type":"User","site_admin":false},{"login":"gaearon","id":810438,"avatar_url":"https://avatars.githubusercontent.com/u/810438?v=3","gravatar_id":"","url":"https://api.github.com/users/gaearon","html_url":"https://github.com/gaearon","followers_url":"https://api.github.com/users/gaearon/followers","following_url":"https://api.github.com/users/gaearon/following{/other_user}","gists_url":"https://api.github.com/users/gaearon/gists{/gist_id}","starred_url":"https://api.github.com/users/gaearon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gaearon/subscriptions","organizations_url":"https://api.github.com/users/gaearon/orgs","repos_url":"https://api.github.com/users/gaearon/repos","events_url":"https://api.github.com/users/gaearon/events{/privacy}","received_events_url":"https://api.github.com/users/gaearon/received_events","type":"User","site_admin":false}],"milestone":null,"comments":15,"created_at":"2016-11-07T22:58:44Z","updated_at":"2016-11-12T01:36:35Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/facebook/react/pulls/8227","html_url":"https://github.com/facebook/react/pull/8227","diff_url":"https://github.com/facebook/react/pull/8227.diff","patch_url":"https://github.com/facebook/react/pull/8227.patch"},"body":"This lets us preserve the invariant that if a tree contains pending work, its root is scheduled. Previously, a tree with an uncaught error broke this assumption.\r\n\r\nNow we can exit early in `scheduleUpdate` once we reach a node whose priority matches.\r\n\r\nCloses https://github.com/facebook/react/issues/8222"},"comment":{"url":"https://api.github.com/repos/facebook/react/issues/comments/260092721","html_url":"https://github.com/facebook/react/pull/8227#issuecomment-260092721","issue_url":"https://api.github.com/repos/facebook/react/issues/8227","id":260092721,"user":{"login":"acdlite","id":3624098,"avatar_url":"https://avatars.githubusercontent.com/u/3624098?v=3","gravatar_id":"","url":"https://api.github.com/users/acdlite","html_url":"https://github.com/acdlite","followers_url":"https://api.github.com/users/acdlite/followers","following_url":"https://api.github.com/users/acdlite/following{/other_user}","gists_url":"https://api.github.com/users/acdlite/gists{/gist_id}","starred_url":"https://api.github.com/users/acdlite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acdlite/subscriptions","organizations_url":"https://api.github.com/users/acdlite/orgs","repos_url":"https://api.github.com/users/acdlite/repos","events_url":"https://api.github.com/users/acdlite/events{/privacy}","received_events_url":"https://api.github.com/users/acdlite/received_events","type":"User","site_admin":false},"created_at":"2016-11-12T01:36:35Z","updated_at":"2016-11-12T01:36:35Z","body":"I pushed some more changes. Implemented the failed root case using a flag on the FiberRoot. Added the concept of a root \"error phase.\"\r\n\r\n- The `SoftDeletion` phase happens when the error is first caught, and indicates that the tree should be unmounted without removing any host nodes.\r\n- The `HardDeletion` phase indicates to `ReactChildFiber` that the next time the container is rendered into, the old nodes should be force removed from the DOM. This uses the normal reconciliation logic, as with the error boundary case.\r\n- The default phase is `NoError`.\r\n\r\nThese phases are only used for the failed root case. They're not necessary for the error boundary case because the nodes are immediately replaced by a new tree.\r\n\r\nI'll wait for feedback before I add any more test coverage. Still not sure how to avoid a flag on the class instance (_isFailedErrorBoundary)."}}
{"actor":{"display_login":"acdlite"}}