Skip to content

Commit 666efd4

Browse files
committed
v11.17.0 Release Notes - work in progress
1 parent 9b3169d commit 666efd4

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

.github/RELEASE_NOTES/v11.17.0.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,21 @@ We are excited to showcase a new demo application developed in cooperation with
4545
* **Virtual File Tree:** A `TreeList` navigation component that dynamically reflects the state of the in-memory Git repository.
4646

4747
### ⚛️ Core Refactoring: Architectural Precision
48-
We performed a massive, deep-dive refactoring of the core rendering pipeline and worker architecture. These changes eliminate race conditions, reduce memory overhead, and ensure buttery-smooth performance.
48+
We executed a massive, deep-dive refactoring of the core rendering pipeline and worker architecture. These changes eliminate race conditions, reduce memory overhead, and ensure deterministic state synchronization.
4949

50-
* **Rendering Pipeline:**
51-
* **Unified Update Strategy:** We merged the manual DOM update path (`App.applyDeltas`) with the VDOM update pipeline. Both now use a standardized `updateVdom` action, ensuring consistent `requestAnimationFrame` synchronization across the board.
52-
* **Read/Write Queues:** The Main thread (`Neo.Main`) now strictly enforces a consolidated **Read/Write** queue model, replacing the legacy triple-queue system. This maximizes DOM batching efficiency.
53-
* **Zero-Delta Optimization:** `Neo.worker.Manager` now intelligently intercepts and drops "empty" updates before they needlessly occupy the main thread.
54-
* **AutoMount as Delta:** The "magic" `autoMount` process has been transformed into a standard `insertNode` delta operation, unifying the mounting logic.
55-
* **Mount Refactor:** `mount()` is now a direct, lightweight alias for `initVnode(true)`, removing the legacy `VdomLifecycle` overhead for unmounted components.
50+
* **Rendering Pipeline Unification:**
51+
* **Unified Update Strategy:** Previously, manual DOM updates (`App.applyDeltas`) and VDOM updates used separate communication channels (`updateDom` vs `updateVdom`). We have merged them into a single `updateVdom` pipeline. Now, every DOM change—whether from a VDOM diff or a direct delta—benefits from the same `requestAnimationFrame` synchronization and Promise-based reply mechanism.
52+
* **Read/Write Queue Model:** We overhauled the Main thread's task management (`Neo.Main`). The legacy triple-queue system (`read`, `update`, `write`) has been consolidated into a strict **Read/Write** model. This aligns with modern DOM batching best practices (preventing layout thrashing) and simplifies the execution flow.
53+
* **Zero-Delta Optimization:** The `WorkerManager` now intelligently inspects VDOM diffs before they leave the worker thread. "Empty" updates (zero deltas) are intercepted and dropped immediately, preventing them from clogging the Main thread's message queue.
54+
55+
* **Mounting & Lifecycle:**
56+
* **AutoMount as Delta:** The `autoMount` process, which previously used a special "magic placeholder" logic, has been transformed into a standard `insertNode` delta operation. This unifies the mounting logic with the rest of the delta update system.
57+
* **Mount Refactor:** `mount()` is now a direct, lightweight alias for `initVnode(true)`. We removed the `hasUnmountedVdomChanges` mechanism from `VdomLifecycle`, eliminating the overhead of tracking state changes for unmounted components.
5658

5759
* **State & Scroll Management:**
58-
* **Save Scroll Position:** `scrollTop` and `scrollLeft` are now first-class citizens in the VNode structure. This allows scroll state to be captured live (`onScrollCapture`) and **automatically restored** when components are moved or re-mounted (e.g., during drag-and-drop or tab switching).
59-
* **Grid Scroll Sync:** Fixed a critical race condition in Buffered Grids by enforcing bidirectional synchronization of scroll state between the Main thread and VDOM worker.
60+
* **Bidirectional Scroll Sync:** We addressed a critical race condition in the Buffered Grid where rapid scrolling caused flickering. The new architecture enforces **bidirectional synchronization**:
61+
1. **Preservation:** When the VDOM worker calculates a patch, it now respects the *live* scroll position captured by the Main thread (`onScrollCapture`), preventing stale VDOM state from resetting the browser's scroll position.
62+
2. **First-Class State:** `scrollTop` and `scrollLeft` are now first-class properties in the VNode structure, ensuring they are preserved during component moves (e.g., drag-and-drop).
6063

6164
* **Architecture & Memory:**
6265
* **Explicit Window IDs:** We are migrating away from the ambiguous `'main'` destination string. Cross-worker communication now prioritizes explicit `windowId` routing, essential for robust Multi-Window applications.

0 commit comments

Comments
 (0)