Skip to content

2026-06-26

Choose a tag to compare

@rupamkairi rupamkairi released this 25 Jul 06:51
453c87c

Summary

This release includes two critical hotfixes that improve app reliability and user authentication experience. Both fixes address race conditions and error handling issues discovered during testing.

Highlights

  • Cold-start notification deep-linking now reliable — OneSignal listener registered immediately on app mount, eliminating race condition where notification taps failed silently on killed-app restarts.
  • Email verification flow improved — Unverified Auth0 accounts now trigger the correct verification modal instead of generic login failures.

Changes by PR

PR #353 — fix: deeplink cold-start race — register OneSignal listener before auth resolves

Problem: On cold start via notification tap, deep-linking silently failed. The OneSignal click listener was gated behind auth state initialization (~1-3s), but the SDK fired the click event at app startup (t=0). Result: notification taps landed on home screen with no map focus.

Solution:

  • OneSignalContext.tsx — Initialize OneSignal and attach click listener immediately on mount, independent of auth state. Gated init still runs for subscription/sync setup. initialize() is idempotent.
  • Home.tsx — Isolate camera zoom tRPC fetch in its own try/catch so failed zoom doesn't block incident dispatch.
  • Removed debug logging.

Impact: Incident and alert notifications now open reliably on cold start, app maps focus immediately, and bottom sheets load without delay.

PR: #353


PR #354 — fix(login): show email verification modal for Auth0 access_denied / email_not_verified

Problem: Auth0 returns access_denied with email_not_verified for unverified accounts, not unauthorized. The old check only matched unauthorized, so all three failure paths showed generic Login Failed toast, and the verification modal never appeared.

Solution:

  • New apps/nativeapp/app/utils/authErrors.tsisUnverifiedEmailError() helper matches unauthorized, access_denied + email_not_verified, and message fallback.
  • Login.tsx — Added showEmailVerificationModal() helper; wired all three error paths (hook error, catch block, null creds) to use it.
  • Removed transparent from Modal background to prevent iOS safe-area bleed-through.

Impact: Unverified and signup-return users now see the verification modal correctly. No more silent loading spinner or incorrect toast messages.

PR: #354


Ops & QA Notes

  • No schema migrations in these PRs.
  • Deploy native app + server together for best UX.
  • QA steps:
    • Cold-start incident notification tap → app opens → map focuses → bottom sheet loads ✓
    • Cold-start alert notification tap → app opens → map focuses → alert sheet loads ✓
    • Warm-start (app in background) notification tap still works ✓
    • Unverified sign-in → verification modal shown (not toast) ✓
    • Verified sign-in → normal login completes ✓
    • Cancel Auth0 browser → generic failure (toast), not verification modal ✓

Would you like me to refine the format, add more details, or create a GitHub release directly?

Full Changelog: 2026-04-16...2026-06-26