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