Is it possible to keep Value inside Value?
Yes. Every type kept in a Value needs to implement PartialEq, and Value itself compares by identity - two Values are equal only if they're clones of the same Value. So the outer value notifies about a change only when the inner Value is replaced with another one, and changes of the inner value are tracked by the inner Value itself:
use vertigo::{dom, Value}; let my_value = Value::new(Value::new("String")); let val_render = my_value.render_value(|v| v.render_value(|v| dom! { <span>{v}</span> })); dom! { <span>{val_render}</span> }