{"action":"created","issue":{"url":"https://api.github.com/repos/gaearon/redux-devtools/issues/88","labels_url":"https://api.github.com/repos/gaearon/redux-devtools/issues/88/labels{/name}","comments_url":"https://api.github.com/repos/gaearon/redux-devtools/issues/88/comments","events_url":"https://api.github.com/repos/gaearon/redux-devtools/issues/88/events","html_url":"https://github.com/gaearon/redux-devtools/issues/88","id":103316468,"number":88,"title":"devtools 1.1.1 + Immutable.js breaks pure render","user":{"login":"davidnorth","id":49211,"avatar_url":"https://avatars.githubusercontent.com/u/49211?v=3","gravatar_id":"","url":"https://api.github.com/users/davidnorth","html_url":"https://github.com/davidnorth","followers_url":"https://api.github.com/users/davidnorth/followers","following_url":"https://api.github.com/users/davidnorth/following{/other_user}","gists_url":"https://api.github.com/users/davidnorth/gists{/gist_id}","starred_url":"https://api.github.com/users/davidnorth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidnorth/subscriptions","organizations_url":"https://api.github.com/users/davidnorth/orgs","repos_url":"https://api.github.com/users/davidnorth/repos","events_url":"https://api.github.com/users/davidnorth/events{/privacy}","received_events_url":"https://api.github.com/users/davidnorth/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-08-26T16:43:05Z","updated_at":"2015-09-07T06:24:44Z","closed_at":"2015-09-03T21:26:56Z","body":"I found that when implementing shouldComponentUpdate, an immutable value in this.props doesn't have the same identity as that value in nextProps when expected. You end up comparing 2 different Immutable maps with the same attributes.\r\n\r\nThis happens when an action has updated that component's bit of state earlier then some other unrelated action is dispatched, possibly one that does nothing. The component is comparing a reference to that bit of state it had following the first action with the same following the second action. They should have the same identity since the second action's didn't touch that bit of state.\r\n\r\nI wrote a failing spec that reproduces the problem. I found that removing devTools caused it to pass.\r\n\r\nhttps://gist.github.com/davidnorth/b6c5991756a7fdaf4d81\r\n\r\nAlso, I don't know if it's related, but since upgrading to 1.1.1 I no longer see anything of the state in dev tools, only the actions, where previously I saw the raw immutable object representation."},"comment":{"url":"https://api.github.com/repos/gaearon/redux-devtools/issues/comments/138204548","html_url":"https://github.com/gaearon/redux-devtools/issues/88#issuecomment-138204548","issue_url":"https://api.github.com/repos/gaearon/redux-devtools/issues/88","id":138204548,"user":{"login":"EvanSimpson","id":1757661,"avatar_url":"https://avatars.githubusercontent.com/u/1757661?v=3","gravatar_id":"","url":"https://api.github.com/users/EvanSimpson","html_url":"https://github.com/EvanSimpson","followers_url":"https://api.github.com/users/EvanSimpson/followers","following_url":"https://api.github.com/users/EvanSimpson/following{/other_user}","gists_url":"https://api.github.com/users/EvanSimpson/gists{/gist_id}","starred_url":"https://api.github.com/users/EvanSimpson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EvanSimpson/subscriptions","organizations_url":"https://api.github.com/users/EvanSimpson/orgs","repos_url":"https://api.github.com/users/EvanSimpson/repos","events_url":"https://api.github.com/users/EvanSimpson/events{/privacy}","received_events_url":"https://api.github.com/users/EvanSimpson/received_events","type":"User","site_admin":false},"created_at":"2015-09-07T06:24:44Z","updated_at":"2015-09-07T06:24:44Z","body":"@gaearon I think I can shed some light on the Immutable part of this conversation.\r\n\r\n#79  enabled more convenient rendering of Immutable objects by differentiating them from other `'Object'` types and giving them their own node type that could render them without all the Immutable internals. In doing so, it prevented them from being rendered as the top level node in the JSON tree. You can see in the [current implementation](https://github.com/EvanSimpson/react-json-tree/blob/master/src/index.js#L47) that only `'Object'` and `'Array'` types can be root nodes.\r\n\r\nIn your test case above, @davidnorth, the state being passed as the root node is an Immutable object, and so `rootNode` will be false and not render anything. I just opened an issue https://github.com/chibicode/react-json-tree/issues/5 asking if that was intentional, but from the looks of this conversation, probably not so [here's the fix I'm currently using](https://github.com/EvanSimpson/react-json-tree/commit/230a3a47e8355f0a39bbcd27c5d18d27cc8e6b5d)."}}