Back to Snap311

Snap311

Changelog

Notable user-facing changes to Snap311, newest first. New features and fixes reach you as App Store / Play Store builds, and smaller updates arrive automatically as over-the-air (OTA) updates — no store update needed.

OTA → v0.7.2

Latest

Over-the-air update

Bundle 01a1234c

Fixed

  • Reports that need a phone number (or email) now ask for it on the report. Some report types — like downed cable wires, compost bins, and several DMV requests — require a phone number in your contact info, and others require an email. Previously the report would send and then be rejected with "not enough information for contact." Now those reports show a "Contact for this report" field, with a one-tap "Use my number" if you've saved one in "Your info." What you enter is used for that report only. If a report was already held for this, open it in "My reports" and tap "Edit & fix" to add it. Thanks to Joel L. for the report that led to this fix.

v0.7.2

Store build

Added

  • Email a report with its photos attached. The report detail screen now has an "Email with photos" button that opens your mail app with a cleanly formatted summary of the request and its photos attached. Photos beyond the size limit are linked in the email instead, and if no mail app is set up the button tells you so.
  • Save a service request's photos to your device's photo library from the report detail screen — tap the save icon next to "Photo"/"Photos (N)".

OTA → v0.7.1

Over-the-air update

Bundle 01a0d0c6

Fixed

  • Your saved “Your info” contact can no longer be cleared when your phone was just locked. If the app updated your profile (starring a favorite, filing a report, or signing in) at the exact moment your phone's secure storage was momentarily locked — which can happen right after the app wakes in the background — it could mistake your unreadable contact for “no contact saved” and wipe it. Your contact is now protected: the app never clears it unless it can actually confirm what's stored.
  • “Your info” no longer looks empty right after your phone was locked. Opening the screen while its secure storage was still locked used to show a blank form, as if your info was gone. It now shows a brief “couldn't read your saved info — it's still here, tap Retry” state and fills back in on its own.

OTA → v0.7.1

Over-the-air update

Bundle 01a0c716

