Modern JavaScript frameworks ship a lot of non-standards in the name of reactivity: custom syntax, JSX, single-file components, templating systems, build steps. Most developers accept this as the cost of doing business.
WildflowerJS started with the question: are there any frameworks out there that retain a separation of concerns, have no new language or syntax, but are still reactive?
The question had no satisfying answer. Frameworks that came close either used non-standard attribute names, blurred the line between HTML, CSS, and JavaScript with JSX or single-file components, required a build step, or lacked the depth of the major frameworks. None satisfied all the constraints at once.
That gap pointed to a possibility: what if those constraints were the framework's core principle?
1st principle: 100% standards compliant development
Within weeks a working prototype had taken shape: no non-standard anything, no proprietary templating, no mixing concerns. Just HTML, JS, and CSS. People who knew core web standards would be able to develop with it without having to learn a new meta-system.
Other principles began to appear:
2nd principle: No virtual DOM
The decision to go 100% standards compliant led to the question "If we have HTML and JS, don't we already have everything we need?" and the decision to not pursue a virtual DOM.
That decision led to a specific architectural challenge: if we're working directly with the real DOM, and DOM elements can be added and removed programmatically, we need a way to maintain bindings across those mutations without a virtual layer. The answer is a single reactive dependency graph. State, computed values, effects, and DOM bindings are all nodes in one graph, and each binding records exactly the values it reads, so a change wakes only the bindings that read it and bindings re-link as the DOM changes underneath them. Nested list contexts and cross-component reactivity resolve through that one graph, without a virtual layer and without a separate bookkeeping structure shadowing the DOM.
3rd principle: No compilation/build step
This follows directly from the first two: if we have everything we need in HTML and JS, why compile? But the benefit runs deeper than saving a step. No build step means no bundler to configure, no toolchain to keep current, no node_modules tree to audit every few months.
That last one matters more than it used to. AI-assisted vulnerability discovery is already changing what's findable in a codebase. A capable model can scan a dependency graph and surface real security issues in minutes, not months. The npm ecosystem, with its transitive dependency chains running hundreds deep, is about to look very different through that lens. Projects with zero runtime dependencies don't have that problem. Save the file, reload the browser. That's the loop. Your code in 2026 still runs in 2036, because it's just HTML and JavaScript.
4th principle: Robustness and performance of existing frameworks
The principles had to prove themselves: development proceeded with constant benchmarking against mainstream frameworks, and reassessing what needed to ship in v1 to launch at parity with them.
5th principle: jQuery-like simplicity
jQuery's genius wasn't that it was immediately intuitive. It was that it gave developers a consistent, concise interface to the web platform, eliminating whole categories of friction without replacing what was already there. That's the benchmark WildflowerJS held itself to: not a new mental model, but a simpler path to reactivity.
So here we are at version 1.0. WildflowerJS is our statement of what reactivity can be when you hold it to these principles. Whether it meets that bar is for you to decide. View the documentation and demos, try building an app, and let us know what you think: share your feedback on GitHub.