The singletons are only problematic if you need to interact with them asynchronously. `React.renderToString` is synchronous, so there's no reason stores have to be async.
Shameless plug: Fynx[0] is mostly synchronous, for example.
but how would you deal with async data fetches then?
I want to have the same routing and data fetching logic both on the client and on the server, and for that I would need to have stores that are independent for different incoming HTTP requests.
I'm not sure how you're supposed to do it, but that hasn't been a problem for me. I set up two actions: load and init. load starts a request and init sets the data in the store.
Shameless plug: Fynx[0] is mostly synchronous, for example.
[0]: https://www.npmjs.com/package/fynx