You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: resources/content/release-notes/v12.0.0.md
+53-2Lines changed: 53 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -155,8 +155,59 @@ flowchart TD
155
155
***Resilient Lifecycle:** Component columns (like our Living Sparklines) are now standard children of the `Row` component. Because the row itself is never destroyed, the framework's standard lifecycle manages cell components automatically, permanently eliminating the dreaded "Zombie Canvas" bugs.
* We upgraded `Neo.grid.Body` to enforce strict **Row Pooling**. As you scroll, rows leaving the top of the viewport are recycled in place via CSS `translate3d`.
159
-
**The Flex:* When you scroll the 50,000-record DevIndex grid, there are **ZERO structural DOM mutations** (`insertBefore`, `removeChild`, `moveNode`). There can be 600 deltas in a single tick, but they are exclusively fast CSS transforms and `textContent` updates. The DOM order never changes, effectively eliminating layout recalculations.
158
+
* We upgraded `Neo.grid.Body` to enforce strict **Row Pooling**. As you scroll, rows leaving the top of the viewport are recycled in place via hardware-accelerated CSS `translate3d`.
159
+
**The Flex (Empirical Proof):* During maximum-velocity vertical scrolling stress tests on the 50k-record DevIndex, we analyzed the exact composition of the VDOM delta payloads crossing the worker bridge.
160
+
161
+
```mermaid
162
+
graph TD
163
+
subgraph Mounted Row Range (DOM Pool)
164
+
TopBoundary[--- Top of Viewport ---]
165
+
R1[DOM Row 1: translate3d(0, 0px, 0)]
166
+
R2[DOM Row 2: translate3d(0, 50px, 0)]
167
+
R3[DOM Row 3: translate3d(0, 100px, 0)]
168
+
BottomBoundary[--- Bottom of Viewport ---]
169
+
end
170
+
171
+
Scroll[User Scrolls Down] -->|Moves DOM out of bounds| R1
// 3. Ultra-granular deltas INSIDE a Component-Based Column (e.g. the 'Impact' Heuristics column)
201
+
{
202
+
"id":"neo-vnode-353",
203
+
"textContent":"🏛️",
204
+
"cls": { "add": ["pillar"], "remove": ["bolt"] },
205
+
"attributes": { "title":"Consistency: Community Pillar (>10y)" }
206
+
}
207
+
]
208
+
```
209
+
* We intentionally trade cheap JavaScript cycles (calculating and serializing 800 JSON objects takes **< 3ms**) to completely eliminate Native DOM Layout Thrashing. Even deep inside complex, nested component columns (like the DevIndex "Impact" badges), the framework resolves changes down to microscopic CSS class toggles (`add`/`remove`) and `textContent` updates.
210
+
* By using `translate3d` specifically, we force the browser to hand the positioning off to the GPU. Because the strict "mounted row range" limits the total number of DOM nodes, we achieve **Compositor Heaven**: we leverage GPU hardware acceleration without triggering a "layer explosion" that would overwhelm video memory. The browser never recalculates the layout tree because the DOM structure never changes.
160
211
161
212
3.**"Full Pool Rendering" for Cells (O(1) Horizontal Scroll):**
162
213
* We extended the zero-mutation philosophy to horizontal scrolling. Each row implements a "Full Pool Rendering" strategy, generating a fixed-size array of cell nodes based on the `gridBody.cellPoolSize`.
0 commit comments