diff --git a/change/@microsoft-fast-html-4fbef46f-8bc2-4bd4-a785-599c7b2ed9ea.json b/change/@microsoft-fast-html-4fbef46f-8bc2-4bd4-a785-599c7b2ed9ea.json
new file mode 100644
index 00000000000..9146a0d6e3f
--- /dev/null
+++ b/change/@microsoft-fast-html-4fbef46f-8bc2-4bd4-a785-599c7b2ed9ea.json
@@ -0,0 +1,7 @@
+{
+ "type": "prerelease",
+ "comment": "breaking: replace arrays during observerMap deepMerge",
+ "packageName": "@microsoft/fast-html",
+ "email": "7559015+janechu@users.noreply.github.com",
+ "dependentChangeType": "none"
+}
diff --git a/packages/fast-html/DESIGN.md b/packages/fast-html/DESIGN.md
index a9eb08f4934..a67bbed810c 100644
--- a/packages/fast-html/DESIGN.md
+++ b/packages/fast-html/DESIGN.md
@@ -119,6 +119,13 @@ Each path entry can be:
When `properties` is omitted (`observerMap: {}` or `observerMap: "all"`), all root properties are observed. When `properties` is present but empty (`{ properties: {} }`), no root properties are observed.
+Observer-map-managed array updates replace the array reference when `deepMerge`
+receives a new array. This avoids mutating an existing observed array while it
+may be notifying subscribers and lets repeat bindings observe the new array
+reference. Replaced arrays are wrapped with the schema for the assigned
+property, and array observer subscriptions are installed once per array so
+reprocessing does not duplicate accessors or notification work.
+
The resolution algorithm walks the schema and configuration tree in parallel:
1. If `properties` is present and a root property is not listed, it is skipped.
2. `true`/`false` booleans apply to the entire subtree.
diff --git a/packages/fast-html/README.md b/packages/fast-html/README.md
index ec89a3f89f9..7949ece81e5 100644
--- a/packages/fast-html/README.md
+++ b/packages/fast-html/README.md
@@ -266,6 +266,12 @@ observerMap: {
When `properties` is omitted, all root properties are observed (backward compatible). When `properties` is present but empty (`{ properties: {} }`), no root properties are observed.
+When observer-map data is updated with `deepMerge`, array properties are replaced
+rather than updated in place. This avoids synchronous reentrant array work and
+allows repeat bindings to observe the new array reference. Replacement arrays
+are processed through observerMap so nested item properties and subsequent array
+mutations remain observable.
+
#### `attributeMap`
When `attributeMap: "all"` (or `attributeMap: {}`) is configured for an element, `@microsoft/fast-html` automatically creates reactive `@attr` properties for every **leaf binding** in the template — simple expressions like `{{foo}}` or `id="{{fooBar}}"` that have no nested properties. Both `"all"` and `{}` are equivalent and use the default `"camelCase"` attribute name strategy.
diff --git a/packages/fast-html/src/components/utilities.ts b/packages/fast-html/src/components/utilities.ts
index cd49d159af4..cb15b8922d2 100644
--- a/packages/fast-html/src/components/utilities.ts
+++ b/packages/fast-html/src/components/utilities.ts
@@ -1,4 +1,4 @@
-import { Observable } from "@microsoft/fast-element/observable.js";
+import { type Accessor, Observable } from "@microsoft/fast-element/observable.js";
import {
defsPropertyName,
fastContextMetaData,
@@ -181,7 +181,58 @@ const objectTargetsMap = new WeakMap