                 return true
             ancestor = ancestor._owner
         false
+
+
+    reactSpec.tryGet = (reactiveName, defaultValue) ->
+        if reactiveName not of @reactives
+            throw new Meteor.Error "Invalid reactive name: #{@}.#{reactiveName}"
+
+        J.tryGet(
+            => @reactives[reactiveName].get()
+            defaultValue
+        )
+
 
 
     reactSpec.renderLoader ?= ->


    reactSpec.componentDidUpdate = (prevProps, prevState) ->
        return if @_showingLoader

        prevAfterRenderCallbacks = @_afterRenderCallbacks ? []
        @_afterRenderCallbacks = []
        callback() for callback in prevAfterRenderCallbacks


        componentSpec.componentDidMount?.apply @

        return if @_showingLoader
        prevAfterRenderCallbacks = @_afterRenderCallbacks ? []
        @_afterRenderCallbacks = []
        callback() for callback in prevAfterRenderCallbacks


    reactSpec.shouldComponentUpdate = (nextProps, nextState) ->
        not @_elementVar? or @_elementVar.invalidated
