{"action":"created","comment":{"url":"https://api.github.com/repos/facebook/react/pulls/comments/89194134","pull_request_review_id":9741799,"id":89194134,"diff_hunk":"@@ -355,7 +385,15 @@ module.exports = function<T, P, I, TI, C>(config : HostConfig<T, P, I, TI, C>) {\n       ReactFiberInstrumentation.debugTool.onWillBeginWork(workInProgress);\n     }\n     // See if beginning this work spawns more work.\n-    let next = beginWork(current, workInProgress, nextPriorityLevel);\n+    let next;\n+    const isFailedWork = capturedErrors && capturedErrors.has(workInProgress);","path":"src/renderers/shared/fiber/ReactFiberScheduler.js","position":166,"original_position":151,"commit_id":"f64ff3097e27d2092b620c7cb31926162dbb54d7","original_commit_id":"d8a633c06ca7eeb67824525b37fbf8b11cbe47f4","user":{"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},"body":"Can we fork `performUnitOfWork` into a separate function then call it synchronous in a while loop while there is still capturedErrors? That way we don't have to check this condition thousands of times per frame (and whatever else optimizations can be done as a result).","created_at":"2016-11-22T19:38:40Z","updated_at":"2016-11-22T19:38:40Z","html_url":"https://github.com/facebook/react/pull/8304#discussion_r89194134","pull_request_url":"https://api.github.com/repos/facebook/react/pulls/8304","_links":{"self":{"href":"https://api.github.com/repos/facebook/react/pulls/comments/89194134"},"html":{"href":"https://github.com/facebook/react/pull/8304#discussion_r89194134"},"pull_request":{"href":"https://api.github.com/repos/facebook/react/pulls/8304"}}},"pull_request":{"url":"https://api.github.com/repos/facebook/react/pulls/8304","id":94006881,"html_url":"https://github.com/facebook/react/pull/8304","diff_url":"https://github.com/facebook/react/pull/8304.diff","patch_url":"https://github.com/facebook/react/pull/8304.patch","issue_url":"https://api.github.com/repos/facebook/react/issues/8304","number":8304,"state":"open","locked":false,"title":"[Fiber] New error boundary semantics","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},"body":"Error boundaries, take 4 :) Supersedes https://github.com/facebook/react/pull/8227.\r\n\r\n- Recovering from an error boundary no longer uses Task priority by\r\ndefault. The work is scheduled using whatever priority created the\r\nerror.\r\n- Error handling is now a side-effect that happens during the\r\ncommit phase.\r\n- The default behavior of an error boundary is to render null. Errors\r\ndo not propagate except when an boundary fails. Conceptually, this would\r\nbe like throwing an error from a catch block.\r\n- A host container is treated like a no-op error boundary. The first\r\nerror captured by a host container is thrown at the end of the batch.\r\nLike with normal error boundaries, the entire tree is unmounted.\r\n\r\nTODO:\r\n\r\n- [x] Rebase on latest master\r\n- [x] Fix last failing test\r\n- [x] Ensure the context stack correctly unwinds on errors\r\n\r\nThe scheduler is getting a bit messy / difficult to work with, especially with all the `perform-` functions. I'll try to clean some of the accumulated cruft in a future PR.","created_at":"2016-11-16T16:59:56Z","updated_at":"2016-11-22T19:38:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8df3beec59ce6f15b7e3a3a089d13553cf176c3c","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,"commits_url":"https://api.github.com/repos/facebook/react/pulls/8304/commits","review_comments_url":"https://api.github.com/repos/facebook/react/pulls/8304/comments","review_comment_url":"https://api.github.com/repos/facebook/react/pulls/comments{/number}","comments_url":"https://api.github.com/repos/facebook/react/issues/8304/comments","statuses_url":"https://api.github.com/repos/facebook/react/statuses/f64ff3097e27d2092b620c7cb31926162dbb54d7","head":{"label":"acdlite:fibererroreffect","ref":"fibererroreffect","sha":"f64ff3097e27d2092b620c7cb31926162dbb54d7","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},"repo":{"id":45281256,"name":"react","full_name":"acdlite/react","owner":{"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},"private":false,"html_url":"https://github.com/acdlite/react","description":"A declarative, efficient, and flexible JavaScript library for building user interfaces.","fork":true,"url":"https://api.github.com/repos/acdlite/react","forks_url":"https://api.github.com/repos/acdlite/react/forks","keys_url":"https://api.github.com/repos/acdlite/react/keys{/key_id}","collaborators_url":"https://api.github.com/repos/acdlite/react/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/acdlite/react/teams","hooks_url":"https://api.github.com/repos/acdlite/react/hooks","issue_events_url":"https://api.github.com/repos/acdlite/react/issues/events{/number}","events_url":"https://api.github.com/repos/acdlite/react/events","assignees_url":"https://api.github.com/repos/acdlite/react/assignees{/user}","branches_url":"https://api.github.com/repos/acdlite/react/branches{/branch}","tags_url":"https://api.github.com/repos/acdlite/react/tags","blobs_url":"https://api.github.com/repos/acdlite/react/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/acdlite/react/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/acdlite/react/git/refs{/sha}","trees_url":"https://api.github.com/repos/acdlite/react/git/trees{/sha}","statuses_url":"https://api.github.com/repos/acdlite/react/statuses/{sha}","languages_url":"https://api.github.com/repos/acdlite/react/languages","stargazers_url":"https://api.github.com/repos/acdlite/react/stargazers","contributors_url":"https://api.github.com/repos/acdlite/react/contributors","subscribers_url":"https://api.github.com/repos/acdlite/react/subscribers","subscription_url":"https://api.github.com/repos/acdlite/react/subscription","commits_url":"https://api.github.com/repos/acdlite/react/commits{/sha}","git_commits_url":"https://api.github.com/repos/acdlite/react/git/commits{/sha}","comments_url":"https://api.github.com/repos/acdlite/react/comments{/number}","issue_comment_url":"https://api.github.com/repos/acdlite/react/issues/comments{/number}","contents_url":"https://api.github.com/repos/acdlite/react/contents/{+path}","compare_url":"https://api.github.com/repos/acdlite/react/compare/{base}...{head}","merges_url":"https://api.github.com/repos/acdlite/react/merges","archive_url":"https://api.github.com/repos/acdlite/react/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/acdlite/react/downloads","issues_url":"https://api.github.com/repos/acdlite/react/issues{/number}","pulls_url":"https://api.github.com/repos/acdlite/react/pulls{/number}","milestones_url":"https://api.github.com/repos/acdlite/react/milestones{/number}","notifications_url":"https://api.github.com/repos/acdlite/react/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/acdlite/react/labels{/name}","releases_url":"https://api.github.com/repos/acdlite/react/releases{/id}","deployments_url":"https://api.github.com/repos/acdlite/react/deployments","created_at":"2015-10-30T23:18:48Z","updated_at":"2016-10-09T08:15:38Z","pushed_at":"2016-11-18T10:30:15Z","git_url":"git://github.com/acdlite/react.git","ssh_url":"git@github.com:acdlite/react.git","clone_url":"https://github.com/acdlite/react.git","svn_url":"https://github.com/acdlite/react","homepage":"https://facebook.github.io/react/","size":89620,"stargazers_count":1,"watchers_count":1,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"facebook:master","ref":"master","sha":"32f5b034ed229d048f76ae74e18d270edc801dbf","user":{"login":"facebook","id":69631,"avatar_url":"https://avatars.githubusercontent.com/u/69631?v=3","gravatar_id":"","url":"https://api.github.com/users/facebook","html_url":"https://github.com/facebook","followers_url":"https://api.github.com/users/facebook/followers","following_url":"https://api.github.com/users/facebook/following{/other_user}","gists_url":"https://api.github.com/users/facebook/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook/subscriptions","organizations_url":"https://api.github.com/users/facebook/orgs","repos_url":"https://api.github.com/users/facebook/repos","events_url":"https://api.github.com/users/facebook/events{/privacy}","received_events_url":"https://api.github.com/users/facebook/received_events","type":"Organization","site_admin":false},"repo":{"id":10270250,"name":"react","full_name":"facebook/react","owner":{"login":"facebook","id":69631,"avatar_url":"https://avatars.githubusercontent.com/u/69631?v=3","gravatar_id":"","url":"https://api.github.com/users/facebook","html_url":"https://github.com/facebook","followers_url":"https://api.github.com/users/facebook/followers","following_url":"https://api.github.com/users/facebook/following{/other_user}","gists_url":"https://api.github.com/users/facebook/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook/subscriptions","organizations_url":"https://api.github.com/users/facebook/orgs","repos_url":"https://api.github.com/users/facebook/repos","events_url":"https://api.github.com/users/facebook/events{/privacy}","received_events_url":"https://api.github.com/users/facebook/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/facebook/react","description":"A declarative, efficient, and flexible JavaScript library for building user interfaces.","fork":false,"url":"https://api.github.com/repos/facebook/react","forks_url":"https://api.github.com/repos/facebook/react/forks","keys_url":"https://api.github.com/repos/facebook/react/keys{/key_id}","collaborators_url":"https://api.github.com/repos/facebook/react/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/facebook/react/teams","hooks_url":"https://api.github.com/repos/facebook/react/hooks","issue_events_url":"https://api.github.com/repos/facebook/react/issues/events{/number}","events_url":"https://api.github.com/repos/facebook/react/events","assignees_url":"https://api.github.com/repos/facebook/react/assignees{/user}","branches_url":"https://api.github.com/repos/facebook/react/branches{/branch}","tags_url":"https://api.github.com/repos/facebook/react/tags","blobs_url":"https://api.github.com/repos/facebook/react/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/facebook/react/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/facebook/react/git/refs{/sha}","trees_url":"https://api.github.com/repos/facebook/react/git/trees{/sha}","statuses_url":"https://api.github.com/repos/facebook/react/statuses/{sha}","languages_url":"https://api.github.com/repos/facebook/react/languages","stargazers_url":"https://api.github.com/repos/facebook/react/stargazers","contributors_url":"https://api.github.com/repos/facebook/react/contributors","subscribers_url":"https://api.github.com/repos/facebook/react/subscribers","subscription_url":"https://api.github.com/repos/facebook/react/subscription","commits_url":"https://api.github.com/repos/facebook/react/commits{/sha}","git_commits_url":"https://api.github.com/repos/facebook/react/git/commits{/sha}","comments_url":"https://api.github.com/repos/facebook/react/comments{/number}","issue_comment_url":"https://api.github.com/repos/facebook/react/issues/comments{/number}","contents_url":"https://api.github.com/repos/facebook/react/contents/{+path}","compare_url":"https://api.github.com/repos/facebook/react/compare/{base}...{head}","merges_url":"https://api.github.com/repos/facebook/react/merges","archive_url":"https://api.github.com/repos/facebook/react/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/facebook/react/downloads","issues_url":"https://api.github.com/repos/facebook/react/issues{/number}","pulls_url":"https://api.github.com/repos/facebook/react/pulls{/number}","milestones_url":"https://api.github.com/repos/facebook/react/milestones{/number}","notifications_url":"https://api.github.com/repos/facebook/react/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/facebook/react/labels{/name}","releases_url":"https://api.github.com/repos/facebook/react/releases{/id}","deployments_url":"https://api.github.com/repos/facebook/react/deployments","created_at":"2013-05-24T16:15:54Z","updated_at":"2016-11-22T19:01:52Z","pushed_at":"2016-11-22T19:17:35Z","git_url":"git://github.com/facebook/react.git","ssh_url":"git@github.com:facebook/react.git","clone_url":"https://github.com/facebook/react.git","svn_url":"https://github.com/facebook/react","homepage":"https://facebook.github.io/react/","size":146989,"stargazers_count":54535,"watchers_count":54535,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":9724,"mirror_url":null,"open_issues_count":612,"forks":9724,"open_issues":612,"watchers":54535,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/facebook/react/pulls/8304"},"html":{"href":"https://github.com/facebook/react/pull/8304"},"issue":{"href":"https://api.github.com/repos/facebook/react/issues/8304"},"comments":{"href":"https://api.github.com/repos/facebook/react/issues/8304/comments"},"review_comments":{"href":"https://api.github.com/repos/facebook/react/pulls/8304/comments"},"review_comment":{"href":"https://api.github.com/repos/facebook/react/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/facebook/react/pulls/8304/commits"},"statuses":{"href":"https://api.github.com/repos/facebook/react/statuses/f64ff3097e27d2092b620c7cb31926162dbb54d7"}}}}
{"actor":{"display_login":"sebmarkbage"}}