All selected work

GroupMe / AI interaction design / 2025

Progressive image loading.

Intermediate image previews and visible progress while Copilot generates the final result.

  • Asynchronous UI
  • Cell lifecycle
  • Error states

The problem

Generating an image takes time. A waiting state needs to show useful progress, transition cleanly to the final image, and recover if the request fails or the conversation scrolls offscreen.

My contribution

  • Owned the iOS implementation of progressive loading for Copilot-generated images, from intermediate previews and progress labels to final-image presentation.
  • Integrated progress behavior into image and carousel message cells rather than treating it as a separate full-screen flow.
  • Handled missing image content, failure states and cell reuse, and followed the feature through rollout.

Technical decisions

Show progress without pretending it is complete

Displayed intermediate content and progress labels while generation continued, then restored the normal message presentation when the final image arrived.

Respect cell reuse

Kept loading presentation aligned with the message state so a reused or offscreen cell did not retain another request's shimmer or progress.

Make failure a visible state

Removed loading indicators when generation failed or produced no image, instead of leaving an indefinite waiting state.

The result

People could see generation progress and intermediate content before the final image, instead of only waiting for a finished result.

This work improved how the client presented waiting and completion. It did not make the image-generation model itself faster.