Skip to content

Changelog

What's new in Prowl

Prowl is in closed beta. This changelog tracks every update as we build toward public launch.

Beta 0.21 — iOS TestFlight + full parity push

April 20, 2026 — iOS build 17 submitted to TestFlight. Every known web-vs-iOS gap closed.

iOS TestFlight

  • Build 17 uploaded — version 1.0.1, iOS 17+ deployment target, processing on App Store Connect now.
  • View-mode crash fixed — switching between map / grid / list no longer tears down MLNMapView. The map is now kept alive under the ZStack and hidden via opacity, so MapLibre stops crashing during the animation.
  • Telemetry wired — new ActivityLogService batches events to the same activity_log table the web uses, with metadata.client = 'ios-native' and a custom ProwlApp user-agent for filtering.
  • Crash reporting — MetricKit subscriber plus an uncaught-exception handler. Prior-session crashes land in activity_log with full call stacks on next launch.
  • Howrey Script loads — the font was falling back to system rounded because the PostScript name was wrong. Fixed; the logo / headings now render in Howrey.
  • New app icon — full mint background with a large, optically-centered Howrey P.

iOS ↔ Web parity — every screen

  • Profile detail rewrite — 325pt hero carousel, 54pt action circles, Howrey name, status pill, stats grid, bio, 2-col detail pairs, hanky flags, personal notes, shared albums, block / report, prev/next browse. Matches /profile/[id] exactly.
  • Profile editor rewrite — 17 fields in web's exact order, Carbon-style inputs (bottom-border, no rounded boxes), glass-bottom save button with Saving / ✓ Saved states, dirty-state warning on back, photo reorder arrows, delete, fullscreen.
  • Chat rewrite — single white rounded-pill input bar, chat-header mini-stats, favorite-heart button, read receipts (single-check / filled-circle via realtime), typing indicator (realtime broadcast), message actions (delete / block / report).
  • Conversation list rewrite — underline tabs, orange unread badge on avatar, search, long-press menu.
  • Feedback form — 6 category badges, 100 / 2000 char counters, submit + success state.
  • Settings rewrite — sections in exact web order, fuzz-radius picker with metric + imperial, status duration matches web's 5 options, notification permission status, blur-NSFW pointer, FAQ screen with 19 items, safety sharing (24h link) with active-shares list, data export (10 tables in parallel), blocked users with Unblock, travel banner with distance-from-home.
  • Filter sheet wired — filters now actually apply to the map / list / grid. Advanced filters Pro-gated.
  • Map pins — self-markers: real GPS + fuzzed position with a dashed connector line, matching web's "You (actual) / What others see" pattern.
  • Activity tabs — Signals / Invites / My Events / Favorites / Viewed me. Invites now have inline Accept / Decline buttons.
  • Events rewrite — create form captures every field; detail view has Details / Chat / Attendees tabs with event-scoped messages and RSVP flow.
  • Spots rewrite — list with active-user 🔥, verified check, star rating; detail with 6 rating categories, safety notes, review + tip forms, community chat.
  • Upgrade screen rewrite — period toggle with Save-33% badge, Founding Member banner, 14 Pro features, opens getprowl.app/upgrade?source=ios for Stripe (iOS compliance).
  • Login rewrite — Carbon inputs, password eye-toggle, terms panel, forgot-password flow.
  • Onboarding rewrite — 3-step flow with progress bar, chip selectors, photo upload, persists to Supabase.
  • Realtime presence — iOS joins the same online-users channel the web uses. Online dots go live instead of lagging.
  • Toast service — consistent top-aligned toasts with .info / .success / .warning / .error kinds.
  • Pull-to-refresh on every list that shows server-backed rows.

Under the hood

  • 9 commits, ~6,000 net additions across ~30 files.
  • Every design token sourced from Theme.*; no hardcoded colors in user-facing views.
  • ~70 GitHub parity issues filed → all closed.

Beta 0.20 — Parity

April 19, 2026 — iOS native app, audio messages, video calling, state compliance, and full platform parity.

iOS Native App

  • Full SwiftUI app — native iOS client matching every web feature. Map, chat, signals, events, spots, albums, settings.
  • MapLibre integration — user pins, spot markers, event markers on a native map.
  • Monorepo — web and iOS now share a single repository with unified issue tracking.

Audio Messages

  • Voice messages — hold-to-record on web (MediaRecorder) and iOS (AVAudioRecorder).
  • Custom waveform player — visual playback with progress bars and duration.
  • Ephemeral audio — voice messages support disappearing timer.

