
Show HN: SwiftyState is a state engine with an on-device GUI - mrtksn
https://github.com/mrtksn/SwiftyState
======
mrtksn
Recently I started using Swift to develop for iOS and as someone used to deal
with the web technologies, it felt quite an opaque process when I am away from
the XCode's debugger. I also missed Redux, it was so easy to simply open the
developer tools and see what's going on and rewind the state when something
funny happens.

To fix this, I created a library that somewhat works like the Redux library
and created a UI for debugging the state that runs on the iOS independently
from XCode. Shake the device to open the debugger, quite useful when you are
testing the device in the wild.

I wanted XCode to continue helping me out with it's autocompleting so paid
attention to that too.

After a while, I had this state management library that was working very well
for me so decided to pack it as a framework and open source it so that others
can benefit too.

In essence, SwiftyState provides you with a central source of truth across
your app, the truth in the source can only be changed through actions that you
create and you can subscribe to state changes to update your UI or do
something when a value in the state changes.

SwiftyState also gives you out of the box functionality to save the state on
disk, export it as JSON or load it.

The debugger that can be opened by shaking your iPhone currently shows actions
that were run, the complete state and state history. You can use the slider to
go back in time and load any previous state.

I hope you like it and if you do so it would be great if you contribute. I
want to turn the debugger into a full-blown "developer tools" for iOS and make
the native app development process a bit more independent from XCode(or your
favouriteIDE)

