The build tool that finally became Engine with a memory.

Every build tool you've used starts from zero.

Restart your dev server — zero. Switch a branch — zero. Trigger CI on unchanged code — zero. It doesn't matter how fast the tool is. Stateless execution means every run pays the full cost of the previous one, again.

Ionify is built on a different premise: a build engine should accumulate intelligence, not discard it.


What that means in practice

Ionify maintains a Persistent Dependency Graph and a Content-Addressable Storage (CAS) layer that survive across process restarts, branch switches, and CI runs.

The graph isn't a cache. Caches are bolt-ons that expire and get invalidated. The graph is the source of truth — a live model of your project's structure that the engine reads from and writes to on every run.

When you change a file, Ionify re-enters the graph at the changed node. Everything upstream that's unaffected? Never touched. Every transformed module is addressed by the hash of its input — if the input hasn't changed, the output is retrieved instantly, across restarts, across branches, across machines.

The result: on projects with 11,000+ modules, warm rebuilds converge toward s100ms — compared to 2-3 seconds warm-build the same project in Vite. That's not a benchmark trick. It's what happens when the engine stops repeating work it already did.


One pipeline. Dev and prod.

Traditional tooling has a split-brain problem. Your dev server and your production bundler are different tools with different behavior. You've felt this: something works in dev, breaks in prod, and the debugging session starts.

Ionify runs one deterministic pipeline for both environments. Same engine, same module IDs, same transform semantics. The divergence class of bugs doesn't exist because the divergence doesn't exist.

The transform layer is a hybrid: OXC handles the fast path — modern JS, brutal throughput. SWC covers the resilience layer — ecosystem edge cases, compatibility guarantees. Both live in the same pipeline. You don't configure this. It just works.


packSlimming: deps that never rebuild

Ionify replaces per-build tree-shaking with packSlimming — a persistent dep optimization layer backed by the CAS.

Your dependency graph is analyzed once. That analysis is stored, addressed by content hash, and reused across every subsequent run — dev restarts, production builds, CI. Your deps optimization is live from the first cold start and never repeated unless something actually changes.


No plugin hell

React works natively. There's no `vite-plugin-react`, no plugin compatibility matrix, no config chain to maintain. Frameworks are understood at the engine level. You don't wire things together — Ionify already knows.


The foundation, not the ceiling

Because Ionify persists your project's structure, it can do things a stateless tool never could:

  • Ionify Analyze — surfaces build costs, transformation hotspots, and request waterfalls across your project's history. Not a snapshot. A timeline.
  • Predictive rebuilds — the engine identifies which modules change most frequently and optimizes rebuild paths ahead of time.
  • AI-ready infrastructure — a persistent model of your project is the primitive that AI-assisted build analysis needs. We're building toward it.

Ionify is not trying to be the fastest version of what already exists. It's a different model: a build engine that understands your project the way a senior engineer does — and gets smarter every time it runs.


Try it

```bash pnpm create ionify@latest ```

Scaffolds a fully configured environment in seconds. Architecture deep-dive: ionify.cloud/architecture