     onShowDetailsViewClick: React.PropTypes.func.isRequired
     topScrollOffset:        React.PropTypes.number
 
-  mixins: [ScrollTo, addons.PureRenderMixin]
+  mixins: [ScrollTo]
 
   getDefaultProps: ->
     topScrollOffset: 110
+
+  # Important! - as an optimization, this component will only update if exercises has changed.
+  # This is necessary because there can be a very large number of exercise previews displaying at once
+  shouldComponentUpdate: (nextProps) ->
+    not _.isEqual(nextProps, @props)
 
   componentDidMount:   ->
     @scrollToSelector('.exercise-sections')

Icon = require '../icon'

SectionsExercises = React.createClass

  mixins: [addons.PureRenderMixin]

  propTypes:
    exercises:              React.PropTypes.array.isRequired

React = require 'react'
BS = require 'react-bootstrap'

{TocStore} = require '../../flux/toc'
{ExerciseActions, ExerciseStore} = require '../../flux/exercise'
