All selected work

GroupMe / Interaction & reliability / 2025

Feedback and responsive interactions.

Contextual feedback and optimistic poll updates that recover when a request fails.

  • Core Data
  • Optimistic updates
  • Feedback flows

The problem

Small interruptions add up: a vote feels unresponsive while it waits on the network, and reporting a problem is harder once the relevant screen has disappeared.

My contribution

  • Implemented in-app feedback and a shake-triggered reporting flow with a confirmation step and screenshot context.
  • Changed poll voting to update local state immediately, reconcile with the service on success, and roll back the applied change on failure.
  • Fixed navigation, loading and layout issues alongside feature work, following behavior across the UI and data layers.

Technical decisions

Optimism needs a recovery path

Separated the local vote update from the network request. Preserved the previous state so a failed request could undo the local change rather than leave an incorrect vote on screen.

Keep feedback intentional

Used a confirmation sheet and a user-controlled setting for shake-triggered feedback, with limits to prevent repeated prompts.

Measure the feedback flow

Tracked submission, cancellation and failure separately so completing a report was distinguishable from merely opening the form.

The result

Poll votes appeared without waiting for the network response, with rollback on failure. People could start a contextual problem report from the screen they were using.

These are changes to interaction behavior. I do not attribute a measured network-speed improvement or support-ticket reduction to them.