Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: SwiftyState is a state engine with an on-device GUI (github.com)
1 point by mrtksn 9 days ago | hide | past | web | favorite | 1 comment

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)

Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact