There’s absolutely no way you’ll have worse performance with this vs React. The app is modifying the target elements directly, not recreating the whole page with innerHTML. React will do the same amount of work at a minimum, and that’s after rebuilding the whole tree and diffing it.
The main bottleneck here are the synchronous localStorage calls happening in the render path, they could be moved to a separate timer.