A bigger, faster, more alive Offseason.
The largest update since launch. A completely new onboarding experience, badge ceremonies with confetti and haptics, deep performance work on photos and video, and animation polish across nearly every screen.
Highlights
- Brand new onboarding flow — cinematic hook screen, animated sport picker, real-time username availability, photo capture during signup
- Full badge reveal ceremony with confetti, light streaks, and haptics — plus a shareable badge card for posting wins to Instagram
- Pinch to zoom on photos, Instagram-style — zooms from your exact finger position, dims the background, springs back when you let go
- Video performance overhaul — videos download once and replay from disk, audio now plays through the speaker even on silent
- Disk caching for profile pics and post photos — the app feels noticeably faster after the first launch
- Animation and haptic polish across like, follow, comment, post, moment upload, profile save, tab switching, notifications, and more
Onboarding
- Complete new onboarding flow for new users
- Cinematic hook screen with athlete silhouettes and tagline
- Animated sport picker grid with haptic feedback per tap
- Position and grad year selection with sport-specific suggestions
- Emotional promise screen with staggered text reveal
- Username claim with real-time availability checking
- Profile photo capture during signup
- Activation screen before entering the app
Badges & Leaderboard
- Full badge reveal ceremony with confetti, light streaks, and haptics
- Badge share card for posting wins to Instagram and other social
- Ambassador specialty badge — gold-orange gradient, megaphone icon
- Pioneer specialty badge — blue gradient, flag icon
- Your own leaderboard entry now has a persistent glow and pulse
- "You're on the leaderboard" banner animates in when you open it
- "YOU" label on your leaderboard row, plus a tap flash before navigating
Animations & Haptics
- Like button: heart springs up, particle burst, deflates on unlike
- Follow button: scale pulse, blue glow, confetti burst on follow
- Post submitted: full screen "Your highlight is live" celebration toast
- Moment uploaded: "Moment is live" toast with gradient ring glow
- Profile ring pulses after uploading a moment
- Comment send button pulses with haptic on tap
- New comments slide up with spring animation
- Comment like button: heart scale bounce and particle burst
- Notification bell shakes when new notifications arrive
- Unread notifications slide in from the leading edge with staggered delay
- Notifications fade out with a satisfying sweep when marked read
- Profile save: green checkmark toast slides up from the bottom
- Profile complete: full screen confetti the first time all fields are filled
- Badge popup, profile pic long press zoom, sport tag selection, and tab switching all now have haptic feedback
Suggested Athletes
- Follow and Follow Back buttons directly on suggested athlete cards
- Full row tappable to profile in suggested athletes sheet
- Mutual / Same School / Same Sport relationship badges still visible
- Sports count increased to 3 in suggested lists
Photos & Video
- Pinch to zoom on post photos, Instagram-style
- Zoom anchors to your exact finger position, background dims, springs back on release
- Video audio now plays regardless of the ringer or silent switch
- Videos download once and serve from disk on repeat plays
- Stable cache key ignores expiring Firebase Storage tokens
Bandwidth & Performance
- Disk cache for profile pics and post photos persists across app launches
- Pinch-zoom images now check cache before fetching from the network
- Video background downloads cancel cleanly when posts leave the screen
- Moment ring refresh interval increased from 60s to 5 minutes
- Leaderboard no longer reloads every time the sheet opens
- Firestore switched to memory cache settings
- URLCache bumped to 50MB memory / 200MB disk
- Friends-of-friends query capped at 20 to limit Firestore reads
- Notification listener properly cleans up on view disappear
Stability
- Video player redesigned to use AVURLAsset — fixes "AVPlayerItem cannot be associated with more than one AVPlayer" crash
- Video cache clears on logout — fixes freeze when switching accounts
- Confetti particles pre-generated at tap time — fixes CGFloat.random crash
- Username check task properly cancels before saving on the claim screen
- Video download tasks wrapped in a serial queue for thread safety
Quality of Life
- Tap to dismiss the keyboard across comments, posts, edits, onboarding, and moment upload
- Pull to refresh on profiles
- Profile completion score now tracks saved state only — celebration fires at the right time
- Notification sweep animation tied to auto mark-all-read at 1.5s
- All audio plays through the speaker regardless of ringer position
- Bug fixes and stability improvements