{"action":"created","comment":{"url":"https://api.github.com/repos/insin/react-hn/pulls/comments/63075111","id":63075111,"diff_hunk":"@@ -1,9 +1,14 @@\n module.exports = {\n   get(key, defaultValue) {\n-    var value = window.localStorage[key]\n-    return (typeof value != 'undefined' ? value : defaultValue)\n+    if (typeof window !== 'undefined') {","path":"src/utils/storage.js","position":5,"original_position":5,"commit_id":"3a3e4ff34f2862bbebbff2c5400e2450abf6d7f4","original_commit_id":"3a3e4ff34f2862bbebbff2c5400e2450abf6d7f4","user":{"login":"tracker1","id":444316,"avatar_url":"https://avatars.githubusercontent.com/u/444316?v=3","gravatar_id":"","url":"https://api.github.com/users/tracker1","html_url":"https://github.com/tracker1","followers_url":"https://api.github.com/users/tracker1/followers","following_url":"https://api.github.com/users/tracker1/following{/other_user}","gists_url":"https://api.github.com/users/tracker1/gists{/gist_id}","starred_url":"https://api.github.com/users/tracker1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tracker1/subscriptions","organizations_url":"https://api.github.com/users/tracker1/orgs","repos_url":"https://api.github.com/users/tracker1/repos","events_url":"https://api.github.com/users/tracker1/events{/privacy}","received_events_url":"https://api.github.com/users/tracker1/received_events","type":"User","site_admin":false},"body":"    if (typeof window === 'undefined') return defaultValue;","created_at":"2016-05-12T18:45:39Z","updated_at":"2016-05-12T18:45:39Z","html_url":"https://github.com/insin/react-hn/pull/35#discussion_r63075111","pull_request_url":"https://api.github.com/repos/insin/react-hn/pulls/35","_links":{"self":{"href":"https://api.github.com/repos/insin/react-hn/pulls/comments/63075111"},"html":{"href":"https://github.com/insin/react-hn/pull/35#discussion_r63075111"},"pull_request":{"href":"https://api.github.com/repos/insin/react-hn/pulls/35"}}},"pull_request":{"url":"https://api.github.com/repos/insin/react-hn/pulls/35","id":69248869,"html_url":"https://github.com/insin/react-hn/pull/35","diff_url":"https://github.com/insin/react-hn/pull/35.diff","patch_url":"https://github.com/insin/react-hn/pull/35.patch","issue_url":"https://api.github.com/repos/insin/react-hn/issues/35","number":35,"state":"open","locked":false,"title":"Adds isomorphic/server-side React application-shell rendering","user":{"login":"addyosmani","id":110953,"avatar_url":"https://avatars.githubusercontent.com/u/110953?v=3","gravatar_id":"","url":"https://api.github.com/users/addyosmani","html_url":"https://github.com/addyosmani","followers_url":"https://api.github.com/users/addyosmani/followers","following_url":"https://api.github.com/users/addyosmani/following{/other_user}","gists_url":"https://api.github.com/users/addyosmani/gists{/gist_id}","starred_url":"https://api.github.com/users/addyosmani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/addyosmani/subscriptions","organizations_url":"https://api.github.com/users/addyosmani/orgs","repos_url":"https://api.github.com/users/addyosmani/repos","events_url":"https://api.github.com/users/addyosmani/events{/privacy}","received_events_url":"https://api.github.com/users/addyosmani/received_events","type":"User","site_admin":false},"body":"Demo URL: https://react-hn.appspot.com\r\n\r\n**tl;dr: we can now server-side render the UI, which also enables it to be visible with or without JavaScript enabled**\r\n\r\nThis set of changes formalises the work done in #27 (huge thanks to @jackfranklin and @psimyn) for helping us get it started. The end product can now be trivially deployed to Google App Engine.\r\n\r\n@jackfranklin: some of the specific changes I added to your branch were bringing back SSR-friendly hostname parsing, the `componentDidMount` fix, slightly tighter equality checks and updates to the build pipeline which enable us to deploy to GAE. \r\n\r\ncc @insin @NekR","created_at":"2016-05-07T18:14:27Z","updated_at":"2016-05-12T18:45:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e5bbe56879cb678e0b6b1af6e66f51fc25373db8","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/insin/react-hn/pulls/35/commits","review_comments_url":"https://api.github.com/repos/insin/react-hn/pulls/35/comments","review_comment_url":"https://api.github.com/repos/insin/react-hn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/insin/react-hn/issues/35/comments","statuses_url":"https://api.github.com/repos/insin/react-hn/statuses/3a3e4ff34f2862bbebbff2c5400e2450abf6d7f4","head":{"label":"insin:isomorphic-shell","ref":"isomorphic-shell","sha":"3a3e4ff34f2862bbebbff2c5400e2450abf6d7f4","user":{"login":"insin","id":226692,"avatar_url":"https://avatars.githubusercontent.com/u/226692?v=3","gravatar_id":"","url":"https://api.github.com/users/insin","html_url":"https://github.com/insin","followers_url":"https://api.github.com/users/insin/followers","following_url":"https://api.github.com/users/insin/following{/other_user}","gists_url":"https://api.github.com/users/insin/gists{/gist_id}","starred_url":"https://api.github.com/users/insin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/insin/subscriptions","organizations_url":"https://api.github.com/users/insin/orgs","repos_url":"https://api.github.com/users/insin/repos","events_url":"https://api.github.com/users/insin/events{/privacy}","received_events_url":"https://api.github.com/users/insin/received_events","type":"User","site_admin":false},"repo":{"id":24990127,"name":"react-hn","full_name":"insin/react-hn","owner":{"login":"insin","id":226692,"avatar_url":"https://avatars.githubusercontent.com/u/226692?v=3","gravatar_id":"","url":"https://api.github.com/users/insin","html_url":"https://github.com/insin","followers_url":"https://api.github.com/users/insin/followers","following_url":"https://api.github.com/users/insin/following{/other_user}","gists_url":"https://api.github.com/users/insin/gists{/gist_id}","starred_url":"https://api.github.com/users/insin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/insin/subscriptions","organizations_url":"https://api.github.com/users/insin/orgs","repos_url":"https://api.github.com/users/insin/repos","events_url":"https://api.github.com/users/insin/events{/privacy}","received_events_url":"https://api.github.com/users/insin/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/insin/react-hn","description":"React-powered Hacker News client","fork":false,"url":"https://api.github.com/repos/insin/react-hn","forks_url":"https://api.github.com/repos/insin/react-hn/forks","keys_url":"https://api.github.com/repos/insin/react-hn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/insin/react-hn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/insin/react-hn/teams","hooks_url":"https://api.github.com/repos/insin/react-hn/hooks","issue_events_url":"https://api.github.com/repos/insin/react-hn/issues/events{/number}","events_url":"https://api.github.com/repos/insin/react-hn/events","assignees_url":"https://api.github.com/repos/insin/react-hn/assignees{/user}","branches_url":"https://api.github.com/repos/insin/react-hn/branches{/branch}","tags_url":"https://api.github.com/repos/insin/react-hn/tags","blobs_url":"https://api.github.com/repos/insin/react-hn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/insin/react-hn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/insin/react-hn/git/refs{/sha}","trees_url":"https://api.github.com/repos/insin/react-hn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/insin/react-hn/statuses/{sha}","languages_url":"https://api.github.com/repos/insin/react-hn/languages","stargazers_url":"https://api.github.com/repos/insin/react-hn/stargazers","contributors_url":"https://api.github.com/repos/insin/react-hn/contributors","subscribers_url":"https://api.github.com/repos/insin/react-hn/subscribers","subscription_url":"https://api.github.com/repos/insin/react-hn/subscription","commits_url":"https://api.github.com/repos/insin/react-hn/commits{/sha}","git_commits_url":"https://api.github.com/repos/insin/react-hn/git/commits{/sha}","comments_url":"https://api.github.com/repos/insin/react-hn/comments{/number}","issue_comment_url":"https://api.github.com/repos/insin/react-hn/issues/comments{/number}","contents_url":"https://api.github.com/repos/insin/react-hn/contents/{+path}","compare_url":"https://api.github.com/repos/insin/react-hn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/insin/react-hn/merges","archive_url":"https://api.github.com/repos/insin/react-hn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/insin/react-hn/downloads","issues_url":"https://api.github.com/repos/insin/react-hn/issues{/number}","pulls_url":"https://api.github.com/repos/insin/react-hn/pulls{/number}","milestones_url":"https://api.github.com/repos/insin/react-hn/milestones{/number}","notifications_url":"https://api.github.com/repos/insin/react-hn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/insin/react-hn/labels{/name}","releases_url":"https://api.github.com/repos/insin/react-hn/releases{/id}","deployments_url":"https://api.github.com/repos/insin/react-hn/deployments","created_at":"2014-10-09T13:22:36Z","updated_at":"2016-05-09T13:13:09Z","pushed_at":"2016-05-10T18:01:10Z","git_url":"git://github.com/insin/react-hn.git","ssh_url":"git@github.com:insin/react-hn.git","clone_url":"https://github.com/insin/react-hn.git","svn_url":"https://github.com/insin/react-hn","homepage":"https://insin.github.io/react-hn","size":534,"stargazers_count":444,"watchers_count":444,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":32,"mirror_url":null,"open_issues_count":11,"forks":32,"open_issues":11,"watchers":444,"default_branch":"master"}},"base":{"label":"insin:master","ref":"master","sha":"37f709cbbea66cf7d276087a6ff30501d3fe1da3","user":{"login":"insin","id":226692,"avatar_url":"https://avatars.githubusercontent.com/u/226692?v=3","gravatar_id":"","url":"https://api.github.com/users/insin","html_url":"https://github.com/insin","followers_url":"https://api.github.com/users/insin/followers","following_url":"https://api.github.com/users/insin/following{/other_user}","gists_url":"https://api.github.com/users/insin/gists{/gist_id}","starred_url":"https://api.github.com/users/insin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/insin/subscriptions","organizations_url":"https://api.github.com/users/insin/orgs","repos_url":"https://api.github.com/users/insin/repos","events_url":"https://api.github.com/users/insin/events{/privacy}","received_events_url":"https://api.github.com/users/insin/received_events","type":"User","site_admin":false},"repo":{"id":24990127,"name":"react-hn","full_name":"insin/react-hn","owner":{"login":"insin","id":226692,"avatar_url":"https://avatars.githubusercontent.com/u/226692?v=3","gravatar_id":"","url":"https://api.github.com/users/insin","html_url":"https://github.com/insin","followers_url":"https://api.github.com/users/insin/followers","following_url":"https://api.github.com/users/insin/following{/other_user}","gists_url":"https://api.github.com/users/insin/gists{/gist_id}","starred_url":"https://api.github.com/users/insin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/insin/subscriptions","organizations_url":"https://api.github.com/users/insin/orgs","repos_url":"https://api.github.com/users/insin/repos","events_url":"https://api.github.com/users/insin/events{/privacy}","received_events_url":"https://api.github.com/users/insin/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/insin/react-hn","description":"React-powered Hacker News client","fork":false,"url":"https://api.github.com/repos/insin/react-hn","forks_url":"https://api.github.com/repos/insin/react-hn/forks","keys_url":"https://api.github.com/repos/insin/react-hn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/insin/react-hn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/insin/react-hn/teams","hooks_url":"https://api.github.com/repos/insin/react-hn/hooks","issue_events_url":"https://api.github.com/repos/insin/react-hn/issues/events{/number}","events_url":"https://api.github.com/repos/insin/react-hn/events","assignees_url":"https://api.github.com/repos/insin/react-hn/assignees{/user}","branches_url":"https://api.github.com/repos/insin/react-hn/branches{/branch}","tags_url":"https://api.github.com/repos/insin/react-hn/tags","blobs_url":"https://api.github.com/repos/insin/react-hn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/insin/react-hn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/insin/react-hn/git/refs{/sha}","trees_url":"https://api.github.com/repos/insin/react-hn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/insin/react-hn/statuses/{sha}","languages_url":"https://api.github.com/repos/insin/react-hn/languages","stargazers_url":"https://api.github.com/repos/insin/react-hn/stargazers","contributors_url":"https://api.github.com/repos/insin/react-hn/contributors","subscribers_url":"https://api.github.com/repos/insin/react-hn/subscribers","subscription_url":"https://api.github.com/repos/insin/react-hn/subscription","commits_url":"https://api.github.com/repos/insin/react-hn/commits{/sha}","git_commits_url":"https://api.github.com/repos/insin/react-hn/git/commits{/sha}","comments_url":"https://api.github.com/repos/insin/react-hn/comments{/number}","issue_comment_url":"https://api.github.com/repos/insin/react-hn/issues/comments{/number}","contents_url":"https://api.github.com/repos/insin/react-hn/contents/{+path}","compare_url":"https://api.github.com/repos/insin/react-hn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/insin/react-hn/merges","archive_url":"https://api.github.com/repos/insin/react-hn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/insin/react-hn/downloads","issues_url":"https://api.github.com/repos/insin/react-hn/issues{/number}","pulls_url":"https://api.github.com/repos/insin/react-hn/pulls{/number}","milestones_url":"https://api.github.com/repos/insin/react-hn/milestones{/number}","notifications_url":"https://api.github.com/repos/insin/react-hn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/insin/react-hn/labels{/name}","releases_url":"https://api.github.com/repos/insin/react-hn/releases{/id}","deployments_url":"https://api.github.com/repos/insin/react-hn/deployments","created_at":"2014-10-09T13:22:36Z","updated_at":"2016-05-09T13:13:09Z","pushed_at":"2016-05-10T18:01:10Z","git_url":"git://github.com/insin/react-hn.git","ssh_url":"git@github.com:insin/react-hn.git","clone_url":"https://github.com/insin/react-hn.git","svn_url":"https://github.com/insin/react-hn","homepage":"https://insin.github.io/react-hn","size":534,"stargazers_count":444,"watchers_count":444,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":32,"mirror_url":null,"open_issues_count":11,"forks":32,"open_issues":11,"watchers":444,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/insin/react-hn/pulls/35"},"html":{"href":"https://github.com/insin/react-hn/pull/35"},"issue":{"href":"https://api.github.com/repos/insin/react-hn/issues/35"},"comments":{"href":"https://api.github.com/repos/insin/react-hn/issues/35/comments"},"review_comments":{"href":"https://api.github.com/repos/insin/react-hn/pulls/35/comments"},"review_comment":{"href":"https://api.github.com/repos/insin/react-hn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/insin/react-hn/pulls/35/commits"},"statuses":{"href":"https://api.github.com/repos/insin/react-hn/statuses/3a3e4ff34f2862bbebbff2c5400e2450abf6d7f4"}}}}