In-app feedback with Firestore: 6x more responses than email

Adam Gelatka

Every app has a “Contact Us” row that opens a pre-filled email. It feels like a feedback channel. In practice, it mostly isn’t: in three months, the email route collected exactly two pieces of feedback.

The problem is friction. Tapping the row throws the user out of your app into a mail composer — recipient, subject, signature, their real email address attached whether they like it or not. Most people close it. Opening email is not enough.

The fix: a form that writes to Firestore

The replacement is deliberately small: one in-app screen with a message field and an optional contact email, submitted with a single tap. No account, no mail app, no context switch.

Under the hood there’s no backend to build. The form writes a document straight to a Firestore collection:

quick_feedback/{documentId}
├── message        "It would be nice if more languages were supported"
├── contact        (optional)
├── appVersion     "1.3.2"
├── buildNumber    "1"
├── platform       "iOS"
├── revenueCatUserId  "$RCAnonymousID:..."
└── createdAt      timestamp

The metadata comes for free from the app at submit time, and an anonymous user ID (RevenueCat’s, in this case) lets you correlate reports without collecting an identity. Reading the results is just browsing a collection — from the Firebase console, or straight from your phone.

The results

Same app, same users, different channel:

  • Email link: 2 feedbacks in 3 months
  • In-app form: 5 feedbacks in the first 2 weeks — roughly a 6× increase in rate

Quality held up too: zero junk submissions. When the effort drops to “type a sentence and tap Submit,” the people who bother are the ones with something to say.

Trade-offs worth knowing

  • Optional email cuts both ways. It removes the biggest psychological barrier — but when users skip it, you can’t reply. Some of your best reports become one-way messages.
  • An open write path invites spam. A public form writing to Firestore needs guardrails: length limits in the client, Security Rules that only allow creates with the expected shape, and App Check if it becomes a problem in practice.
  • Surface the entry point. A form nobody finds performs like the email link. Pairing it with the release-notes card in Settings (“try the quick feedback below”) is what actually drives submissions.

Steal this pattern

The whole feature is a few SwiftUI files — a form view, a view model, and a small service doing one Firestore write. It’s generic enough that it was extracted into a reusable template and dropped into new apps in minutes with a coding agent. Firedeck itself ships this exact pattern: Settings → Quick Feedback.

Hat tip to Michal Černý for the original idea.

Manage Firebase from your iPhone and iPad.

Download on the App Store