Fixed

  • Your badges and score come back on a new phone — and two phones stay in sync. Your leaderboard standing, points, and earned badges live on our server (tied to your device), so setting up a new phone — or reinstalling — pulls them back down automatically: open “Your impact” and your trophy case fills back in. The app reconciles with the server (never removing anything you've earned), so it also keeps two phones in step. Nothing was ever lost; the app just wasn't fetching it back before.
  • Android: back off Play Integrity attestation after Google rate-limits it, so leaderboard submits recover cleanly instead of repeatedly hitting the limit.

v0.7.1

Store build

Changed

  • Your backup file now includes your full report history. The quick “transfer code” stays small — it carries your settings and leaderboard standing, but not your reports (there can be thousands, more than a code can hold). The backup file carries your reports too, and the backup screen now spells out which method brings what so you can pick the right one for moving to a new phone.

Fixed

  • Fixed a rare Android crash when long-pressing text. On some Android devices, pressing and holding a piece of text — for example to select or copy a link — could crash the app. Now the long-press simply does nothing in that case instead of closing the app.

v0.7.0

Store build

Added

  • Category search now tells you when it can suggest a category for you. On phones that support on-device AI, a hint under the search box invites you to describe your issue in plain words (“there’s a couch dumped in the alley”) and it’ll suggest the right 311 category — the suggestion runs entirely on your device. If your phone supports it but Apple Intelligence is turned off, the hint points you to where to enable it. While it’s working, the “Suggested” header shows a gentle animated sparkle so you can tell it’s analyzing.
  • Move your data to a new phone. Settings › Your data now has “Back up or transfer my data.” If you set a new phone up fresh (instead of restoring it from a backup), save a backup file (to Files / iCloud Drive, or AirDrop it straight to the new phone) — or copy a quick transfer code — to bring over your leaderboard standing and points, your saved reports, favorites, frequent-request shortcuts, your contact info, and your settings. Restore it on the new phone by choosing the file (or pasting the code). Backups never include your 311 login — you sign in again on the new phone. Your backup does contain personal info, so you can optionally lock it with a password (there’s no way to recover it without that password, so don’t lose it).

Changed

  • Leaderboard: each entry's badges now show rarest-first, and tapping a name expands the row to list every badge with its name.
  • "Refresh my history" now asks how much to pull. Choose Recent (90 days) for a quick refresh, or All history to bring your entire 311 account history onto the device — so you can search and filter across all of it. All history can take a bit if you've filed a lot.

Fixed

  • Your data now survives moving to a new phone. Previously, restoring a new phone from an iCloud or device backup could leave Snap311 nearly empty — your past reports were missing and your leaderboard standing didn’t come across (it looked like it was stuck on the old phone). App data is now included in your device backup, so a standard iCloud/Quick Start transfer carries your leaderboard identity, saved reports, and settings over automatically.
  • "My reports" no longer hides your older reports. Your reports are now kept in a proper on-device database instead of a capped list, so search and the report-type filters work across your whole history — not just your most recent ~30–50. The list still loads your most recent reports first for speed and reveals the rest as you scroll.
  • The ID scanner no longer briefly freezes the screen while scanning. Each time the camera grabbed a frame, the app paused for about half a second to process the image, so a scanning session felt stuttery and could momentarily stop responding to taps. Image processing now happens in the background, and the scanner captures its final read a touch more efficiently, so the camera stays smooth throughout.

OTA → v0.6.2

Over-the-air update

Bundle 01a09cb5

Runs on build iOS 23 · Android 22

Changed

  • A service that's closed for the season now says so clearly, instead of looking like an error. When you file a request for something that's seasonally closed (for example, outdoor pools in the off-season), 311 turns it down — and the app used to show a generic "couldn't send" failure and then quietly retry for a couple of days for no reason. Now it shows 311's own message (e.g. "DPR Outdoor pools are closed for the season"), makes clear nothing's wrong with your report or the app, and saves it under "My reports" as Closed so you can send it once the service reopens — or file a different type instead.

OTA → v0.6.2

Over-the-air update

Bundle 01a092b9

Runs on build iOS 23 · Android 22

Added

  • Filter and search your reports. "My reports" now has a search box and a row of report-type chips (Pothole, Illegal Dumping, …) next to the All/Open/Closed filter, so you can zero in on — say — every pothole you've filed. The map narrows to match, so it doubles as a find-by-location tool. Picking a type or searching automatically loads your full history, so older matches aren't hidden behind the "recent only" cap.

Fixed

  • Loading older reports in "My reports" is more reliable. Paging back to older reports now shows a spinner while it works and, if some fail to load on a flaky connection, a "tap to retry" — instead of silently leaving blank or stale rows, which made finding an old report feel hit-or-miss.

OTA → v0.6.2

Over-the-air update

Bundle 01a0922c

Runs on build iOS 23 · Android 22

Added

  • Export now lets you choose "Shown reports" or "Entire account." Tapping export asks whether to export just the reports currently listed or to pull your complete 311 history — with a heads-up that the full pull can take a while if you've filed a lot. Previously export could silently stop at your most recent ~1,000 reports, so a long history "only went back a few weeks"; choosing "Entire account" now walks your whole history, however far back it goes.

Changed

  • "My reports" loads your recent activity fast, then you pull the rest on demand. Opening the app now backfills roughly your last 90 days from your 311 account (quick, even with a big history) instead of trying to load everything up front; your full history is available anytime via export → "Entire account."
  • Big CSV exports are much faster, show live progress, and can be cancelled. A progress bar shows how many reports have loaded and how far back in time it has reached (e.g. "Loading 1,240 reports · back to Mar 2024"), then "Adding details" and "Writing file" — with a Cancel button at any point. A full-history export asks you to keep Snap311 open while it runs and keeps the screen awake so it won't stall if your phone would otherwise lock. It also remembers detail it already downloaded, so re-exporting after filing a few new reports only fetches the new ones, and large exports use far less memory while the file is written.

Fixed

  • Reading a vehicle ID from your report photo no longer grabs stray text from the background. When you add a photo of a dockless scooter or bike, the app tries to read the vehicle ID into the form for you — but it would sometimes pick up unrelated text in the shot (for example 19RECYCLE off a recycling bin behind the scooter). It now fills the field only when what it read matches one of the known operator ID formats (Lime, Capital Bikeshare, Bolt/Hopp, and Veo's numeric IDs); anything else is left for you to enter or confirm with the "Scan ID" button.

OTA → v0.6.2

Over-the-air update

Bundle 01a082b8

Runs on build iOS 23 · Android 22

Thanks to our TestFlight testers. Grant and Michael's feedback shaped several of the fixes and features in this update.

Added

  • Filter your reports by status. "My reports" now has an All / Open / Closed toggle at the top so you can quickly find what's still in progress or what's already resolved. Each option shows a count.
  • The vehicle ID can fill itself in from your photo (experimental). On a dockless scooter/bike report, if you attach a photo that clearly shows the printed ID, the app reads it and fills the Vehicle ID field for you — a hint on the report points this out, it shows what it read so you can check it, and you can always tap the field to change it.

Changed

  • The most common dockless parking issues are now color-coded. On a dockless vehicle report, the reasons people pick most (e.g. "not locked to infrastructure," "blocking the sidewalk") each show in a consistent color, so you can spot the one you need at a glance. The options stay in the same order.
  • Scanning a dockless ID narrows the company list. Once you've entered the vehicle's ID, the company options its number format can't be (e.g. an all-digit ID can't be a Lime) are dimmed — so it's quicker to pick the right one. Dimmed options are still tappable in case a read was off.
  • Scanning a scooter/bike ID is now hands-free. The scanner no longer shows a capture button — it just says "Searching…", locks on automatically, and turns the guide box green the moment it reads the code. Can't get a read? Tap Cancel to type the ID or pick a photo instead.

Fixed

  • Reduced the chance of duplicate reports on a weak connection or when you file one right after another. On spotty signal a report could be sent, never get a confirmation back, and then be sent again — filing a duplicate. The app now remembers each report the moment it goes out, and before sending again it checks whether that report already went through (matching it by what and where you reported), so a duplicate is much less likely. Reports are filed through DC 311's system, so this reduces — but can't completely rule out — the occasional duplicate.
  • "Down Trees" reports now count toward the Tree Hugger badge (and show the tree icon on the map). They were being missed because the name is plural.
  • The ID scanner now reads Capital Bikeshare numbers reliably (the all-digit kind like 406-2089) — it corrects common digit misreads and puts the right number first. Scan the printed number on the bike, not the "scan to unlock" QR.

v0.6.2

Store build

Build iOS 23 · Android 22

Added

  • The ID scanner now auto-corrects common misreads on Lime and Bolt codes. Lime IDs are all letters (e.g. ENF-TBY) and Bolt IDs are all digits (e.g. 735-612), so when the camera confuses look-alike characters — O/0, Q/0, I/1, S/5, B/8 — the scanner now offers the corrected reading at the top of the list (and still shows exactly what it read), instead of making you retype it.

Fixed

  • Live ID scanning is much more reliable and locks on faster. It could get stuck showing a live camera that never recognized anything (a camera-startup timing bug), and it only read a thin strip in the middle of the frame — so a code that wasn't dead-center often read nothing, even though snapping a photo of it worked. Now the camera starts up dependably, reads a larger area of the frame, and locks onto a code quickly — with the guide box turning green the moment it sees one.
  • The ID scanner no longer crashes the app while the camera is starting up. Opening the scanner, or the moment it switched to the close-up lens, could briefly leave the camera without a live connection; if a scan fired in that instant the app crashed. Scans now wait until the camera is fully ready.
  • The ID scanner no longer crashes on some iPhones when it switches to the close-up lens. On certain devices (e.g. iPhone 14 Pro), the instant the scanner switched to its macro/close-up lens the camera could reject the next photo and crash the whole app. Captures now match whatever lens the camera is actually using, so that crash is gone.
  • The app no longer crashes when it wakes up in the background on a locked phone. iOS sometimes launches the app in the background while your phone is locked; when it tried to read your saved sign-in at that moment, the phone refused and the app crashed. It now handles that gracefully — keeping your last-known status — and stores saved items so they can be read after the first unlock, so the background read no longer fails in the first place.
  • The Submit button no longer gets stuck on "Add your contact info" when you're already signed in. If you reopened the app on the submit screen after it had been in the background, the button could wrongly show "Add your contact info" even though your details were saved and synced — and it stayed that way until you force-quit the app. The submit screen now re-reads your saved contact when it comes back into view and when the app returns to the foreground, and it no longer mistakes a momentary "couldn't read your saved info yet" for "you have no info," so it recovers on its own.

OTA → v0.6.1

Over-the-air update

Bundle 01a021fd

Changed

  • The ID scanner is faster. Scanning a vehicle ID with the live camera now reads just the area inside the on-screen box instead of the whole picture, and captures at a lighter resolution — so it locks onto the code quicker, with less waiting to switch to the close-up lens. Reading an ID from a saved photo is unchanged: it still scans the whole image, since you've already framed it.

OTA → v0.6.0

Over-the-air update

Bundle 01a021fe

Runs on build iOS 17 · Android 12

Changed

  • The ID scanner is faster. Scanning a vehicle ID with the live camera now reads just the area inside the on-screen box instead of the whole picture, and captures at a lighter resolution — so it locks onto the code quicker, with less waiting to switch to the close-up lens. Reading an ID from a saved photo is unchanged: it still scans the whole image, since you've already framed it.

OTA → v0.6.1

Over-the-air update

Bundle 01a0124d

Added

  • Your pickup date now waits for you on the home screen. Bulk collection and yard waste reports get a collection date from DC — it now shows as a reminder on the home screen until the pickup happens, so you don't have to remember it or go hunting for it. Tap it to open the report.
  • The collection date now stays with the report. It shows on the report's own screen and in "My reports", not just on the form and the confirmation screen — so it's still there days later, when you actually need to put your yard waste or bulk items out. Sharing or exporting a report includes it too.

OTA → v0.6.0

Over-the-air update

Bundle 01a0124c

Runs on build iOS 17 · Android 12

Added

  • Your pickup date now waits for you on the home screen. Bulk collection and yard waste reports get a collection date from DC — it now shows as a reminder on the home screen until the pickup happens, so you don't have to remember it or go hunting for it. Tap it to open the report.
  • The collection date now stays with the report. It shows on the report's own screen and in "My reports", not just on the form and the confirmation screen — so it's still there days later, when you actually need to put your yard waste or bulk items out. Sharing or exporting a report includes it too.

OTA → v0.6.1

Over-the-air update

Bundle 019fde4d

Changed

  • When DC 311's system is temporarily down, the app now keeps your report saved and retries for up to two days instead of giving up after a few minutes — so it files itself once DC recovers.
  • Clearer status for a DC-side outage: the confirmation and "My reports" screens now explain the hold-up is on DC 311's end and usually clears within a day.
  • Dockless Vehicle Parking Complaints now show a scooter icon on the map instead of the generic car icon.
  • Export all reports now includes full detail for each report — columns for last updated, target timeframe, Ward/ANC, your answers, agency updates, and photo links.

Fixed

  • Reports for services that ask for a phone number on the form (e.g. rodent inspection) no longer fail — the number you enter is now used automatically.
  • Reports no longer get filed twice when a submit went through without a clear confirmation; for signed-in users the app checks before resending.
  • Submitting on a slow connection no longer gives up too early — the app waits for DC 311 to accept the report instead of timing out.
  • Photo uploads on a weak connection are less likely to fail; the app waits longer, and if it still can't, saves and retries your report and photo.
  • The grayed-out "Complete your info to submit" button now reads "Add your contact info" and takes you straight to the "Your info" screen.
  • Scan ID with camera now reads only what's inside the framing box, so it no longer picks up nearby text. Center the code in the box.
  • Attaching a photo no longer shifts the page — the thumbnail strip sits in a fixed slot, so it won't push the Submit button under your finger mid-tap.

OTA → v0.6.0

Over-the-air update

Bundle 019fde4f

Runs on build iOS 17 · Android 12

Changed

  • When DC 311's system is temporarily down, the app now keeps your report saved and retries for up to two days instead of giving up after a few minutes — so it files itself once DC recovers.
  • Clearer status for a DC-side outage: the confirmation and "My reports" screens now explain the hold-up is on DC 311's end and usually clears within a day.
  • Dockless Vehicle Parking Complaints now show a scooter icon on the map instead of the generic car icon.
  • Export all reports now includes full detail for each report — columns for last updated, target timeframe, Ward/ANC, your answers, agency updates, and photo links.

Fixed

  • Reports for services that ask for a phone number on the form (e.g. rodent inspection) no longer fail — the number you enter is now used automatically.
  • Reports no longer get filed twice when a submit went through without a clear confirmation; for signed-in users the app checks before resending.
  • Submitting on a slow connection no longer gives up too early — the app waits for DC 311 to accept the report instead of timing out.
  • Photo uploads on a weak connection are less likely to fail; the app waits longer, and if it still can't, saves and retries your report and photo.
  • The grayed-out "Complete your info to submit" button now reads "Add your contact info" and takes you straight to the "Your info" screen.
  • Scan ID with camera now reads only what's inside the framing box, so it no longer picks up nearby text. Center the code in the box.
  • Attaching a photo no longer shifts the page — the thumbnail strip sits in a fixed slot, so it won't push the Submit button under your finger mid-tap.

OTA → v0.6.1

Over-the-air update

Bundle 019fca73

Fixed

  • Scanning a saved photo for a vehicle ID no longer leaves you on a black screen — a successful scan now fills the field instantly. (Read more than one code, or none, and you still get the review screen.) Thanks to Michael E.

OTA → v0.6.1

Over-the-air update

Bundle 019fc991

Added

  • The vehicle ID scanner can now read from a saved photo, not just the live camera. The scan button splits into camera and photo; crop a busy photo to just the ID if it reads the wrong code.
  • Add exact coordinates to a report on demand — tap to drop a pin on the precise spot without changing your address. It shows as a small removable pill.

Changed

  • On Your impact, the city leaderboard now sits at the top whether or not you've joined, so the join prompt is up front.

Fixed

  • The report screen no longer jumps as the address loads — the result fills a reserved space, so a button you're reaching for (including Submit) stays put.
  • Reports at a fractional "½" address (e.g. "32 1/2 8th St NE") no longer fail to file — the address uses the matching street number, with the exact "½" kept in the details. Type a "½" address and we offer to file it in one tap.

OTA → v0.6.0

Over-the-air update

Bundle 019fca72

Runs on build iOS 17 · Android 12

Fixed

  • Scanning a saved photo for a vehicle ID no longer leaves you on a black screen — a successful scan now fills the field instantly. (Read more than one code, or none, and you still get the review screen.) Thanks to Michael E.

OTA → v0.6.0

Over-the-air update

Bundle 019fc9e3

Runs on build iOS 17 · Android 12

Added

  • The vehicle ID scanner can now read from a saved photo, not just the live camera. The scan button splits into camera and photo; crop a busy photo to just the ID if it reads the wrong code.
  • Add exact coordinates to a report on demand — tap to drop a pin on the precise spot without changing your address. It shows as a small removable pill.

Changed

  • On Your impact, the city leaderboard now sits at the top whether or not you've joined, so the join prompt is up front.

Fixed

  • The report screen no longer jumps as the address loads — the result fills a reserved space, so a button you're reaching for (including Submit) stays put.
  • Reports at a fractional "½" address (e.g. "32 1/2 8th St NE") no longer fail to file — the address uses the matching street number, with the exact "½" kept in the details. Type a "½" address and we offer to file it in one tap.

v0.6.1

Store build

Changed

  • Android: attaching a photo now uses the system photo picker, so the app needs access to only the photo you pick, not your whole library.

OTA → v0.6.0

Over-the-air update

Bundle 019fb8f3

Runs on build iOS 17 · Android 12

Added

  • On a report that won't submit, a Send to developer action shares an exact copy so the problem can be fixed. It shows you everything first, and nothing leaves your device until you approve it.

Changed

  • Report-type search now ranks matches that start a word above ones buried inside a longer word, so "tree" leads with Tree Inspection instead of street categories. "Hole" still finds Pothole.

Fixed

  • After a report is filed, dropping your connection a moment later no longer shows a scary technical error under the ✓ — the report went through fine.
  • Network hiccups now read as a plain "lost the connection" message instead of raw error text.

OTA → v0.6.0

Over-the-air update

Bundle 019fab82

Runs on build iOS 17 · Android 12

Changed

  • Once you've joined your city's leaderboard, "Your impact" shows your rank at the top and links to the board. Changing your display name or leaving now lives on the leaderboard page.

OTA → v0.6.0

Over-the-air update

Bundle 019fab61

Runs on build iOS 17 · Android 12

Fixed

  • My reports no longer hides your most recent reports when your history is long. The newest always show; older ones held back for speed can be revealed with one tap.

OTA → v0.6.0

Over-the-air update

Bundle 019fab26

Runs on build iOS 17 · Android 12

Changed

  • Diagnostic log export now also captures on-device report/draft state.

Fixed

  • Reports DC 311 only returns to your signed-in account (e.g. dockless vehicle complaints) can now be added by number.

OTA → v0.6.0

Over-the-air update

Bundle 019faac2

Runs on build iOS 17 · Android 12

Added

  • Settings → Diagnostics now has a "Share diagnostic log" button — export the recent on-device event log (already scrubbed of location, addresses, and contact info) to send when reporting a problem.

OTA → v0.6.0

Over-the-air update

Bundle 019fa956

Runs on build iOS 17 · Android 12

Added

  • On the "Filed" screen you can now tap to copy your report number — no retyping it into an email or note. Thanks to Kyle G. for the suggestion.

Fixed

  • Photos now upload far more reliably, especially on cellular. They're now resized before uploading (they used to be sent full-resolution and often stalled), so uploads usually finish in a second or two. A stuck report will go through on Retry now. Thanks to Kyle G. for the report.

OTA → v0.6.0

Over-the-air update

Bundle 019fa6b9

Runs on build iOS 17 · Android 12

Added

  • Bulk collection now shows your pickup date before you submit. For requests that schedule a collection (Residential Bulk Collection, Scheduled Yard Waste), the estimated date now shows on the form and the "Filed" screen. Thanks to Bill F. for the report.

OTA → v0.6.0

Over-the-air update

Bundle 019fa152

Runs on build iOS 17 · Android 12

Fixed

  • Service instructions on the report form now display correctly — no more raw codes in text like "Service Limitations & Frequency", and links are now tappable.

OTA → v0.6.0

Over-the-air update

Bundle 019f8d75

Runs on build iOS 17 · Android 12

Fixed

  • Phone numbers in Your info are now auto-formatted to (202) 555-1234, and an incomplete number is caught with a clear message instead of failing the report after you submit.

v0.6.0

Store build

Build iOS 17 · Android 12

Added

  • Multiple cities. snap311 now works with more than one 311 system. Choose your city on first launch (Washington, DC or Alexandria, VA) and switch anytime from Settings. Existing users stay on Washington, DC.
  • Alexandria, VA (Alex311) support — report 311 issues, attach photos, and track them, just like DC.
  • Sign in to your Alexandria account to link reports and skip re-entering contact info.
  • City leaderboard. Opt in with a display name to rank on your city's public leaderboard and browse it from Your impact. Opting in is per city, so you choose which boards you appear on. Joining requires sign-in.

Changed

  • Your reports, drafts, saved categories, contact info, and civic points, badges & streaks are now kept separately per city, so switching never mixes data. Your DC progress is untouched.
  • Each city has its own home banner color so you can tell at a glance which city you're reporting to.
  • Your impact moved off the home screen into My reports, so the home screen stays focused on filing a report.
  • "Nearby reports" now works in cities without a public history archive (like Alexandria) by showing recent reports from the live feed.

OTA → v0.5.0

Over-the-air update

Bundle 019f725a

Added

  • Swipe a report to archive it — swipe farther to delete. On "My reports," swipe left: the strip shows Archive, turning red to Delete as you pull farther, with a haptic tap at each. Swipe an archived one to Unarchive.
  • A map of your own reports on "My reports." The screen now opens with a map pinning every report you've filed, colored by status; open reports show a completion ring that fills green→amber→red as their DC due date nears. "Show archived" reveals long-closed ones.

Changed

  • "My reports" title bar tidied up — adding a past report (+) and exporting all (download icon) moved into the title bar, making room for the new map.
  • Tapping a report photo now opens it full-screen in the app instead of bouncing you to the browser. Works for your photos and photos DC attached.
  • Clearer "update" badge on your reports — a status change or comment from DC 311 now shows a chat-bubble "Update" badge instead of a vague "New."

Fixed

  • "Report this issue again" no longer makes you re-validate the address — it reuses the original report's confirmed location, so you can submit right away.

OTA → v0.5.0

Over-the-air update

Bundle 019f6da2

Added

  • "Report this issue again" now prefills your original answers. When a request is closed but not actually fixed, reporting it again brings back the answers you filled the first time (for reports filed on this device).
  • Exact location is added automatically for off-address reports. When your photo was taken well away from the address it matched (a can in a park, a scooter in a lot), the app attaches your exact coordinates, with a one-tap "Remove."
  • Tap the scanner to refocus. If a vehicle ID or tag looks blurry, tap the camera to force it to focus again.

Fixed

  • Tapping the "report not sent yet" banner now works from My reports — it scrolls to and briefly highlights the report that hasn't been sent.
  • Editing a long description keeps the field in view — re-opening the keyboard no longer scrolls the box out of view.
  • Scanning a vehicle ID or tag up close now focuses. On iPhones with more than one rear camera, the scanner switches to a close-focus lens, so a tag held a few inches away comes in sharp.

OTA → v0.5.0

Over-the-air update

Bundle 019f68b3

Added

  • A heads-up before you file a request DC 311 would bounce. Some report types route certain answers elsewhere — "Roadway Markings / Pylons" is for existing faded markings, so asking for brand-new ones gets sent back. The app now flags this and offers a one-tap switch to the right request before you submit.

Fixed

  • Rejection messages from DC 311 are readable again — when DC turns down a report, its explanation now shows as plain text ("Please submit a Roadway/Markings Service Request") instead of raw website code. Thanks to the anonymous feedback submitter who reported this.

v0.5.0

Store build

Added

  • Save a report as a one-tap "frequent request." It becomes a shortcut on your home screen (and, on iPhone, the app icon's long-press menu) that reopens pre-filled. Manage them on the new Manage screen, or share one as a printable QR poster ("Scan to report").
  • Export all your reports to a spreadsheet. "My reports" now has an "Export all (CSV)" option, alongside the existing per-report share.
  • Quick Capture from your home screen. File a report without opening the app first: on Android, add the new "Report now" widget; on iOS, long-press the app icon and choose "Report now." Either drops you into the camera-first flow.
  • Suggested categories when you describe a problem. Type what's going on in plain words ("couch dumped on the sidewalk") and a "Suggested" section surfaces the most likely 311 request types, so you don't have to know the official name. Runs on-device on iPhones with Apple Intelligence.

Changed

  • The map pin's "add exact location" option is clearer. When your pin is far from the nearest street address, attaching exact coordinates is now a highlighted card that explains what it's for.
  • Your contact details are now stored more privately — kept in the device's encrypted keychain and excluded from backups.
  • The camera opens instantly. Taking a report photo no longer waits on a location fix first — the fix is captured in the background while you shoot.
  • "Most common in DC" is ordered by actual report volume.
  • Smoother and lighter. Typing on long forms and panning the "Nearby reports" map are smoother on older Android devices, and the category picker loads faster.
  • "My reports" opens faster when you have a long history — it now loads a page of reports at a time as you scroll, instead of building every card up front.
  • Now requires iOS 16.4 or later. As part of a major framework update, the minimum supported iOS version is now 16.4. Devices on iOS 15 or 16.0–16.3 will stay on the last compatible build.

Fixed

  • The tag & vehicle-ID scanner reads only what's in the framing box — it no longer picks up surrounding text, so it recognizes plates and IDs reliably and locks on faster.
  • "What's New" only flags updates you don't have yet — it now compares against your installed version.
  • No longer asks whether you attached a photo when you already did. On some report types (including Roadway Markings / Pylons) the app missed your photo and blocked submit; it now detects it and answers for you — and won't answer "No" while a photo is still uploading.
  • The app no longer gets stuck on a spinner. Fixed hangs in the camera, report links with a bad ID, a GPS fix that never arrives, pull-to-refresh on "My reports," and DC 311 sign-in when the connection drops.
  • Photo locations are more accurate. A report photo no longer attaches a nearby-but-wrong address when your exact spot can't be matched, and prefill links with a bad location or date/time fall back to manual entry.
  • "My reports" is more reliable. Status and "New" badges now match the reports you see; a deleted report doesn't reappear after a refresh; opening a report offline shows cached details; tapping a photo opens it full-size; and duplicate notifications are fixed.
  • Recovers from bad data instead of breaking. A corrupted local cache no longer leaves the category list empty or a report screen stuck, and malformed "Nearby reports" or "What's New" data is now handled gracefully.
  • Sign-in and account fixes. Signing out now fully ends the web session on a shared device; saving contact info no longer risks clearing your favorites or history; and rare spurious "session expired" sign-outs are fixed.
  • Smaller fixes. Canceling the ID scanner no longer leaves a stale message; a number field with just a decimal point no longer bounces the report; favorites aren't pruned when DC 311 returns a partial catalog; milestone rewards no longer fire on every report past 1,000; near-simultaneous submissions no longer drop one from your stats; a leftover map pin can't overwrite a later report's location; and turning off diagnostics takes effect immediately.
  • iOS: the header "Back" button works again. On iOS 26 it could stop responding on some screens (Settings, "Filed"), leaving the swipe as the only way back.
  • The "Nearby reports" map shrugs off a flaky connection — a momentary hiccup no longer shows "Couldn't load reports"; it retries and falls back to the last map you loaded. Thanks to the anonymous feedback submitter who reported this.

OTA → v0.4.1

Over-the-air update

Bundle 019f6245

Fixed

  • Android: typing no longer hides the field behind the keyboard. Filling out a report, your contact info, or adding a past report now scrolls the text box above the keyboard. Thanks to Scott M for the bug report.
  • Scanning a license plate now reads the whole tag. The graphic many states print between a plate's segments (the DC flag "GH ✦ 7804", Florida's orange) was splitting the scan in two; the scanner now stitches the halves back together.

OTA → v0.4.1

Over-the-air update

Bundle 019f4f00

Added

  • Scan a vehicle's license plate with your camera (Parking Enforcement). The "vehicle tag #" field now has a Scan tag button that reads the number with on-device OCR (nothing leaves your phone). You can still type it in. Marked Experimental.

Changed

  • Submit is instant now — sends in the background. No more waiting on a spinner; your report sends while you go to a status screen where you can immediately Report another — great for logging several issues in one spot. If it can't send, it stays saved in My reports; if DC 311 rejects it, the screen offers Edit & fix.
  • The "Nearby reports" map now tells open, in-progress, and closed apart — reports being worked on show in amber, distinct from new open reports (type color) and closed ones (grey). The detail screen colors its status the same way.

Fixed

  • A pin's status no longer disagrees with its detail — once you open a report and see its live status, the map corrects that pin to match.

OTA → v0.4.1

Over-the-air update

Bundle 019f396c

Added

  • Favorites now show in the photo-first flow. After you snap a photo and go to pick a category, your Favorites appear at the top, with tap-a-star to add or remove.
  • "Use my number" on phone / call-back fields. When a report asks for a phone number, a quick "Use my number" button drops in the phone from "Your info."

Changed

  • When DC 311 rejects a report, you can fix it on the spot — the app keeps you on the form with everything you entered, so you can correct the flagged field and resend right away.

Fixed

  • Every question type now sends DC 311 exactly what it expects. A few less-common types were sent as plain text and could fail the whole report. Numbers now use a number keypad, yes/no questions a checkbox, and phone questions a phone keypad.

OTA → v0.4.1

Over-the-air update

Bundle 019f2c1a

Fixed

  • Catch a mistyped email before it costs you a report. If the email in "Your info" is malformed (missing @, no domain, a stray space), the app now flags it and asks you to fix it or use a phone instead.

OTA → v0.4.1

Over-the-air update

Bundle 019f1c7b

Added

  • Photo previews in "My reports". Each report with a photo now shows a thumbnail in the list, so you can spot reports at a glance.

Fixed

  • Your photo now shows on open reports too — opening a report you filed shows the photo even while it's still open, handy for double-checking the shot.
  • Clearer message when DC 311 is down. If DC 311's service is temporarily unavailable, the app now says so directly — your report is saved and resent once DC is back up.

v0.4.1

Store build

Added

  • Update notifications. When a new version has downloaded, the app now shows a "tap to restart" prompt so you get the latest fixes right away. (Ships in a later 0.4.1 build.)

Fixed

  • Date and time questions now work. Request types that ask for a date or time (e.g. "Date and Time of Incident") now show a proper calendar/clock picker, so the value is always sent in the format DC 311 accepts.
  • Fixed a crash when opening the "Nearby reports" map on some devices as its pins loaded. It now opens reliably. (Ships in a later 0.4.1 build.)

OTA → v0.4.0

Over-the-air update

Bundle 019efc05

Fixed

  • The report confirmation screen no longer shows a spinner that could spin forever. A just-filed report often isn't available to look up yet — the screen now settles and shows the details when they're ready.

OTA → v0.4.0

Over-the-air update

Bundle 019efaa0

Changed

  • Report-type search now looks at descriptions too, so you'll find the right type even when you don't know its exact name. Results are ranked (name, then keyword, then description matches), and the matched text is highlighted. Thanks to Kyle G for the suggestion.

OTA → v0.4.0

Over-the-air update

Bundle 019ef704

Changed

  • Address entry is clearer: the "Look up" button is now "Validate", sits beside "Pin on map", and grays out once your address is confirmed.
  • On Pin on map, when your pin sits away from the matched address, the "add the exact pin location" option is now an obvious, tappable toggle.

Fixed

  • Tapping a report type in the category search now selects it on the first tap, even with the keyboard open.
  • Better address detection: when a photo's location, "use my location," or a dropped pin lands mid-block, the app now falls back to your phone's geocoder and re-checks the address against DC's records, so you get a usable address far more often instead of a dead-end.

v0.4.0

Store build

Added

  • Scan a vehicle ID with your camera (experimental): when reporting a dockless vehicle, tap Scan ID with camera to read the printed ID with on-device OCR. It captures once it locks on and turns on a dim light in the dark (iOS). Everything stays on your device. Marked Experimental.

Changed

  • Nearby reports map now groups busy areas into numbered clusters when you're zoomed out, instead of hiding some reports. Tap a cluster (or zoom in) to break it into individual markers, and the map stays smooth on large screens.

Fixed

  • A report you just submitted now shows up in "My reports" right away.
  • You can now pull to refresh "My reports" from anywhere in the list.
  • Opening a report from a notification or shared link and tapping Back now returns you to the home screen instead of doing nothing.

OTA → v0.3.0

Over-the-air update

Bundle 019ef63e

Changed

  • The Nearby reports map now shows when its data was last refreshed (e.g. "last updated 8m ago"), making it clearer how recent the reports on screen are.
  • The Nearby reports map now refreshes on its own once it's more than an hour old, instead of only when you restart the app.

Fixed

  • "Your info" now asks for a first name (alongside a last name and an email or phone) — DC 311 requires it, so some reports were failing to submit without it.

OTA → v0.3.0

Over-the-air update

Bundle 019ef253

Added

  • "Your info" now offers DC 311 sign-in to fill your contact details for you — it pulls your name/email/phone from your account. You can still enter them by hand.

Changed

  • After you sign in to DC 311, your past reports now reliably appear in "My reports" — the list pulls your account history when you open it and on refresh.
  • Nearby reports map now groups busy areas into numbered clusters when you're zoomed out. Tap a cluster (or zoom in) to break it into individual markers, and the map stays smooth on large screens.

Fixed

  • A report you just submitted now shows up in "My reports" right away.
  • You can now pull to refresh "My reports" from anywhere in the list.
  • Report forms no longer show "example" helper entries as selectable answers. The dockless-vehicle "vehicle ID" and bus-stop "Bus Stop Number" examples now appear as reference images instead of pickable answers.
  • Roadway Signs report: the "traffic sign" and "parking sign" pickers now show the actual choices with pictures, instead of a single blank option that made those reports impossible to submit.
  • Report forms now clear follow-up answers that no longer apply when you change an earlier answer, so stale questions disappear instead of lingering.
  • The empty "My reports" screen can now be pulled to refresh.

v0.3.0

Store build

Added

  • Achievements & civic points: earn rewards as you report — a bonus the first time you try each category, a milestone every 5 reports, a streak bump each day, and one-time trophies (First Report, Power User, "Rat King," and more). "Your info" shows your totals and trophies.
  • DC 311 sign-in (optional): sign in to pull your full report history and DC's responses into the app, and to auto-fill your contact info. If a session expires, your saved contact info is kept and you're prompted to sign in again.
  • Nearby reports map: a new screen shows open, in-progress, and recently-closed DC 311 requests around you — color- and icon-coded by type, with a ring that fills as a request nears its completion date — so you can check for duplicates before filing. Tap a pin for details.
  • Favorite report types: tap the star on any category to pin it to a Favorites list at the top of the home screen; tap again to remove.
  • Export / share a report: a report's detail screen can now share a plain-text summary via the system share sheet — handy for keeping a record or escalating one that was closed but isn't fixed.
  • "Report this issue again": from a report's detail screen, start a fresh report pre-filled from it — same category and location, with a note referencing the original — so you don't retype it.
  • "New" badge in "My reports" marks any report with activity since you last opened it; it clears when you view the report.

Changed

  • The home screen now shows your Favorites instead of an auto-generated "recent reports" list, so it loads instantly with no network wait.
  • Settings moved to a gear icon in the top-left of the home screen, freeing the spot for the new "Nearby reports" entry.
  • "My reports" now opens instantly — it shows your last-loaded reports and refreshes status in the background. Pull down to refresh on demand.

Fixed

  • "My reports" now lists reports newest-first (by latest activity), including the archived section.

OTA → v0.2.0

Over-the-air update

Bundle 019ee52a

Runs on build iOS 9 · Android 3

Added

  • Settings → "See what's new" opens an in-app changelog: what's included in the version on your device, and what's waiting in your next update.

Fixed

  • A report that got stuck because of an answer to a follow-up question that no longer applied now fixes itself and sends on its own — the app cleans up the saved report before retrying.

OTA → v0.2.0

Over-the-air update

Bundle 019ee4fc

Runs on build iOS 9 · Android 3

Thank you to our beta testers — your reports are what surfaced the fixes below. Please keep them coming.

Fixed

  • Report types with conditional questions (where one answer reveals follow-ups) now work. The form shows and sends only the questions that apply, so DC 311 no longer rejects the report.
  • When DC 311 can't accept a report for a reason you need to fix, the app now tells you why instead of quietly saving it and retrying forever.

OTA → v0.2.0

Over-the-air update

Bundle 019ee043

Runs on build iOS 9 · Android 3

Added

  • With error reporting off, you can now open a specific error in Diagnostics, review what it contains, and send just that one to the developer. The event list marks each Sent or Not sent, and nothing is sent twice.

Changed

  • The Settings version footer is now plainly informational — it shows your app version, build, and current update bundle (tap to copy if support asks).

Fixed

  • Errors and warnings now stay in the Diagnostics log instead of being pushed out by routine activity, so you can still find — and send — them later.
  • Opening an entry in the Diagnostics event log no longer makes the app sluggish; it now opens in a scrollable sheet.

OTA → v0.2.0

Over-the-air update

Bundle 019ede4e

Runs on build iOS 9 · Android 3

Added

  • A banner now appears whenever you have a report that hasn't been sent to DC 311 yet (queued, sending, or failed), so it can't slip your mind. Tap it to open "My reports" and retry or finish anything missing info.
  • "Pin on map" now has a center-on-my-location button — tap it to jump the map to where you are instead of panning by hand.

Changed

  • The Settings footer now leads with a bundle id you can tap to copy — the exact id of the code you're running, matching the ids in this changelog. Version and build number are still shown as secondary detail.

Fixed

  • Reports can no longer slip through with incomplete contact info and then fail to send. The app now requires a last name plus an email or phone before submitting, and flags any saved report still missing that info for you to fix.
  • Taking a photo first then choosing a category now behaves the same as the reverse: if your location is missing, outside DC, or has no street address, you get the same heads-up to enter it.

v0.2.0

Store build

Build Android 3

Fixed

  • Android: opening "Pin on map" no longer crashes the app. Earlier Android builds shipped without the Google Maps key, so the map closed the app instantly; it now loads normally. (iOS was unaffected.)

OTA → v0.2.0

Over-the-air update

Bundle 019edbdf

Runs on build iOS 9 · Android 2

Changed

  • Diagnostics screen: the toggle is now labeled Error reports (more honest), and the footer's GitHub link has been removed for now.
  • "Pick the spot" on the map now resolves the address live as you move the pin and shows whether the spot is usable — the matched street address, or a warning that there's none there. When the pin is far from its address (a scooter in the woods), you can attach a precise map link to the exact spot.
  • Diagnostics (Settings): the recent-events list now shows a short preview, and "View all events" opens the full log, filterable by level.

Fixed

  • Photo uploads no longer spin forever when you walk from WiFi onto cellular. If nothing moves for ~20 seconds, the app gives up on the attempt — your photo is kept and retried once your signal comes back, and you can submit anyway. Captured photos are also stashed safely the moment you take them.
  • Network requests now time out after 15 seconds instead of spinning forever, so submitting a report, looking up an address, and "My reports" no longer hang — and a timed-out submit is saved and retried automatically.

OTA → v0.2.0

Over-the-air update

Bundle 019edb01

Runs on build iOS 9 · Android 2

Fixed

  • The Settings/Diagnostics footer now shows the app's real build number instead of "build ?".

OTA → v0.2.0

Over-the-air update

Bundle 019ed832

Runs on build iOS 9 · Android 2

Added

  • A banner now appears when DC 311 can't be reached (down, or you're offline), making clear what still works: you can take photos, fill out reports, and tap Submit — we'll save and send them automatically when the connection's back.

