If I closed my eyes and designed the API first, it would look like the `/pages` convention – just add state "slice" files in `/store` (like `src/store/user.ts`) and then use either React hooks inside the component (like `useStore` or `useMutation`) or use something (like `getServerSideState`) on the server.
Your state "slices" would export initial state, types (optionally), and an object containing getters, setters, and mutations (using Vuex concepts).
iMessage only makes sense on the iPhone with its full suite of Apple solutions. I don’t know why Google split up their video and then their chat into multiple directions but on Apple these exist as a workflow of solutions.
Thus they are vulnerable to a do it all app like WhatsApp. IMO just exporting iMessage wouldn’t have been enough, they would’ve needed to combine FaceTime too.