# \[Accepted with revision\] SE-0395: Observability

**URL:** <https://forums.swift.org/t/accepted-with-revision-se-0395-observability/66760>\
**Category:** Announcements\
**Created:** [August 15, 2023, 12:26am UTC](https://forums.swift.org/t/accepted-with-revision-se-0395-observability/66760 "2023-08-15T00:26:07Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![dmt](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/dmt/32/30830_2.png) [@dmt](https://forums.swift.org/u/dmt)\
**Post date:** [August 15, 2023, 11:09am UTC](https://forums.swift.org/t/accepted-with-revision-se-0395-observability/66760/5 "2023-08-15T11:09:53Z")

</div>

> [@tcldr](#):
>
> This would allow dependent observers to make any changes they need to make within SwiftUI's deadline for the current event loop.
> 
> It doesn't need to be anything huge for this version of the proposal, something as simple as changing `withObservationTracking(_:onChange:)` to `withObservationTracking(_:willChange:didChange:)` could lay the foundation.

This is what I [tried](https://forums.swift.org/t/second-review-se-0395-observability/65261/171) to raise in the review as well, but unfortunately it wasn't discussed.  
The thing is observing `didSet`s is not enough. `willSet` has the invariant "subscribers will receive a notification _before anything_ is changed", but `didSet` doesn't have the invariant "subscribers will receive a notification _after everything_ is changed". To support this invariant we need transactions.

---

_[View the full topic](https://forums.swift.org/t/accepted-with-revision-se-0395-observability/66760)._
