Skip to content

[go_router] Fix Android Cold Start deep link with empty path losing scheme and authority. - #9868

Merged
auto-submit[bot] merged 5 commits into
flutter:mainfrom
nozomemein:fix/go-router-android-coldstart-empty-path
Sep 23, 2025
Merged

[go_router] Fix Android Cold Start deep link with empty path losing scheme and authority.#9868
auto-submit[bot] merged 5 commits into
flutter:mainfrom
nozomemein:fix/go-router-android-coldstart-empty-path

Conversation

@nozomemein

@nozomemeinnozomemein commented Aug 22, 2025

Copy link
Copy Markdown
Contributor

Description

Fixes an issue where deep links with empty paths (e.g., https://example.com) lose their scheme and authority information during Android Cold Start.

This PR fixesflutter/flutter#174249

Detailed reproduction steps, environment information, and code sample are provided in the linked issue.

Problem

On Android Cold Start, if the initial deep link has no path (https://example.com),
_effectiveInitialLocation incorrectly creates a new Uri with only /? instead of preserving scheme and authority.
This results in the router receiving a relative path instead of the full deep link URL.

Solution

Use Uri.replace(path: '/') instead of creating a new Uri, so that the original scheme and authority are preserved.

Pre-Review Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. 23

@google-cla

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@chunhtaichunhtai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@@ -575,10 +575,7 @@ class GoRouter implements RouterConfig<RouteMatchList> {
if (platformDefaultUri.hasEmptyPath) {
// TODO(chunhtai): Clean up this once `RouteInformation.uri` is available

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think this todo is obsolete now, can you remove this todo?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

deleted in the commit below!

@hannah-hyjhannah-hyj 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.

LGTM

@nozomemein

Copy link
Copy Markdown
ContributorAuthor

@hannah-hyj@chunhtai
Appreciate the approval!
I see there is a merge conflict. The contributor guide notes it’s fine to leave conflicts until the end of review, but I’m happy to rebase and resolve them now if that helps move this forward.
Please let me know which you’d prefer, and if there are any remaining blockers before landing.

@justinmc

Copy link
Copy Markdown
Contributor

@nozomemein Please go ahead and fix the merge conflict since this PR is already approved and otherwise ready to land. Thank you!

@nozomemein
nozomemeinforce-pushed the fix/go-router-android-coldstart-empty-path branch 2 times, most recently from da35f7f to cdab8c5CompareSeptember 16, 2025 23:16
@nozomemein

Copy link
Copy Markdown
ContributorAuthor

@justinmc
Thank you! Fixed the confilct!

@nozomemein
nozomemeinforce-pushed the fix/go-router-android-coldstart-empty-path branch from cdab8c5 to 799ec60CompareSeptember 22, 2025 03:22
Comment threadpackages/go_router/CHANGELOG.md Outdated
Comment threadpackages/go_router/pubspec.yaml Outdated
@Piinks

Copy link
Copy Markdown
Contributor

Resolved changelog/pubspec conflicts, should be good to merge! 🤞

@PiinksPiinks added the autosubmit Merge PR when tree becomes green via auto submit App label Sep 23, 2025
@auto-submit
auto-submitBot merged commit a7a5ec8 into flutter:mainSep 23, 2025
80 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Sep 24, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Sep 24, 2025
github-merge-queueBot pushed a commit to flutter/flutter that referenced this pull request Sep 24, 2025
flutter/packages@3413b65...117bf63
2025-09-24 magder@google.com [ci] Add update-release-info command
suggestion when version check fails (flutter/packages#9834)
2025-09-24 engine-flutter-autoroll@skia.org Manual roll Flutter from
9ff2767 to 4a04204 (28 revisions) (flutter/packages#10067)
2025-09-24 stuartmorgan@google.com Remove "All right reserved" from all
files (flutter/packages#10066)
2025-09-24 stuartmorgan@google.com [google_sign_in] Implement
`disconnect` for Android (flutter/packages#9991)
2025-09-24 43054281+camsim99@users.noreply.github.com [camera_android]
Remove references to third party `googlesamples/mlkit` code
(flutter/packages#10056)
2025-09-23 52160996+FMorschel@users.noreply.github.com
[go_router_builder] [in_app_purchase_storekit] Removes redundant
arguments from annotations (flutter/packages#9964)
2025-09-23 121233810+nozomemein@users.noreply.github.com [go_router] Fix
Android Cold Start deep link with empty path losing scheme and
authority. (flutter/packages#9868)
2025-09-23 NearTox@outlook.com [go_router_builder] Proposal: add json
support, custom string encoder/decoder (flutter/packages#8665)
2025-09-23 lukas.mirbt@appshack.se [go_router] Fix ShellRoutes break iOS
swipe back navigation (flutter/packages#9968)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Jaineel-Mamtora pushed a commit to Jaineel-Mamtora/flutter_forked that referenced this pull request Sep 24, 2025
flutter/packages@3413b65...117bf63
2025-09-24 magder@google.com [ci] Add update-release-info command
suggestion when version check fails (flutter/packages#9834)
2025-09-24 engine-flutter-autoroll@skia.org Manual roll Flutter from
9ff2767 to 4a04204 (28 revisions) (flutter/packages#10067)
2025-09-24 stuartmorgan@google.com Remove "All right reserved" from all
files (flutter/packages#10066)
2025-09-24 stuartmorgan@google.com [google_sign_in] Implement
`disconnect` for Android (flutter/packages#9991)
2025-09-24 43054281+camsim99@users.noreply.github.com [camera_android]
Remove references to third party `googlesamples/mlkit` code
(flutter/packages#10056)
2025-09-23 52160996+FMorschel@users.noreply.github.com
[go_router_builder] [in_app_purchase_storekit] Removes redundant
arguments from annotations (flutter/packages#9964)
2025-09-23 121233810+nozomemein@users.noreply.github.com [go_router] Fix
Android Cold Start deep link with empty path losing scheme and
authority. (flutter/packages#9868)
2025-09-23 NearTox@outlook.com [go_router_builder] Proposal: add json
support, custom string encoder/decoder (flutter/packages#8665)
2025-09-23 lukas.mirbt@appshack.se [go_router] Fix ShellRoutes break iOS
swipe back navigation (flutter/packages#9968)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
reidbaker pushed a commit to AbdeMohlbi/flutter that referenced this pull request Dec 10, 2025
flutter/packages@3413b65...117bf63
2025-09-24 magder@google.com [ci] Add update-release-info command
suggestion when version check fails (flutter/packages#9834)
2025-09-24 engine-flutter-autoroll@skia.org Manual roll Flutter from
9ff2767 to 4a04204 (28 revisions) (flutter/packages#10067)
2025-09-24 stuartmorgan@google.com Remove "All right reserved" from all
files (flutter/packages#10066)
2025-09-24 stuartmorgan@google.com [google_sign_in] Implement
`disconnect` for Android (flutter/packages#9991)
2025-09-24 43054281+camsim99@users.noreply.github.com [camera_android]
Remove references to third party `googlesamples/mlkit` code
(flutter/packages#10056)
2025-09-23 52160996+FMorschel@users.noreply.github.com
[go_router_builder] [in_app_purchase_storekit] Removes redundant
arguments from annotations (flutter/packages#9964)
2025-09-23 121233810+nozomemein@users.noreply.github.com [go_router] Fix
Android Cold Start deep link with empty path losing scheme and
authority. (flutter/packages#9868)
2025-09-23 NearTox@outlook.com [go_router_builder] Proposal: add json
support, custom string encoder/decoder (flutter/packages#8665)
2025-09-23 lukas.mirbt@appshack.se [go_router] Fix ShellRoutes break iOS
swipe back navigation (flutter/packages#9968)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
…cheme and authority. (flutter#9868)
### Description
Fixes an issue where deep links with empty paths (e.g., `https://example.com`) lose their scheme and authority information during Android Cold Start.
This PR fixesflutter/flutter#174249
Detailed reproduction steps, environment information, and code sample are provided in the linked issue.
### Problem
On Android Cold Start, if the initial deep link has no path (`https://example.com`), `_effectiveInitialLocation` incorrectly creates a new `Uri` with only `/?` instead of preserving scheme and authority. This results in the router receiving a relative path instead of the full deep link URL.
### Solution
Use `Uri.replace(path: '/')` instead of creating a new `Uri`, so that the original scheme and authority are preserved.
## Pre-Review Checklist
**Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.
[^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmitMerge PR when tree becomes green via auto submit Appp: go_router

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Android Cold Start deep link with empty path loses scheme and authority

5 participants

@nozomemein@justinmc@Piinks@chunhtai@hannah-hyj