docs: add phase 3 design polish planning, update progress
This commit is contained in:
@@ -0,0 +1,420 @@
|
||||
# Onboarding & Retention — Research för Gravl
|
||||
|
||||
## Problemet
|
||||
|
||||
> "70% of fitness app users drop off within the first 90 days. The reason isn't a lack of motivation. It's bad UX."
|
||||
|
||||
> "80% of New Year's resolutions fail by February"
|
||||
|
||||
**Retention-statistik:**
|
||||
- Day 1: ~25% retention (average app)
|
||||
- Day 7: ~15% retention
|
||||
- Day 30: ~5-10% retention
|
||||
- Fitness apps: Ofta ännu sämre pga motivation-dependent
|
||||
|
||||
---
|
||||
|
||||
## Del 1: Onboarding
|
||||
|
||||
### Varför onboarding är kritiskt
|
||||
|
||||
> "First impressions matter. For mobile apps, onboarding is the moment of truth — the experience that determines whether a new user becomes engaged or churns within minutes."
|
||||
|
||||
### Onboarding Goals
|
||||
|
||||
1. **Visa värde snabbt** — "Aha moment" inom 60 sekunder
|
||||
2. **Samla nödvändig data** — Men inte mer än nödvändigt
|
||||
3. **Personalisera upplevelsen** — Anpassa till användaren
|
||||
4. **Skapa första framgången** — Quick win
|
||||
5. **Bygga vana** — Första steget mot retention
|
||||
|
||||
### Onboarding-typer
|
||||
|
||||
| Typ | Beskrivning | Best for |
|
||||
|-----|-------------|----------|
|
||||
| **Progressive** | Gradvis introduktion | Komplexa appar |
|
||||
| **Benefits-oriented** | Visa värde först | Skeptiska användare |
|
||||
| **Function-oriented** | Lär ut features | Verktygs-appar |
|
||||
| **Account-focused** | Registrering först | Community-appar |
|
||||
| **Conversational** | Dialog-baserad | Personaliserade appar |
|
||||
|
||||
### Conversational Onboarding (Rekommenderat för Gravl)
|
||||
|
||||
**Traditionellt:**
|
||||
```
|
||||
Screen 1: Välj mål [Styrka] [Hypertrofi] [Fettförbränning]
|
||||
Screen 2: Välj erfarenhet [Nybörjare] [Medel] [Avancerad]
|
||||
Screen 3: Välj dagar [1] [2] [3] [4] [5] [6] [7]
|
||||
Screen 4: Ange vikt [____ kg]
|
||||
```
|
||||
|
||||
**Conversational:**
|
||||
```
|
||||
Coach: "Hej! Jag är din träningscoach. Vad vill du uppnå?"
|
||||
User: "Jag vill bli starkare och se bättre ut"
|
||||
|
||||
Coach: "Bra mål! Hur länge har du tränat?"
|
||||
User: "Typ ett år, men ganska sporadiskt"
|
||||
|
||||
Coach: "Ok, du har en bra grund! Hur många dagar per vecka
|
||||
kan du verkligen träna, realistiskt?"
|
||||
User: "3-4 dagar"
|
||||
|
||||
Coach: "Perfekt för PPL! En sista sak — hur mycket väger du
|
||||
ungefär? Det hjälper mig sätta rätt startvikter."
|
||||
User: "85 kg"
|
||||
|
||||
Coach: "Toppen! Jag har skapat ett program för dig. Redo att
|
||||
köra ditt första pass?"
|
||||
```
|
||||
|
||||
**Fördelar:**
|
||||
- Känns personligt, inte som ett formulär
|
||||
- Samlar mer context ("ganska sporadiskt")
|
||||
- Användaren känner sig hörd
|
||||
- Naturlig felhantering
|
||||
|
||||
### Onboarding Best Practices
|
||||
|
||||
#### 1. Minimera friktion
|
||||
|
||||
```
|
||||
❌ 8 steg, 15 frågor, email-verifiering
|
||||
✅ 3-4 steg, 5-7 frågor, skip email
|
||||
```
|
||||
|
||||
#### 2. Visa värde INNAN du ber om data
|
||||
|
||||
```
|
||||
❌ "Registrera dig för att fortsätta"
|
||||
✅ "Här är ditt första pass!" → "Spara din progress?"
|
||||
```
|
||||
|
||||
#### 3. Progressive disclosure
|
||||
|
||||
```
|
||||
Steg 1: Grundläggande (mål, erfarenhet)
|
||||
Steg 2: Senare (kroppsmått, 1RM)
|
||||
Steg 3: Över tid (preferenser, historik)
|
||||
```
|
||||
|
||||
#### 4. Default-värden
|
||||
|
||||
```
|
||||
❌ "Ange din 1RM på bänkpress: [____]"
|
||||
✅ "Din estimerade 1RM: [60kg] (baserat på erfarenhet)"
|
||||
```
|
||||
|
||||
#### 5. Instant gratification
|
||||
|
||||
```
|
||||
Onboarding → Första passet → Completion celebration
|
||||
(helst inom 5-10 minuter)
|
||||
```
|
||||
|
||||
### Onboarding Metrics
|
||||
|
||||
| Metric | Mål | Beskrivning |
|
||||
|--------|-----|-------------|
|
||||
| **Completion rate** | >80% | Andel som avslutar onboarding |
|
||||
| **Time to value** | <2 min | Tid till första "aha moment" |
|
||||
| **Drop-off points** | Identify | Var lämnar användare? |
|
||||
| **Day 1 activation** | >50% | Andel som gör första passet |
|
||||
|
||||
---
|
||||
|
||||
## Del 2: Retention
|
||||
|
||||
### Retention Strategies (13 från Orangesoft)
|
||||
|
||||
#### 1. Personalisering
|
||||
|
||||
> "47% of users say they'd leave apps that don't personalize their experience"
|
||||
|
||||
- Anpassade program baserat på mål
|
||||
- Dynamiskt innehåll baserat på beteende
|
||||
- Personliga hälsningar
|
||||
|
||||
#### 2. Gamification
|
||||
|
||||
- Streaks och achievements
|
||||
- Progress visualization
|
||||
- Leaderboards (opt-in)
|
||||
|
||||
#### 3. Social features
|
||||
|
||||
- Workout sharing
|
||||
- Challenges med vänner
|
||||
- Community support
|
||||
|
||||
#### 4. Push notifications
|
||||
|
||||
- Workout reminders
|
||||
- Streak warnings
|
||||
- Achievement celebrations
|
||||
|
||||
#### 5. Goal tracking
|
||||
|
||||
- Visuell progress
|
||||
- Milestones
|
||||
- Before/after comparisons
|
||||
|
||||
#### 6. Content variety
|
||||
|
||||
- Nya övningar regelbundet
|
||||
- Seasonal challenges
|
||||
- Expert tips
|
||||
|
||||
#### 7. Wearable integration
|
||||
|
||||
- Apple Watch
|
||||
- Garmin, Fitbit
|
||||
- Auto-sync
|
||||
|
||||
#### 8. AI coaching
|
||||
|
||||
- Adaptiva program
|
||||
- Form feedback
|
||||
- Recovery recommendations
|
||||
|
||||
#### 9. Offline functionality
|
||||
|
||||
- Fungerar utan internet
|
||||
- Sync när online
|
||||
|
||||
#### 10. Feedback loops
|
||||
|
||||
- Rate your workout
|
||||
- Adjust difficulty
|
||||
- Learn preferences
|
||||
|
||||
#### 11. Community
|
||||
|
||||
- Forums/comments
|
||||
- User-generated content
|
||||
- Social accountability
|
||||
|
||||
#### 12. Rewards
|
||||
|
||||
- Badges/achievements
|
||||
- Discounts/perks
|
||||
- Real rewards
|
||||
|
||||
#### 13. Seamless UX
|
||||
|
||||
- Fast load times
|
||||
- Intuitive navigation
|
||||
- Consistent design
|
||||
|
||||
### Habit Formation
|
||||
|
||||
#### "21 Days" är en myt
|
||||
|
||||
> "The popular belief that it takes 21 days to form a habit is actually a myth."
|
||||
|
||||
**Verkligheten:**
|
||||
- 18-254 dagar beroende på beteende
|
||||
- Genomsnitt: ~66 dagar
|
||||
- Enklare habits = snabbare (vatten)
|
||||
- Svårare habits = längre (gym)
|
||||
|
||||
#### Habit Loop (från "Hooked")
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ │
|
||||
▼ │
|
||||
┌───────┐ ┌────────┐ ┌────────┐ │
|
||||
│ CUE │───▶│ ACTION │───▶│ REWARD │────┘
|
||||
└───────┘ └────────┘ └────────┘
|
||||
```
|
||||
|
||||
**Fitness app-tillämpning:**
|
||||
1. **Cue:** Push notification, tid på dagen, location
|
||||
2. **Action:** Öppna app, starta pass
|
||||
3. **Reward:** Progress, achievement, dopamine
|
||||
|
||||
#### Fabulous App (Google Design Award)
|
||||
|
||||
> "Leveraging Material Design guidelines, the company created an engaging UI around science-based strategies for psychological reinforcement, motivating users from onboarding through goal completion."
|
||||
|
||||
**Resultat:** 16x ökning i dagliga downloads
|
||||
|
||||
---
|
||||
|
||||
## Del 3: Push Notifications
|
||||
|
||||
### Statistik
|
||||
|
||||
- Push kan öka engagement med **80%**
|
||||
- Push kan öka retention med **88%**
|
||||
- Men **53%** tycker push är irriterande
|
||||
|
||||
### Timing (Fitness Apps)
|
||||
|
||||
| Tid | Typ | Varför |
|
||||
|-----|-----|--------|
|
||||
| **7-9 AM** | Morgon-workout reminder | Innan dagen startar |
|
||||
| **5-7 PM** | Kvälls-workout reminder | Efter jobb |
|
||||
| **8-9 PM** | Achievement summary | Reflektera över dagen |
|
||||
| **Söndag kväll** | Weekly summary | Prep för veckan |
|
||||
|
||||
### Fitness-specifika Push-strategier
|
||||
|
||||
#### 1. Workout Reminders
|
||||
|
||||
```
|
||||
🏋️ "Dags för Pull-dag! Redo att krossa det?"
|
||||
[Starta pass] [Påminn senare]
|
||||
```
|
||||
|
||||
#### 2. Streak Warnings
|
||||
|
||||
```
|
||||
🔥 "Din 7-dagars streak är i fara! Logga ett pass idag."
|
||||
```
|
||||
|
||||
#### 3. Achievement Celebrations
|
||||
|
||||
```
|
||||
🎉 "NYTT PR! 100kg bänkpress! Du är starkare än 78% av användarna."
|
||||
```
|
||||
|
||||
#### 4. Progress Updates
|
||||
|
||||
```
|
||||
📈 "Förra veckan: 4 pass, 12,500 kg totalt. +8% vs förra veckan!"
|
||||
```
|
||||
|
||||
#### 5. Re-engagement
|
||||
|
||||
```
|
||||
😢 "Vi saknar dig! Ditt senaste pass var för 5 dagar sedan."
|
||||
```
|
||||
|
||||
### Push Best Practices
|
||||
|
||||
#### DO:
|
||||
|
||||
✅ Personalisera (namn, mål, historik)
|
||||
✅ Skicka vid rätt tid (user timezone)
|
||||
✅ Ge värde (tips, achievements, progress)
|
||||
✅ A/B-testa copy
|
||||
✅ Respektera quiet hours
|
||||
✅ Låt användare välja frekvens
|
||||
|
||||
#### DON'T:
|
||||
|
||||
❌ Spamma (max 1-2/dag)
|
||||
❌ Generiska meddelanden
|
||||
❌ Skicka mitt i natten
|
||||
❌ Ignorera opt-outs
|
||||
❌ Samma meddelande varje dag
|
||||
|
||||
### Push Notification Triggers
|
||||
|
||||
```python
|
||||
def should_send_push(user):
|
||||
# Reminder for scheduled workout
|
||||
if user.has_workout_today and not user.started_workout:
|
||||
if is_optimal_time(user):
|
||||
return "workout_reminder"
|
||||
|
||||
# Streak at risk
|
||||
if user.streak > 3 and user.days_since_workout == 1:
|
||||
return "streak_warning"
|
||||
|
||||
# Achievement unlocked
|
||||
if user.new_achievements:
|
||||
return "achievement"
|
||||
|
||||
# Re-engagement
|
||||
if user.days_since_workout >= 5:
|
||||
return "re_engagement"
|
||||
|
||||
return None
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Del 4: Rekommendationer för Gravl
|
||||
|
||||
### Onboarding Flow
|
||||
|
||||
```
|
||||
1. Welcome Screen (5s)
|
||||
"Hej! Redo att bli starkare?"
|
||||
[Kom igång]
|
||||
|
||||
2. Goal Selection (conversational)
|
||||
Coach: "Vad vill du uppnå?"
|
||||
[Styrka] [Muskler] [Gå ner i vikt] [Allmän fitness]
|
||||
|
||||
3. Experience Level
|
||||
Coach: "Hur länge har du tränat?"
|
||||
[Nybörjare] [6-12 månader] [1-3 år] [3+ år]
|
||||
|
||||
4. Schedule
|
||||
Coach: "Hur många dagar per vecka kan du träna?"
|
||||
[2] [3] [4] [5] [6]
|
||||
|
||||
5. Quick Profile (optional)
|
||||
Coach: "Vikt hjälper mig sätta rätt startvikter"
|
||||
[____ kg] eller [Hoppa över]
|
||||
|
||||
6. Program Generated
|
||||
"Ditt PPL-program är klart! Första passet: Push A"
|
||||
[Starta nu] [Senare]
|
||||
```
|
||||
|
||||
**Total tid:** ~90 sekunder
|
||||
|
||||
### Retention Checklist
|
||||
|
||||
#### Week 1: Activation
|
||||
|
||||
- [ ] Första passet genomfört
|
||||
- [ ] Första PR celebration
|
||||
- [ ] Push notification opt-in
|
||||
- [ ] Förklara streak-systemet
|
||||
|
||||
#### Week 2-4: Habit Building
|
||||
|
||||
- [ ] 3+ pass/vecka
|
||||
- [ ] Streak etablerad
|
||||
- [ ] Första achievement unlocked
|
||||
- [ ] Progress-graf visar förbättring
|
||||
|
||||
#### Month 2+: Long-term Retention
|
||||
|
||||
- [ ] Program-byte erbjuds
|
||||
- [ ] Milestones firande (50 pass, etc.)
|
||||
- [ ] Referral program
|
||||
- [ ] Advanced features unlock
|
||||
|
||||
### Key Metrics att Tracka
|
||||
|
||||
| Metric | Target | When to Measure |
|
||||
|--------|--------|-----------------|
|
||||
| Onboarding completion | >80% | Immediate |
|
||||
| Day 1 activation | >50% | Day 1 |
|
||||
| Day 7 retention | >30% | Day 7 |
|
||||
| Day 30 retention | >20% | Day 30 |
|
||||
| Weekly active users | — | Ongoing |
|
||||
| Workouts/week/user | >2.5 | Ongoing |
|
||||
|
||||
---
|
||||
|
||||
## Källor
|
||||
|
||||
- UXCam, CleverTap, Sendbird — Onboarding examples
|
||||
- Orangesoft, Stormotion — Retention strategies
|
||||
- Braze, Pushwoosh — Push notification best practices
|
||||
- ContextSDK — Timing optimization
|
||||
- Google Design (Fabulous) — Behavior change
|
||||
- PMC — Habit formation research
|
||||
- Octalysis Group — Gamification framework
|
||||
|
||||
---
|
||||
|
||||
*Sammanställt 2026-02-15 av Bumblebee 🐝*
|
||||
Reference in New Issue
Block a user