diff --git a/lib/mixins/property-accessors.html b/lib/mixins/property-accessors.html index bddf9d4fca..b429459c05 100644 --- a/lib/mixins/property-accessors.html +++ b/lib/mixins/property-accessors.html @@ -477,11 +477,12 @@ } /** - * Call to enable property accessors. This method must be called - * for any side effects of setting properties to occur. For elements, - * generally `connectedCallback` is a normal spot to do so. - * It is safe to call this method multiple times as it only turns - * on property accessors once. + * Call to enable property accessor processing. Before this method is + * called accessor values will be set but side effects are + * queued. When called, any pending side effects occur immediately. + * For elements, generally `connectedCallback` is a normal spot to do so. + * It is safe to call this method multiple times as it only turns on + * property accessors once. */ _enableProperties() { if (!this.__dataEnabled) { diff --git a/lib/mixins/property-effects.html b/lib/mixins/property-effects.html index 0591094250..59ef27e49e 100644 --- a/lib/mixins/property-effects.html +++ b/lib/mixins/property-effects.html @@ -1432,6 +1432,9 @@ if (!this.__dataClientsInitialized) { this.__dataClientsInitialized = true; this._readyClients(); + // Override point where accessors are turned on; importantly, + // this is after clients have fully readied, providing a guarantee + // that any property effects occur only after all clients are ready. this.__dataInitialized = true; } else { // Flush all clients