Atomica exists because modern UI frameworks have become harder than the problems they solve.
This document is not a list of missing features. It is a list of intentional refusals.
These constraints are not temporary. They are the product.
Atomica does not re-render components by default.
State changes update only the DOM nodes that depend on that state.
If you are thinking in terms of re-renders, you are thinking in the wrong model.
There are no lifecycle methods.
There is:
Atomica does not have:
useEffectcomponentDidMountcomponentDidUpdateIf something needs to happen when state changes, you express that directly.
Reactivity in Atomica is explicit and visible.
You can see:
There are no:
If something reacts, it’s because you wrote the reaction.
JSX is optional.
Atomica’s real API is functions.
If JSX disappeared tomorrow, Atomica would continue to function unchanged.
Atomica avoids invisible behavior.
There is no:
When something updates, it’s because a signal changed.
That’s it.
Atomica is not:
Atomica solves one problem:
Keeping the DOM in sync with state, precisely and predictably.
Everything else belongs on top.
Atomica favors:
Performance emerges from simplicity, not from layers.
New features are not added because they are common elsewhere.
A feature is only added when:
If a feature can live outside the core, it should.
Atomica exists because:
Atomica will remain small.
If it stops being small, it will stop being Atomica.
If you are about to add:
Stop.
Ask whether it makes the model clearer — or merely more familiar.
Familiarity is not a goal. Clarity is.