OTA → v0.2.0

Over-the-air update

Bundle 019ed808

Runs on build iOS 9 · Android 2

Changed

  • Report forms now open instantly from a local cache and refresh in the background. You can fill out and queue a report even when the DC 311 backend is slow or down, and the form quietly updates to the latest questions if you haven't started.

Fixed

  • The keyboard no longer covers the text field you're typing in — the form, "Your info," and "Add a past report" screens now scroll the focused field into view.
  • If a report category fails to load, the report screen now shows a "Retry" instead of spinning forever.

v0.2.0

Store build

Build iOS 9 · Android 2

Added

  • Delete reports from "My reports": swipe a row left, or use "Remove from my reports" on the detail screen. Removing a filed report only clears it from your list; discarding an unsent report stops it from being filed.
  • Tap any report to open a full detail screen: status and timeline/SLA dates, the description, attached photos (tap to open full size), the agency's service notice, and location with ward/ANC and "Open in Maps." Tap the request ID to copy it.
  • "Add a past report" now detects a service request ID on your clipboard, previews it (type, status, address), and lets you add it with a single tap.
  • "My reports" now shows more status detail for each request: a clear status label, the handling department, and the expected completion date (or a "past expected date" flag).
  • Attach multiple photos to a report (up to 5) — from the camera one at a time or several at once from your library. Photos upload in the background.
  • Long service descriptions now have a Show more / Show less toggle, expand to a larger size, and any links in them are tappable.

Changed

  • "My reports" now shows active reports by default — open ones plus anything closed in the last 7 days — and tucks older ones behind a "Show archived" toggle.
  • The "Your info" screen makes it clear you only need to fill it in once — your contact details are saved on your device and reused automatically.
  • The Diagnostics screen no longer displays the raw Sentry DSN.

Fixed

  • Picking the wrong category after snapping a photo no longer loses it — change the category and your photo and location carry over.
  • Submitting a report without a photo is allowed (photos are optional). The Submit button now tells you what's actually missing — an address, or your contact info.