Audio & Video Calling (Pro)

  • LiveKit integration — real-time audio and video calls via WebRTC.
  • Full call UI — incoming call alerts, mute, camera toggle, duration timer.
  • Calls are never recorded — end-to-end encrypted when LiveKit is connected.
  • Pro-only feature — gated behind subscription.

State NSFW Compliance

  • 20 US states — age verification required before accessing explicit content.
  • Two verification tiers — DOB declaration (standard) and government ID (TX, LA).
  • Content gate — server-side enforcement, cookie persistence, state detection via geolocation.
  • Transparency — users see which state was detected and why verification is required.

Chat Enhancements

  • Smart replies — context-aware quick reply suggestions.
  • Typing indicator — real-time "typing..." via Supabase Realtime.
  • Read receipts (Pro) — double-checkmark when message is read.
  • Ephemeral messages — 1min to 1hr self-destruct timer.
  • Message deletion — long-press to delete for everyone.
  • Photo sending — camera/gallery in chat with Supabase Storage upload.

New Features

  • Activity screen — signals, invites, favorites, and "who viewed me" tabs.
  • Cruising spots — list, detail, ratings, reviews, tips, add-spot form.
  • Events — create events, RSVP, address reveal timing, event chat.
  • Private albums — create, manage, share with specific users.
  • Safety sharing — temporary 24h location share links.
  • Travel mode — toggle when traveling away from home.
  • Photo verification — selfie-based identity verification.
  • Onboarding flow — 3-step first-run profile setup.
  • Filters — online, looking, body type, position filter sheet.
  • Upgrade screen — Pro features list with Stripe checkout.
  • Deep links — prowlapp:// URL scheme for push notification routing.

Accessibility & Quality

  • WCAG contrast — 0 FAIL, 830 AAA pass across all routes.
  • Accessibility settings — dyslexic font, reduce motion, high contrast, large text.
  • Error recovery — retry buttons on all async failures.
  • Loading states — spinners on all data-fetching pages.
  • Destructive button styling — danger colors on all block/delete actions.

1.9 — Cinematic

April 7, 2026 — Full cinematic redesign, Carbon forms, and public info pages.

Design

  • Cinematic landing page — Scout Motors-inspired full-viewport sections with dreamy photography.
  • Cinematic prose pages — full-bleed hero images on terms, privacy, about, docs, support, changelog.
  • Bigger bolder typography — across landing and info pages.
  • Public site header — sticky header with hamburger menu navigation on all public pages.
  • Subtler spot/event map markers — smaller, thinner borders, muted colors.
  • Static map images on spot cards — showing actual location.

Forms

  • Carbon Design System form components — bottom-border inputs, selects, textareas, toggles.
  • Applied globally — across profile editor, login, signup, settings, event creation, feedback, onboarding, admin.

Architecture

  • Public info pages — terms, privacy, about, docs, support, changelog now publicly accessible without login.
  • Login help link — "Need help?" contact link added to login page.
  • Auto-refresh on stale JS — automatically refreshes on stale JS errors after deployments.
  • Supabase IO optimization — removed full-table scans, reduced polling intervals and cron frequency.

Bug fixes

  • Profile data wipe fix — ProfileEditor re-syncs form when auth profile loads.
  • Broadcast send — shows spinner + error toast.
  • GitHub Actions audit workflow removed — was sending failure emails.

1.8 — Blue Eclipse

April 6, 2026 — Deep indigo, full-page architecture, and a pile of fixes.

Design

  • Blue Eclipse color palette — the app has shifted from dark teal/navy to deep indigo. Every panel, surface, and gradient updated throughout.
  • Anonymous avatars — profiles without a photo now show a blue-tinted silhouette instead of a blank space.
  • Heart icons — favorites now use hearts everywhere. Stars are gone.

Architecture

  • Full-page layout — pages are no longer panel overlays floating on top of the map. Profile, settings, messages, and activity are now full pages. The map stays alive in the background and you return to it instantly.
  • Button freeze fix — resolved a bug where map action buttons would freeze after navigating to a page and back.

Notifications

  • Signal notifications — a toast pops up in-app whenever someone signals you, even while you're on a different page.
  • Message notifications — new messages trigger a toast notification while you're anywhere in the app.

