Zero Dependencies
No jQuery, no lodash, no uglify-js. Pure native DOM APIs with zero runtime deps.
A modern, zero-dependency rewrite of Meteor Blaze โ faster, smaller, fully typed.
Here's what Blaze-NG looks like in action:
import { Template } from '@blaze-ng/core';
Template.counter.onCreated(function () {
this.count = new ReactiveVar(0);
});
Template.counter.helpers({
count() {
return Template.instance().count.get();
},
});
Template.counter.events({
'click .increment'(event, instance) {
instance.count.set(instance.count.get() + 1);
},
'click .decrement'(event, instance) {
instance.count.set(instance.count.get() - 1);
},
'click .reset'(event, instance) {
instance.count.set(0);
},
});| Feature | Original Blaze | Blaze-NG |
|---|---|---|
| Language | JavaScript (ES5) | TypeScript (strict) |
| Dependencies | jQuery + lodash + uglify-js | Zero |
| Bundle size | ~25KB gzip | 29 KB gzip (core runtime) |
| DOM manipulation | jQuery wrappers | Native APIs |
| Reactivity | Tracker only | Any reactive system |
| Module format | Meteor packages | ESM + CJS |
| Testing | Tinytest | Vitest (490 tests) |
| SSR | Limited | Full support |
| WASM acceleration | None | Optional |
Real numbers from the benchmark suite:
| Category | Highlight | ops/sec |
|---|---|---|
| First Render | Static div โ DOM | 10,151 |
| Reactive Update | Single text change | 10,220 |
| Batched Updates | 100 updates, 1 flush | 12,022 |
| Attribute | Style property update | 11,714 |
| List | Create 100 rows | 660 |
| Lifecycle | Create + destroy cycle | 10,001 |
| Compilation | Simple template โ JS | 117,950 |
| Diff | Shuffle 100 items | 129,568 |
Run benchmarks yourself:
pnpm bench:run # Full benchmark suite (34 suites)
pnpm bench:compare # Old vs New head-to-head comparison
pnpm bundle-size # Bundle size analysisSee the full Performance & Benchmarks page for all results, including head-to-head comparisons with original Blaze.