BowlerKitBowlerKit
Features

Deep Links

10/11/2026

Configure and test the Flutter link host used by verification and password-reset flows.

Current contract

The Flutter template registers the flonlate scheme and the link host. resolveAccountDeepLink allowlists the destination before AutoRoute navigates:

flonlate://link?destination=reset-password&token=...&email=...

Supported destinations:

  • destination=reset-password with exactly one non-empty token and valid email.
  • destination=email-verified with no action parameters.

Unknown destinations, duplicate values, malformed emails, or unexpected query keys fall back to the normal authenticated/onboarding destination. Guest mode ignores Account deep links.

Password reset

The backend should generate /link links, not direct arbitrary navigation:

flonlate://link?destination=reset-password&token=RESET_TOKEN&email=user%40example.com

Flutter validates the parameters and then routes to AutoRoute's /reset-password page, which submits the token/email to Laravel.

Email verification

flonlate://link?destination=email-verified

After browser verification, the Account bootstrap refreshes the authenticated user and returns to the normal app destination.

Native configuration

The scheme/host is configured in:

  • lib/constants/api_endpoints.dart (deepLinkScheme = 'flonlate').
  • android/app/src/main/AndroidManifest.xml (scheme=flonlate, host=link).
  • ios/Runner/Info.plist URL types.

The current identifiers are com.soewidiputra.flonlate.mobile. If you rename them, update Firebase, Apple/Google credentials, Android/iOS URL registration, and backend-generated links together.

Testing

Use a native debug/release-like build:

adb shell am start -a android.intent.action.VIEW \
  -d 'flonlate://link?destination=reset-password&token=TEST_TOKEN&email=user%40example.com' \
  com.soewidiputra.flonlate.mobile

On iOS, use Xcode or simctl openurl with the same scheme. Validate the malformed/unknown-destination fallback as well as the happy path.

Relevant files

  • lib/bootstrap/account_bootstrap.dart
  • lib/constants/api_endpoints.dart
  • lib/main.dart
  • lib/app_router.dart
  • android/app/src/main/AndroidManifest.xml
  • ios/Runner/Info.plist