🐛 Bug Report
After client-side hydration, structural template directives (<f-when>,
<f-repeat>) and property bindings (:prop) do not re-evaluate when their
underlying @observable properties change. Simple {{interpolation}} and
attribute bindings DO work reactively, creating an inconsistency that forces
app developers into imperative DOM workarounds.
💻 Repro or Code Sample
| Field |
Detail |
| Expected |
<child-display :message="{{parentMessage}}"> updates the child's message property when parentMessage changes. |
| Actual |
The child receives the initial value during SSR but the binding does not propagate subsequent changes. The parent's {{parentMessage}} interpolation DOES update. |
| Root cause |
Property bindings (:prop) perform a one-time assignment during hydration but do not establish ongoing subscriptions like FAST Element's :prop="${x => x.value}" arrow-function bindings. |
| Affected apps |
settings_btr (page data propagation), any BTR app passing data between parent and child components via :prop. |
| Severity |
P1 — Broken functionality. Parent-to-child data flow is a fundamental component communication pattern. |
| Workaround |
Fresh element creation — replace the child element entirely. See Workaround C. |
| Suggested fix |
Framework-level: :prop bindings should establish ongoing subscriptions during hydration, identical to FAST Element's runtime property binding behavior. |
🐛 Bug Report
After client-side hydration, structural template directives (
<f-when>,<f-repeat>) and property bindings (:prop) do not re-evaluate when theirunderlying
@observableproperties change. Simple{{interpolation}}andattribute bindings DO work reactively, creating an inconsistency that forces
app developers into imperative DOM workarounds.
💻 Repro or Code Sample
<child-display :message="{{parentMessage}}">updates the child'smessageproperty whenparentMessagechanges.{{parentMessage}}interpolation DOES update.:prop) perform a one-time assignment during hydration but do not establish ongoing subscriptions like FAST Element's:prop="${x => x.value}"arrow-function bindings.settings_btr(page data propagation), any BTR app passing data between parent and child components via:prop.:propbindings should establish ongoing subscriptions during hydration, identical to FAST Element's runtime property binding behavior.