DEV Community

KhaledSalem
KhaledSalem

Posted on

Ionify 0.1.37 Is Here: 30ms No-Change Builds and ~120ms One-File Rebuilds

Ionify 1.0.37 is here.

⠀
Here’s the part I care about most.
⠀
Test project:
⠀

⠀
~15,000 React components
⠀
~25,000 dependencies
⠀
Production build
⠀
Enter fullscreen mode Exit fullscreen mode

⠀
Vite 8:
⠀

⠀
Initial build        ~2.7s
⠀
No-change build      ~2.7s
⠀
One-file change      ~2.7s
⠀
Enter fullscreen mode Exit fullscreen mode

⠀
Ionify:
⠀

⠀
Initial build        ~5s
⠀
No-change build      ~30ms
⠀
One-file change      ~120ms
⠀
Enter fullscreen mode Exit fullscreen mode

⠀
Yes, Ionify currently loses the first build.
⠀
That is something I’m actively working on.
⠀
But the interesting part starts after the first build.
⠀
If nothing changed, Ionify tries not to rebuild anything.
⠀
If one source changed, the goal is to rebuild the affected work rather than traverse and reproduce the entire project again.
⠀
Conceptually:
⠀

⠀
traditional repeated build
⠀
project
⠀
  ↓
⠀
scan
⠀
  ↓
⠀
resolve
⠀
  ↓
⠀
transform
⠀
  ↓
⠀
bundle
⠀
  ↓
⠀
emit
⠀
Enter fullscreen mode Exit fullscreen mode

⠀
Ionify increasingly behaves more like:
⠀

⠀
known project state
⠀
       ↓
⠀
what changed?
⠀
       ↓
⠀
affected work
⠀
       ↓
⠀
reuse everything else
⠀
Enter fullscreen mode Exit fullscreen mode

⠀
That sounds obvious.
⠀
But at scale, the difference becomes significant.
⠀
A build system shouldn’t only become faster because parsing, transforms or bundling became faster.
⠀
It should become faster because most of the previous work no longer needs to happen.
⠀

Fewer plugins by default

⠀
There is another part of Ionify that I’ve learned matters a lot when showing it to frontend developers:
⠀
plugin fatigue is real.
⠀
Plugins are useful. Ionify supports them, and the README now documents the supported plugin surface.
⠀
But the engine shouldn’t require a plugin for every fundamental part of the frontend workflow.
⠀
My direction with Ionify is:
⠀

⠀
strong core
⠀
+
⠀
plugins when you actually need extension
⠀
Enter fullscreen mode Exit fullscreen mode

⠀
rather than:
⠀

⠀
small core
⠀
+
⠀
plugins required to assemble the normal workflow
⠀
Enter fullscreen mode Exit fullscreen mode

⠀
So the practical pitch for Ionify is becoming very simple:
⠀
Fast builds. Fewer plugins. Less repeated work.
⠀
The architecture underneath that is more complicated, of course.
⠀
Ionify keeps persistent knowledge about previous work, tracks ownership of verified results, and tries to invalidate only the work affected by a change.
⠀
But you shouldn’t need to understand the architecture before the product becomes useful.
⠀
The result should explain itself.
⠀
Change one file.
⠀
Build again.
⠀
And watch how little work actually needs to happen.
⠀
Ionify is open source and still early.
⠀
0.1.37 is another step toward making frontend builds incremental by default rather than repeatedly rebuilding what the system already knows.

Top comments (0)