Location & privacy

  • Fuzz radius shows imperial units — the settings slider now displays both metric (m/km) and imperial (ft/mi) side by side.
  • Fuzz settings persist — your fuzz radius and map visibility preference now save to Supabase and sync across all your devices.

Onboarding

  • Auto-login after signup — new accounts go straight into onboarding with no extra login step.
  • Location auto-prompt — first-time users get the browser location permission prompt automatically on first visit.

Security & compliance

  • Admin HMAC auth — the admin panel now uses cryptographically signed tokens for all authentication. Admin login is completely separate from user accounts.
  • Session timeout — sessions auto-expire after 2 hours of inactivity.
  • Data export & delete — GDPR/CCPA-compliant data export and permanent account deletion, both available in Settings.

Chat

  • Chat deletion removes for both users — deleting a conversation removes it for both people. Block option available at the same time.

Online status

  • 5-minute timeout — users show as online for up to 5 minutes after their last activity.
  • Cron cleanup — a scheduled job clears stale online status automatically.

Intent

  • 2-hour auto-expiry — intent (what you're looking for) now auto-expires after 2 hours instead of 30 minutes.

Beta 1.7 — April 5, 2026

Real people. Real map. Finally.

The big fix

  • Real users now appear on the map. A critical database bug was silently preventing real users from showing up — you were only seeing demo profiles this entire time. Fixed.

Profile redesign

  • No more mini profile — tapping a map marker goes straight to the full profile
  • Browse profiles — swipe between nearby users with the < Profiles > nav in the header
  • New layout — stats grid, two-column details, photo carousel with "X PHOTOS" pill
  • Chat + Map buttons on the photo — message someone or fly to their location on the map
  • Empty fields hidden — only shows what the person has filled in
  • "See how others see you" — preview your own profile from the editor

Spots & events

  • Spot and event preview cards completely redesigned to match the profile style
  • Event attendee lists — see who's going, pending, and declined
  • Edit and cancel your own events
  • Custom Figma-designed icons for all spot and event types
  • Event times save correctly now

Reliability

  • Offline banner — shows when you lose connection, confirms when you're back
  • Block confirmation — asks before blocking someone
  • Error messages humanized — no more technical jargon
  • Safari resume fixed — app no longer freezes when returning from background
  • Photo swipe vs page scroll — no more gesture conflicts

Security

  • RLS policies added to all 9 unprotected database tables
  • Auth guards added to 3 unprotected API routes
  • All dangerouslySetInnerHTML instances audited for XSS safety

Design consistency

  • Beta feedback page completely rebuilt to match the design system
  • Upgrade page text visibility fixed
  • Chat received message bubbles now dark-mode (were jarring light gray)
  • Settings active states visible (Pro badge, fuzz radius, toggles)
  • Incognito toggle shows disabled state for free users
  • Push notification toggle handles unsupported browsers
  • Hardcoded hex colors replaced with design tokens across 21 files

Nielsen Norman heuristic evaluation

  • 172 usability findings identified and fixed across all 10 heuristics
  • /faq and /help redirect pages added
  • Inline help text on complex features (signals, filters, albums, intent picker)
  • Empty states with helpful messages and calls to action
  • Escape key closes all modals and overlays

Audit toolkit

  • 7 automated audit tools: performance, contrast, QA, design, load, security, heuristic

Beta 1.6 — March 31, 2026

51 reports filed. 51 fixes shipped.

Navigation & performance

  • Instant panel transitions — loading skeletons for chat, profile, activity, and settings appear immediately while content loads
  • Panel animation 40% faster — reduced from 200ms to 120ms with snappier easing
  • Navigation buttons glow on tap — instant visual feedback before the page loads
  • All routes prefetched — about, docs, support, changelog now preload in the background
  • Hero background images removed — gradient renders instantly, eliminating 10-13 second LCP on 12+ pages
  • Map buttons no longer freeze — popup backdrops are properly cleaned up when navigating away

Profile photos

  • Photo carousel — swipe through all profile photos with dot indicators
  • Fullscreen gallery — tap any photo to enlarge, swipe between all photos, keyboard arrows on desktop
  • Shared album photos in gallery — photos from albums shared with you appear in the user's profile with labels
  • Profile loading skeleton — instant placeholder while profile data loads

Map

  • Top bar z-index fixed — map markers no longer block the navigation buttons
  • Marker pills attached to avatars — no gap between photo and status pill
  • Event and spot markers — clear SVG icons with white circle backgrounds, matching detail pages
  • Event/spot cards above controls — preview cards render above all map buttons
  • View switcher fixed — list and grid buttons were swapped
  • Map loading indicator — spinner with "Loading map..." while MapLibre initializes
  • WebGL fallback — graceful message when map can't render on a device

Activity & favorites

  • My Events tab — see events you organized with attendee counts and RSVP status
  • Favorite and share on mini profiles — heart and share buttons on the preview card
  • Birthday picker — set your birthday in the profile editor, age calculates automatically

Accessibility

  • WCAG AA contrast audit — automated tool scanned every page, found 22 failures, all fixed
  • Text opacity floor — no text below /50 opacity on dark backgrounds anywhere in the app
  • Design tokens updated — mint-muted, text-secondary, placeholder colors all meet 4.5:1 minimum

Bug fixes

  • Location prompt only asks once — persisted to localStorage
  • Feedback button moved to bottom, smaller, no icon
  • Profile hero text (Pro badge, hosting, verified) now white on photo
  • Clipboard write permission error handled on iOS Safari
  • Verification selfie upload RLS policy added
  • Signal picker centered so it doesn't go off-screen

Behind the scenes

  • Playwright UI audit tool for automated interaction testing
  • WCAG contrast audit tool for automated accessibility testing
  • Site admin updates

Beta 1.5 — March 30, 2026

#thankyoubetatesters

This release is entirely driven by beta tester feedback. Every fix below came from a real report submitted through the app. If you're testing Prowl — thank you. You're shaping this thing.

Intent picker

  • What are you looking for? — the Looking toggle now opens a picker with 7 options: Just chatting, Friendly hang, Workout buddy, Dating, Quick & easy, Long session, Not sure yet
  • Your intent shows in the green pill on the top bar and broadcasts to nearby users
  • New profile tags: Hang out, Coffee, Workout buddy, Not sure yet — it's not all about sex unless you want it to be

Favorites

  • Favorites now persist to your account — they sync across sessions and devices
  • New Favorites tab in Activity — see all your favorited users in one place
  • Favorites filter on map, grid, and list views — heart toggle to show only people you've favorited
  • Favorite heart now shows as active when toggled (was invisible before)

Event invitations

  • Invitations now appear as cards in your chat with the person who invited you — Accept or Decline right there
  • New Invites tab in Activity — see all your pending and accepted event invitations

Signals

  • Signal menu trimmed to 6 clear options: Wink, Nod, Flex, Cruise, Grab, Bite
  • Larger tap targets, picker aligned to right edge so it doesn't go off-screen
  • Invite button on profiles now labeled so you know what it does

Map

  • Marker labels redesigned — clean white pill with position arrows, hosting icon, and online dot
  • Demo/seed profiles now clearly labeled with a gold "Demo" badge
  • Event preview card no longer hidden behind bottom controls
  • Location permission no longer re-prompts every visit

Chat

  • Unread message counts now show per conversation in the chat list
  • Messages properly mark as read when you open the conversation

Menus & UI

  • Action menu and intent picker close when you tap outside them
  • Feedback button moved to top-left so it doesn't overlap mini profiles
  • FAQ accordion touch targets enlarged for mobile
  • All page headings now use Howrey Script consistently

Safety

  • Photo verification camera prompt improved for mobile — works on iOS Safari now
  • Fixed a bug where accounts could be incorrectly auto-flagged for review

Behind the scenes

  • Private album photo storage now fully operational
  • Site admin updates and beta management improvements

Beta 1.4 — March 29, 2026

Performance & polish

Performance

  • ~85% fewer server calls — rewrote all polling to use Supabase Realtime subscriptions for messages, broadcasts, and event chat
  • Location broadcasting — reduced from every 15 seconds to every 2 minutes with 50-meter distance gating. Your battery will thank you.
  • Faster first paint — fonts preloaded, 7 components lazy-loaded, initial JS bundle reduced
  • Smoother scrolling — glass panels GPU-accelerated, blur reduced, button animations limited to compositor-only properties
  • Middleware optimization — API routes skip redundant auth checks, location updates bypass serverless functions entirely

Bug fixes

  • Fixed profile access — tapping profiles from grid, list, or swipe mode now works for all users including demo profiles
  • Fixed album sharing — shared albums now display as styled cards in the message thread instead of plain text
  • Fixed feedback button covering bottom navigation
  • Fixed "Share canceled" error appearing when canceling the share dialog

Beta 1.3 — March 29, 2026

Beta program & feedback

Beta program

  • Beta wall — new landing page for beta signups with city field and email collection
  • Feedback button — floating button on every page submits feedback directly as GitHub issues
  • Progress tracking — testers can see how many feedback reports they've submitted toward their 3-report requirement
  • Auto-seeding — when a new tester activates, their city automatically gets populated with seed profiles so the map isn't empty

Admin

  • Beta dashboard showing per-tester progress, feedback counts, and city distribution
  • Admin login with role-based access control
  • Direct links to tester profiles and conversations

Beta 1.2 — March 28, 2026

Chat redesign & user docs

Chat

  • Redesigned chat input — white pill style per Figma, visible photo and timer icons, blue send button
  • Mini profile in header — shows who you're chatting with at a glance
  • Message receipts — "Sent" and "Read" indicators on your last message
  • Sending state — visual feedback while messages are in flight with retry on failure
  • Delete conversation — delete, block, or report from a single action sheet
  • Album sharing — create private albums, send them in chat, recipients can share back

Map

  • Fuzz visualization — see exactly how location fuzzing works: your real position (blue dot) connected to your fuzzed position (photo) by a dotted line
  • Product tour — first-time users get a guided walkthrough that spotlights actual UI elements with a playful, adult-themed tone

Content

  • Complete user documentation at How to use Prowl
  • Support page with 16 FAQs and email contact
  • Seed profiles now work for any city via Nominatim geocoding

Design

  • Contrast fixes across 17+ files — navy panels, admin brightened, consistent text colors
  • Pricing simplified to Free + Pro ($9.99/mo) — Premium tier eliminated

Beta 1.1 — March 27, 2026

Safety, events & design system

Events

  • Full event system — create events with date, location, attendee cap, and house rules
  • Invitations & RSVP — invite users, accept or decline
  • Event chat — group chat for each event, now powered by Realtime

Safety

  • Device fingerprinting — detects ban evasion and multi-accounting
  • Verification system — photo verification, auto-checks on signup, manual review queue
  • Account states — jail, manual review, dunning for payment issues

Accessibility

  • OpenDyslexic font option
  • Reduce motion setting
  • High contrast mode
  • Large text option
  • Screen reader improvements (ARIA labels, skip nav, focus management)

Design system

  • Full component audit and token system: spacing, radii, shadows, colors unified from Figma
  • PanelHeader, Badge, Avatar, BottomSheet, Modal — standardized across all pages
  • Howrey Script wordmark, Manrope body/UI text, consistent mint/white/navy palette

Beta 1.0 — March 26, 2026

The complete beta

Core features

  • Real-time map — see nearby users with photo pins, activity status rings, and distance labels
  • Three view modes — map, grid (photo wall), and list view with sort/filter
  • Signaling — send signals (interested, DTF, looking), mutual signals create a match
  • Messaging — real-time chat with Supabase, ephemeral messages with auto-delete timers
  • Broadcast chat — public channel visible to everyone nearby
  • User profiles — photos, bio, age, body type, position, ethnicity, tribe, kinks, looking for, hosting status, substance preferences
  • Swipe mode — browse profiles by swiping left/right on the mini preview card

Map features

  • Location fuzzing — your exact location is never shared; configurable radius
  • Cruising spots — community-submitted venues with ratings and reviews
  • Travel mode — drop a pin anywhere and see who's near that location
  • Safety share — share a time-limited link so a trusted friend can track your location
  • Looking toggle — go "active" with auto-expire (now 2 hours, see 1.8)

Monetization

  • Free tier — all core features: browse, message, signal, 10-mile radius
  • Pro tier ($9.99/mo) — unlimited radius, travel mode, priority in nearby, advanced filters
  • Stripe integration with billing portal and subscription management

Platform

  • Progressive Web App (PWA) with install prompt and offline page
  • Push notifications for messages and signals
  • Admin dashboard with user management, verification queue, analytics
  • Activity logging and daily email reports
  • Error monitoring with automatic GitHub issue creation

Pre-beta — March 23–25, 2026

Foundation

  • Initial build: map, profiles, chat, signals
  • Supabase integration: auth, real-time, storage, RLS policies
  • Renamed from Burl to Prowl
  • Visual overhaul: navy/mint color system, Howrey Script, glass UI
  • 105 real Palm Springs venues seeded
  • Demo user system for testing without real accounts
  • Landing page with Figma-derived design

Prowl is built by one person in Palm Springs. If you're in the beta, thank you for being here early.