             }
             if _anyChildDependsOnContentOffset == true {
                 children.forEach { $0.update() }
-                _previousBounds = _view!.bounds
-                return
-            }
-        }
-        _previousBounds = bounds
+            }
+            _previousBounds.origin = view.bounds.origin
+        }
     }
 
     public override func observeValue(

        }
        if !_observingFrame {
            addObserver(self, forKeyPath: "_view.translatesAutoresizingMaskIntoConstraints", options: [.new, .old], context: nil)
            _observingFrame = true
        }
    }

    private var _previousBounds = CGRect.zero
    private var _previousSafeAreaInsets: UIEdgeInsets = .zero
    private var _anyChildDependsOnContentOffset: Bool?
    fileprivate func updateLayout() {
        guard _setupComplete, _updateLock == 0, _evaluating.isEmpty, let bounds = _view?.bounds else {
            return
        }
        if _shouldObserveInsets, let insets = _view?._safeAreaInsets {
            // If not yet mounted, safe area insets can't be valid
            if _view?.window != nil, !insets.isNearlyEqual(to: _previousSafeAreaInsets) {
                if let parent = parent, parent._updateLock == 0 {
                    parent.update()
                } else {
                    update()
                }
                _previousSafeAreaInsets = _view!._safeAreaInsets
                return
            }
            _previousSafeAreaInsets = insets
        }
        if !bounds.size.isNearlyEqual(to: _previousBounds.size) {
            if let parent = parent, parent._updateLock == 0 {
                parent.update()
            } else {
                update()
            }
            _previousBounds = _view!.bounds
            return
        } else if _view is UIScrollView, !bounds.origin.isNearlyEqual(to: _previousBounds.origin) {
            if _anyChildDependsOnContentOffset == nil {
                _anyChildDependsOnContentOffset = anyExpressionDependsOn([
                    "contentOffset", "contentOffset.x", "contentOffset.y",

    private func _stopObservingFrame() {
        if _observingFrame {
            removeObserver(self, forKeyPath: "_view.translatesAutoresizingMaskIntoConstraints")
            removeObserver(self, forKeyPath: "_view.frame")
            removeObserver(self, forKeyPath: "_view.bounds")
            _observingFrame = false
        }
    }
