···72727373- **`beforeAttributeUpdated`**: Called before an attribute is updated on an element. Return `false` to prevent the update.
74747575+```javascript
7676+morph(currentNode, newNode, {
7777+ beforeAttributeUpdated: (element, name) => {
7878+ if (element.tagName === "DETAILS" && name === "open") return false
7979+ return true
8080+ },
8181+})
8282+```
8383+8484+This can be useful for preserving UI state that your backend does not track, such as whether a `<details>` element is open.
8585+7586- **`afterAttributeUpdated`**: Called after an attribute has been updated on an element.
76877788- **`beforeChildrenVisited`**: Called before an element's children are visited during morphing. Return `false` to skip visiting children.