{"action":"created","comment":{"url":"https://api.github.com/repos/reactjs/core-notes/pulls/comments/64136923","id":64136923,"diff_hunk":"@@ -0,0 +1,65 @@\n+## May 19 ([discuss](https://github.com/reactjs/core-notes/pull/15))\n+\n+### Attendees\n+\n+* [Ben](https://twitter.com/soprano) (React)\n+* [Christopher](https://twitter.com/vjeux) (React Native)\n+* [Dan](https://twitter.com/dan_abramov) (React)\n+* [Jim](http://github.com/jimfb) (React)\n+* [Keyan](https://twitter.com/keyanzhang) (React, intern)\n+* [Paul](https://twitter.com/zpao) (React)\n+* [Sebastian](https://twitter.com/sebmarkbage) (React)\n+* [Tom](https://twitter.com/tomocchino) (React)\n+\n+### `createClass()` vs ES2015 Classes\n+\n+#### Why Use Classes?\n+\n+* `createClass()` API feels outdated, and can be implemented entirely in userland if needed.\n+* ES6 classes are less of an API, possibly simpler.\n+* ES6 classes are friendlier to static analysis.\n+* ES6 classes offer performance improvements in large apps.\n+* We are in the business of UI components, not type systems.\n+\n+#### What’s Holding Us Back?\n+\n+##### Autobinding\n+\n+* [Class properties](https://github.com/jeffmo/es-class-fields-and-static-properties) solve this.\n+* However they’re not moving forward at TC39 yet as [Jeff](https://github.com/jeffmo) is busy preparing for React Europe.\n+* Downside: nobody wants experimental syntax in the documentation.\n+* We could just always bind in constructor in the documentation.\n+\n+##### Mixins\n+\n+* A lot of components on Facebook website still use mixins, but mostly the same ones.\n+* If we decided to deprecate `createClass` in the future, we would need to fix them first.\n+* Possible temporary workaround: apply them on top of ES6 class like [react-mixin](https://github.com/brigand/react-mixin) does.\n+\n+#### Next Steps\n+\n+* We should update the documentation to use ES6 classes and functional components wherever possible.\n+* Eventually we should deprecate `createClass`, possibly move it into a separate package.\n+* We need to have a good solution for folks who don’t want to use a transpiler.\n+\n+### Separating Out `PropTypes`\n+\n+* [Jordan](https://twitter.com/ljharb) and some Airbnb folks asked about separating `PropTypes` into a generic validation library.\n+* One concern might be that as a separate project `PropTypes` could become incompatible (as a type system) with Flow or TypeScript.","path":"2016-05/may-19.md","position":48,"original_position":48,"commit_id":"148bb97f08d7cf1f183b4420fc1a21908d828698","original_commit_id":"148bb97f08d7cf1f183b4420fc1a21908d828698","user":{"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},"body":"I think there may be separate types of optimizations being confused.\r\n\r\n1. React does not *call* propType validators in production. To enable production mode, you either need to envify it with `NODE_ENV` set to `\"production\"` or use precompiled `react.min.js`.\r\n\r\n2. Nevertheless React bundles *code* necessary to validate propTypes. This shouldn’t affect you, but https://github.com/facebook/react/pull/6401 solves it if it gets merged.\r\n\r\n3. Your components would still *define* propTypes in production, React just won’t read them. If you want to save some bytes by stripping out those annotations from *your* code, you can use `babel-plugin-transform-react-remove-prop-types`.\r\n\r\nI hope this helps!","created_at":"2016-05-21T16:35:32Z","updated_at":"2016-05-21T16:35:32Z","html_url":"https://github.com/reactjs/core-notes/pull/15#discussion_r64136923","pull_request_url":"https://api.github.com/repos/reactjs/core-notes/pulls/15","_links":{"self":{"href":"https://api.github.com/repos/reactjs/core-notes/pulls/comments/64136923"},"html":{"href":"https://github.com/reactjs/core-notes/pull/15#discussion_r64136923"},"pull_request":{"href":"https://api.github.com/repos/reactjs/core-notes/pulls/15"}}},"pull_request":{"url":"https://api.github.com/repos/reactjs/core-notes/pulls/15","id":70935867,"html_url":"https://github.com/reactjs/core-notes/pull/15","diff_url":"https://github.com/reactjs/core-notes/pull/15.diff","patch_url":"https://github.com/reactjs/core-notes/pull/15.patch","issue_url":"https://api.github.com/repos/reactjs/core-notes/issues/15","number":15,"state":"closed","locked":false,"title":"Add May 19 notes","user":{"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},"body":"Feel free to discuss here!","created_at":"2016-05-21T01:27:20Z","updated_at":"2016-05-21T16:35:32Z","closed_at":"2016-05-21T01:27:24Z","merged_at":"2016-05-21T01:27:24Z","merge_commit_sha":"b0e6860a10229e12ae87ce6b81a153b0d6a14c64","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/reactjs/core-notes/pulls/15/commits","review_comments_url":"https://api.github.com/repos/reactjs/core-notes/pulls/15/comments","review_comment_url":"https://api.github.com/repos/reactjs/core-notes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/reactjs/core-notes/issues/15/comments","statuses_url":"https://api.github.com/repos/reactjs/core-notes/statuses/148bb97f08d7cf1f183b4420fc1a21908d828698","head":{"label":"reactjs:gaearon-patch-1","ref":"gaearon-patch-1","sha":"148bb97f08d7cf1f183b4420fc1a21908d828698","user":{"login":"reactjs","id":6412038,"avatar_url":"https://avatars.githubusercontent.com/u/6412038?v=3","gravatar_id":"","url":"https://api.github.com/users/reactjs","html_url":"https://github.com/reactjs","followers_url":"https://api.github.com/users/reactjs/followers","following_url":"https://api.github.com/users/reactjs/following{/other_user}","gists_url":"https://api.github.com/users/reactjs/gists{/gist_id}","starred_url":"https://api.github.com/users/reactjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reactjs/subscriptions","organizations_url":"https://api.github.com/users/reactjs/orgs","repos_url":"https://api.github.com/users/reactjs/repos","events_url":"https://api.github.com/users/reactjs/events{/privacy}","received_events_url":"https://api.github.com/users/reactjs/received_events","type":"Organization","site_admin":false},"repo":{"id":55239942,"name":"core-notes","full_name":"reactjs/core-notes","owner":{"login":"reactjs","id":6412038,"avatar_url":"https://avatars.githubusercontent.com/u/6412038?v=3","gravatar_id":"","url":"https://api.github.com/users/reactjs","html_url":"https://github.com/reactjs","followers_url":"https://api.github.com/users/reactjs/followers","following_url":"https://api.github.com/users/reactjs/following{/other_user}","gists_url":"https://api.github.com/users/reactjs/gists{/gist_id}","starred_url":"https://api.github.com/users/reactjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reactjs/subscriptions","organizations_url":"https://api.github.com/users/reactjs/orgs","repos_url":"https://api.github.com/users/reactjs/repos","events_url":"https://api.github.com/users/reactjs/events{/privacy}","received_events_url":"https://api.github.com/users/reactjs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/reactjs/core-notes","description":"Weekly meeting notes from the React core team","fork":false,"url":"https://api.github.com/repos/reactjs/core-notes","forks_url":"https://api.github.com/repos/reactjs/core-notes/forks","keys_url":"https://api.github.com/repos/reactjs/core-notes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/reactjs/core-notes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/reactjs/core-notes/teams","hooks_url":"https://api.github.com/repos/reactjs/core-notes/hooks","issue_events_url":"https://api.github.com/repos/reactjs/core-notes/issues/events{/number}","events_url":"https://api.github.com/repos/reactjs/core-notes/events","assignees_url":"https://api.github.com/repos/reactjs/core-notes/assignees{/user}","branches_url":"https://api.github.com/repos/reactjs/core-notes/branches{/branch}","tags_url":"https://api.github.com/repos/reactjs/core-notes/tags","blobs_url":"https://api.github.com/repos/reactjs/core-notes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/reactjs/core-notes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/reactjs/core-notes/git/refs{/sha}","trees_url":"https://api.github.com/repos/reactjs/core-notes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/reactjs/core-notes/statuses/{sha}","languages_url":"https://api.github.com/repos/reactjs/core-notes/languages","stargazers_url":"https://api.github.com/repos/reactjs/core-notes/stargazers","contributors_url":"https://api.github.com/repos/reactjs/core-notes/contributors","subscribers_url":"https://api.github.com/repos/reactjs/core-notes/subscribers","subscription_url":"https://api.github.com/repos/reactjs/core-notes/subscription","commits_url":"https://api.github.com/repos/reactjs/core-notes/commits{/sha}","git_commits_url":"https://api.github.com/repos/reactjs/core-notes/git/commits{/sha}","comments_url":"https://api.github.com/repos/reactjs/core-notes/comments{/number}","issue_comment_url":"https://api.github.com/repos/reactjs/core-notes/issues/comments{/number}","contents_url":"https://api.github.com/repos/reactjs/core-notes/contents/{+path}","compare_url":"https://api.github.com/repos/reactjs/core-notes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/reactjs/core-notes/merges","archive_url":"https://api.github.com/repos/reactjs/core-notes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/reactjs/core-notes/downloads","issues_url":"https://api.github.com/repos/reactjs/core-notes/issues{/number}","pulls_url":"https://api.github.com/repos/reactjs/core-notes/pulls{/number}","milestones_url":"https://api.github.com/repos/reactjs/core-notes/milestones{/number}","notifications_url":"https://api.github.com/repos/reactjs/core-notes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/reactjs/core-notes/labels{/name}","releases_url":"https://api.github.com/repos/reactjs/core-notes/releases{/id}","deployments_url":"https://api.github.com/repos/reactjs/core-notes/deployments","created_at":"2016-04-01T14:53:02Z","updated_at":"2016-05-21T14:47:43Z","pushed_at":"2016-05-21T01:33:43Z","git_url":"git://github.com/reactjs/core-notes.git","ssh_url":"git@github.com:reactjs/core-notes.git","clone_url":"https://github.com/reactjs/core-notes.git","svn_url":"https://github.com/reactjs/core-notes","homepage":null,"size":29,"stargazers_count":500,"watchers_count":500,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":13,"mirror_url":null,"open_issues_count":0,"forks":13,"open_issues":0,"watchers":500,"default_branch":"master"}},"base":{"label":"reactjs:master","ref":"master","sha":"9b7ba8a80aa075756c4718e142be8c68325adb43","user":{"login":"reactjs","id":6412038,"avatar_url":"https://avatars.githubusercontent.com/u/6412038?v=3","gravatar_id":"","url":"https://api.github.com/users/reactjs","html_url":"https://github.com/reactjs","followers_url":"https://api.github.com/users/reactjs/followers","following_url":"https://api.github.com/users/reactjs/following{/other_user}","gists_url":"https://api.github.com/users/reactjs/gists{/gist_id}","starred_url":"https://api.github.com/users/reactjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reactjs/subscriptions","organizations_url":"https://api.github.com/users/reactjs/orgs","repos_url":"https://api.github.com/users/reactjs/repos","events_url":"https://api.github.com/users/reactjs/events{/privacy}","received_events_url":"https://api.github.com/users/reactjs/received_events","type":"Organization","site_admin":false},"repo":{"id":55239942,"name":"core-notes","full_name":"reactjs/core-notes","owner":{"login":"reactjs","id":6412038,"avatar_url":"https://avatars.githubusercontent.com/u/6412038?v=3","gravatar_id":"","url":"https://api.github.com/users/reactjs","html_url":"https://github.com/reactjs","followers_url":"https://api.github.com/users/reactjs/followers","following_url":"https://api.github.com/users/reactjs/following{/other_user}","gists_url":"https://api.github.com/users/reactjs/gists{/gist_id}","starred_url":"https://api.github.com/users/reactjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reactjs/subscriptions","organizations_url":"https://api.github.com/users/reactjs/orgs","repos_url":"https://api.github.com/users/reactjs/repos","events_url":"https://api.github.com/users/reactjs/events{/privacy}","received_events_url":"https://api.github.com/users/reactjs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/reactjs/core-notes","description":"Weekly meeting notes from the React core team","fork":false,"url":"https://api.github.com/repos/reactjs/core-notes","forks_url":"https://api.github.com/repos/reactjs/core-notes/forks","keys_url":"https://api.github.com/repos/reactjs/core-notes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/reactjs/core-notes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/reactjs/core-notes/teams","hooks_url":"https://api.github.com/repos/reactjs/core-notes/hooks","issue_events_url":"https://api.github.com/repos/reactjs/core-notes/issues/events{/number}","events_url":"https://api.github.com/repos/reactjs/core-notes/events","assignees_url":"https://api.github.com/repos/reactjs/core-notes/assignees{/user}","branches_url":"https://api.github.com/repos/reactjs/core-notes/branches{/branch}","tags_url":"https://api.github.com/repos/reactjs/core-notes/tags","blobs_url":"https://api.github.com/repos/reactjs/core-notes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/reactjs/core-notes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/reactjs/core-notes/git/refs{/sha}","trees_url":"https://api.github.com/repos/reactjs/core-notes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/reactjs/core-notes/statuses/{sha}","languages_url":"https://api.github.com/repos/reactjs/core-notes/languages","stargazers_url":"https://api.github.com/repos/reactjs/core-notes/stargazers","contributors_url":"https://api.github.com/repos/reactjs/core-notes/contributors","subscribers_url":"https://api.github.com/repos/reactjs/core-notes/subscribers","subscription_url":"https://api.github.com/repos/reactjs/core-notes/subscription","commits_url":"https://api.github.com/repos/reactjs/core-notes/commits{/sha}","git_commits_url":"https://api.github.com/repos/reactjs/core-notes/git/commits{/sha}","comments_url":"https://api.github.com/repos/reactjs/core-notes/comments{/number}","issue_comment_url":"https://api.github.com/repos/reactjs/core-notes/issues/comments{/number}","contents_url":"https://api.github.com/repos/reactjs/core-notes/contents/{+path}","compare_url":"https://api.github.com/repos/reactjs/core-notes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/reactjs/core-notes/merges","archive_url":"https://api.github.com/repos/reactjs/core-notes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/reactjs/core-notes/downloads","issues_url":"https://api.github.com/repos/reactjs/core-notes/issues{/number}","pulls_url":"https://api.github.com/repos/reactjs/core-notes/pulls{/number}","milestones_url":"https://api.github.com/repos/reactjs/core-notes/milestones{/number}","notifications_url":"https://api.github.com/repos/reactjs/core-notes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/reactjs/core-notes/labels{/name}","releases_url":"https://api.github.com/repos/reactjs/core-notes/releases{/id}","deployments_url":"https://api.github.com/repos/reactjs/core-notes/deployments","created_at":"2016-04-01T14:53:02Z","updated_at":"2016-05-21T14:47:43Z","pushed_at":"2016-05-21T01:33:43Z","git_url":"git://github.com/reactjs/core-notes.git","ssh_url":"git@github.com:reactjs/core-notes.git","clone_url":"https://github.com/reactjs/core-notes.git","svn_url":"https://github.com/reactjs/core-notes","homepage":null,"size":29,"stargazers_count":500,"watchers_count":500,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":13,"mirror_url":null,"open_issues_count":0,"forks":13,"open_issues":0,"watchers":500,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/reactjs/core-notes/pulls/15"},"html":{"href":"https://github.com/reactjs/core-notes/pull/15"},"issue":{"href":"https://api.github.com/repos/reactjs/core-notes/issues/15"},"comments":{"href":"https://api.github.com/repos/reactjs/core-notes/issues/15/comments"},"review_comments":{"href":"https://api.github.com/repos/reactjs/core-notes/pulls/15/comments"},"review_comment":{"href":"https://api.github.com/repos/reactjs/core-notes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/reactjs/core-notes/pulls/15/commits"},"statuses":{"href":"https://api.github.com/repos/reactjs/core-notes/statuses/148bb97f08d7cf1f183b4420fc1a21908d828698"}}}}
{"actor":{"display_login":"gaearon"}}