---
tagName: 10.0.0-beta.6
name: Neo.mjs v10.0.0-beta.6
publishedAt: '2025-07-18T15:31:18Z'
isPrerelease: false
isDraft: false
---
# Neo.mjs v10.0.0-beta.6

# Neo.mjs v10.0.0-beta.6 Release Notes

This release represents a monumental leap forward, introducing a deeply re-architected reactivity system and a revolutionary VDOM engine that enables surgical, high-performance updates. Building on the foundation of `beta.5`, this version delivers a state-of-the-art developer experience with a new config system, synchronous batched effects, and the official debut of **Functional Components**.

## ✨ Highlights

### 🚀 Hyper-Optimized VDOM Update Engine

While Neo.mjs has long used a "scoped" VDOM model, this release introduces a revolutionary **update aggregation and orchestration engine**. This new architecture dramatically enhances performance in complex, real-world scenarios (#7076, #7077).

- **Centralized Orchestration:** The new **`Neo.manager.VDomUpdate`** singleton acts as a central orchestrator, intelligently merging multiple, simultaneous update requests from different components into a single, atomic transaction.
- **Combined & Asymmetric Payloads:** Imagine a toolbar and one of its ten buttons both change state in the same event loop. The new VDOM engine can now generate a **single, minimal, asymmetric VDOM payload** containing the toolbar's structure and *only* the updated button's new content. This results in one hyper-efficient update instead of multiple, potentially conflicting ones.
- **Key Benefits:** This new model drastically reduces worker traffic, minimizes payload size, and guarantees state integrity for all callbacks, even during complex, overlapping updates.

### 🧠 Fine-Grained Reactivity & The New Config System

The core of this release is a new, more powerful way to define and manage reactive state.

- **`@reactive` Decorator:** We have introduced a new `@reactive` decorator (or a `_` suffix as a non-decorator alternative) to explicitly flag configs as reactive. This improves code clarity and makes the developer's intent clear.
- **`Neo.createConfig()`:** The logic for creating reactive configs has been separated from the class system's `setupClass()`. The new `Neo.createConfig()` method allows for the creation of **named, instance-level reactive configs**, providing unparalleled flexibility for dynamic state management.

### ⚡ Synchronous Effects & Atomic Batching

The effect system has been re-engineered for maximum control and performance.

- **Synchronous by Default:** Effects now run synchronously by default, providing a more predictable execution flow. The `lazy: true` option is still available for cases where initial execution needs to be deferred.
- **`EffectManager.pause()`:** The `EffectManager` can now be paused, giving developers fine-grained control over when dependency tracking is active.
- **Atomic Batching:** The `EffectBatchManager` ensures that all updates triggered by a single, top-level operation (like `setData()`) are collected, de-duplicated, and executed in a single, atomic batch.

### 💻 Functional Components & Unified VDOM Lifecycle

This release officially introduces a new, modern paradigm for building UIs in Neo.mjs, supported by a unified lifecycle.

- **New `VdomLifecycle` Mixin:** The core VDOM lifecycle logic has been extracted from `component.Base` into the new **`Neo.mixin.VdomLifecycle`**. This major architectural improvement allows both class-based and functional components to share the exact same robust and predictable lifecycle.
- **Declarative UI:** Create components as pure functions using the new `defineComponent` method. Manage state effortlessly with reactive hooks like `useConfig`.
- **Real-World Example:** The new **Email Application** (`apps/email/view/MainView.mjs`) is built entirely with functional components, serving as a comprehensive showcase of this new architecture.

### 📦 Core Enhancements & Stability

- **Enhanced Mixin System:** Mixins are now a first-class citizen for composing component features. They can now contribute directly to the `static config` of a class, including both reactive and non-reactive properties, which are intelligently merged with the class's own configs (#6905).
- **Improved Update Stability:** A small but critical change to `updateVdom()` now prevents it from queuing any updates before a component is fully constructed (`isConstructed` is true). This eliminates a whole class of potential race conditions and ensures updates only happen when a component is in a valid rendering state.
- **`Neo.gatekeep()`:** A new `Neo.gatekeep()` method has been introduced to standardize how singleton and module exports are handled, improving consistency and preventing duplicate instantiations (#7081, #7072).

### 📚 New Content & Developer Experience

- **Enhanced Live Previews:** The LivePreview engine has been overhauled to fully support functional components and modern JavaScript (#7069, #7073).
- **New Framework Comparisons:** The documentation now includes new, in-depth comparison articles against other popular frameworks (like React) to better highlight the unique architectural advantages of Neo.mjs.
- **New Tests & Learning Content:** This release is backed by a massive suite of new tests covering all aspects of the new reactivity model and VDOM engine. The learning content has also been significantly expanded.

All changes combined into 1 commit: https://github.com/neomjs/neo/commit/7e3aeaa88ee684e3e6f16d9e8dbe0f6149dde5cc
