Skip to content

event-app: improve first pwa push notification prompt - #139

Merged
didierkrux merged 5 commits into
mainfrom
improve-pwa-notification-prompt
Sep 30, 2026
Merged

didierkrux merged 5 commits into
mainfrom
improve-pwa-notification-prompt

Conversation

@Scott1UP

Copy link
Copy Markdown
Collaborator

Ask for notifications when users care, not on first launch

The one-time "Turn on notifications" sheet used to open as soon as someone first launched the installed app, before they knew what the app does. It now opens once, when they add their third session to their interests. By then they've shown they care about the schedule, which is exactly what session reminders are for.

What changed

  • New trigger: the sheet opens right after a user adds a session and now has 3 or more. Only the user's own taps count: stars that sync in from another device don't. It still shows only in the installed app, once per device, and only while notifications are off.
  • Turns on session reminders: the sheet's button now turns on session reminders as well as announcements. Everywhere else, reminders stay opt-in. The copy is rewritten to match ("Get reminded before your sessions").
  • Asks everyone once more: the sheet uses a new "already shown" flag, so devices that saw the old launch prompt get this one once, if their notifications are still off.

Testing

The sheet can't open under pnpm dev (it needs the installed app), so test it on a deploy preview.

  • Install from the preview on a phone, sign in, add 3 sessions to your interests: the sheet appears after the third
  • "Turn on notifications" → both switches in Notifications → Settings are on
  • Signed out: the sheet asks you to sign in, then comes back with the enable step
  • A fresh install no longer shows the sheet at launch

Tip: "Reset nudges" in EF internal tools (My Devcon) clears the "already shown" flag.

…nstead of first launch, and turns session reminders on
@Scott1UP
Scott1UP requested a review from didierkrux September 29, 2026 10:26
@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

netlify Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for devcon-event-app ready!

Name Link
🔨 Latest commit 5d34cfe
🔍 Latest deploy log https://app.netlify.com/projects/devcon-event-app/deploys/6abd52888c87ac000848044a
😎 Deploy Preview https://deploy-preview-139--devcon-event-app.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

…ridgeLink for sign-in link generation, improving iOS Safari handoff and session persistence; update related logic for QR code generation and link handling
…n components for clarity; enhance onboarding messaging in PushOnboardingSheet to improve user experience

@didierkrux didierkrux left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did 2 commits on this branch since your review request:

  • Safari hop on iOS non-Safari browsers (pre-existing bug, not from this PR): the "Open in Safari" tap minted the bridge token before navigating, so on a cold function the gesture expired and iOS blocked the handoff. The link is now minted when the install modal opens (shared mintBridgeLink, also used by the desktop QR) and the tap navigates synchronously.
  • Sign-in copy: the sheet, the sign-in page and the Home banner said notifications need the ticket email. They now lead with the ticket email and say any email works for Interests and notifications.

Four suggestions (see what makes sense to implement):

  1. Also ask when push is on but reminders are off. Anyone who tapped the Home "Turn on notifications" card (announcements only) never sees the reminders pitch. Open the sheet on the third star in that state too, with the primary calling setPref("reminders", true) (a PATCH, no permission prompt).
  2. Don't open mid-burst. Wait until a few seconds pass with no star tap before sliding up, so a fourth tap doesn't land on the scrim or "Not now" and burn the one ask.
  3. "Not now" shouldn't mean never. After it, the user is never asked again. Rather than another modal, a quiet standing row in the My Interests view: one line, "Get a nudge 10 minutes before each of these", linking to the notification settings, shown while reminders are off. It sits where the value is obvious, doesn't interrupt, and never expires, so "Not now" becomes "not yet".
  4. Done title: "Notifications are on" rather than "Reminders are on", since announcements were switched on as well.

…, waits for star taps to pause, and titles Done "Notifications are on"; My Interests gains a standing "Get a nudge 10 mins before each interest" row into the settings modal; remove the unused intro-splash signal
@Scott1UP

Copy link
Copy Markdown
Collaborator Author

Ask for notifications when users care, not on first launch

The one-time notifications sheet no longer opens at first launch. It opens once, in the installed app, when someone adds their third session to their interests.

What changed

  • Trigger: 3+ interested sessions, opened only after star taps pause for 3s, so a quick burst of stars can't hit the sheet by accident.
  • Reminders: turns on session reminders as well as announcements. If announcements are already on (Home card), it offers "Turn on reminders" with no permission prompt.
  • "Not now" isn't never: My Interests shows a quiet "Get a nudge 10 mins before each interest" link to Notification settings while reminders are off.
  • Copy: the sheet asks "Get reminded before your sessions" and confirms with "Notifications are on".
  • Sign-in handoff: "Open in Safari" and the desktop QR share one sign-in link made in advance (mintBridgeLink), so Safari opens signed in.
  • Cleanup: removed the unused intro-splash signal.

@Scott1UP
Scott1UP requested a review from didierkrux September 29, 2026 22:12
@didierkrux

didierkrux commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Thanks for the changes Scott.

I merged main to the branch, resolved all the conflicts and checked for any regression.
Merging the PR now.

@didierkrux
didierkrux merged commit 3fc1cfb into main Sep 30, 2026
31 checks passed
@Scott1UP

Copy link
Copy Markdown
Collaborator Author

No problem Didier. Thanks for resolving conflicts 🙏🏼

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants