Explanation of what’s going on in the Soapbox development branch:
Soapbox is based on Mastodon’s UI, which was created in 2017.
The React ecosystem has completely changed in the past 6 years. Over time we’ve kept up by migrating from class components to function components, and converting the whole application in TypeScript.
Now the data fetching layer (and its cache) need to be modernized. We’re currently using Immutable.js, an old library created by Facebook in 2015 which is now abandoned by the original authors. It has poor support for TypeScript and slows down development.
We are removing Immutable.js and parsing API responses with zod instead. This gives us great type support and guarantees, which will increase stability in the long term.
We are consolidating all Redux actions and reducers into a single “entity store” reducer that eliminates boilerplate and lets us build out actions with hooks that have an API similar to react-query.
Unlike the other changes we’ve made, it’s very difficult to do this incrementally, so there are some bugs arising that we’re squashing along the way.
So far only Accounts have been completely moved over to the new system. Next is Statuses, which will be an even greater ordeal.
We basically need to do this in order for Soapbox to survive into the next era. I think it’s awesome how it has survived so long and transformed completely from its original state, and I intend to carry the torch into the next era. This is a long-term strategy.
If you value stability, you may want to hold off pulling from the Soapbox develop branch for a while. If you want bleeding edge, we value your feedback, and your bug reports are very helpful.