Coralite v0.37.0 Released
Coralite v0.37.0 has been released. This version focuses on structural maturity and core performance, introducing a strict three-phase build pipeline to support Incremental Static Regeneration (ISR), unified asynchronous plugin dependency resolution, native client-side element references, and major optimizations to AST cloning and server-side rendering.
Three-Phase Build Queue and Incremental Static Regeneration #
To support reliable Incremental Static Regeneration (ISR), we have refactored the build pipeline into a strict three-phase system consisting of Staging, Invalidation, and Rendering. By sealing the build queue after Phase 1, we eliminate concurrency deadlocks while permitting virtual page generation via the onBeforeBuild hook. The new invalidation engine uses a two-tier check (file system metadata paired with xxHash64 hashing) to detect modifications and trigger atomic manifest writes, keeping builds safe and fast.
Native Client-Side Refs #
The refs plugin has been integrated directly into the Coralite core. The custom ref attribute is now standardized as data-ref, and a native refs(id) helper is provided inside the component script context. This integration improves hydration performance and removes the need for external ref-tracking plugins.
<button data-ref="submit-btn">Submit</button>
<script>
const btn = refs('submit-btn')
btn.addEventListener('click', () => {
// Native ref handler logic
})
</script>
Plugin Service Registry & Architecture Refactoring #
This release introduces a new Registry class for asynchronous plugin dependency resolution. Plugins now follow a two-phase lifecycle: Phase 1 evaluates global setup and receives the registry, and Phase 2 handles component-level evaluation. To prevent pollution, plugin exports are no longer merged automatically into component contexts and must instead be imported explicitly. Furthermore, the Phase 1 signature has been simplified to accept a single pluginContext argument, using prototype delegation to safely expose configuration.
export default {
server: {
exports: (pluginContext) => {
const { app, registry, config } = pluginContext;
// Parallelized initialization and secure dependency resolution
return {
myHelper() {
return config.mode;
}
};
}
}
};
Advanced Visual Error Reporting #
Coralite v0.37.0 delivers redesigned error formatting in the terminal. When execution errors occur, the framework leverages Acorn to recover precise source locations (line and column numbers) from VM modules and print the relevant code snippet along with a caret indicator.
> components/alert.html:5:10: error: Unexpected token
3 | export default {
4 | render() {
5 | return <div>;
| ^
</div>
Rendering and AST Optimizations #
We have implemented several performance improvements to increase local development and build speed. The renderer now parallelizes component rendering across pages and slots using Promise.all. Additionally, circular properties (such as parent, prev, next, and slots) in the AST are now stored as non-enumerable prototype getters and setters. This shift from per-instance property definitions yields a 17x speedup in AST node cloning benchmarks.
Breaking Changes #
- Async Factory Function: The Coralite class has been replaced with the
createCoralite()async factory function. - Plugin Context Signature: Plugin Phase 1 functions now receive a single
pluginContextargument instead of two separate arguments. - Refs Attribute: The
refattribute has been renamed todata-ref, and the externalrefsPluginhas been removed. Use the nativerefs(id)helper. - Virtual Flag: The
physicalproperty onHTMLDataobjects has been replaced by thevirtualproperty, inverting its logic. - Component Context Isolation: Plugin exports are no longer automatically merged into component execution contexts, avoiding global state pollution.
How to Upgrade #
To upgrade to the latest version, update your project dependencies:
npm install coralite@0.37.0
npm install coralite-scripts@0.37.0
