web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / Deep linking doesnt wo...
Power Apps
Suggested Answer

Deep linking doesnt work on mobile device

(1) ShareShare
ReportReport
Posted on by 603
I have a powerapps form where i have implemented deep linking. Approver has to approve the form using the URL which is formed by deep linking. 
 
Deep linking URL works fine when opened in laptop/desktop browser. Issue only occurs when they open the link from their Android/Apple device. The link opens fine without any issues. However if they click on back button from the deep linking URL screen, it doesnt work. Back button can be clicked, but it doesnt navigates to the needed screen. It just stays on the same screen on mobile devices only. Any idea what causes this?
 
Back Button OnSelect
If(
    !IsBlank(Param("ApproverID")),
    Launch(
        "https://apps.powerapps.com/play/e/default-XXXXXXXXXXXXXXXX/a/YYYYYYYYYYYYYYYYYYYYYYYYYYYY",
        {},
        LaunchTarget.Replace
    ),
    Navigate('Approver Dashboard')
)
 
 
 
Categories:
I have the same question (0)
  • Suggested answer
    11manish Profile Picture
    2,345 on at
    This behavior is a known navigation limitation in mobile browsers and the Power Apps mobile runtime when using deep links with Launch() in Microsoft Power Apps.
     
    The issue is not your deep link itself. The problem comes from how Launch() behaves differently on mobile vs desktop.
     
    Try below:
    Detect deep link on App Start
    In App OnStart or StartScreen
    If(
        !IsBlank(Param("ApproverID")),
        Navigate('Approval Screen')
    )
    Back Button Logic
    Replace your code with:
    If(
        !IsBlank(Param("ApproverID")),
        Navigate('Approver Dashboard'),
        Back()
    )
     
  • Suggested answer
    Haque Profile Picture
    3,217 on at
    Hi @Iantaylor2050,
     

    The formula is you have written  that either launch a new app URL (replacing the current session) if the ApproverID parameter exists, or otherwise it navigates to the 'Approver Dashboard' screen . For deep linking scenarios - good and correct .

    However, on mobile devices, the issue where the back button does not navigate as expected often happens because:

     

    1. The Launch function with LaunchTarget.Replace replaces the current app session! Hence, no navigation history to go back to!
    2. The mobile app or browser may not handle the navigation stack the same way as desktop browsers.
    3. The Navigate function works only within the current app session and screen stack.
     
     
    Avoid using Launch with LaunchTarget.Replace for back navigation on mobile
    Instead, consider navigating within the app using Navigate() to a known screen or home screen, so the navigation stack is maintained.
     

    Use conditional navigation with fallback

    If(
        !IsBlank(Param("ApproverID")),
        Navigate('Approver Dashboard', ScreenTransition.None),
        Navigate('Approver Dashboard', ScreenTransition.None)
    )
    
    This way, you avoid launching a new app session and keep navigation internal.
     
    If(
        !IsBlank(Param("ApproverID")),
        Launch(
            "https://apps.powerapps.com/play/e/default-XXXXXXXXXXXXXXXX/a/YYYYYYYYYYYYYYYYYYYYYYYYYYYY",
            {},
            LaunchTarget.Replace
        ),
        Navigate('Approver Dashboard', ScreenTransition.None)
    )
    
     
    Also:
    • Please consider adding a query parameter to indicate the return screen -  if you must launch a new app URL. Then, on app start, detect this parameter and navigate accordingly.
    • Explicit in-app back or close button is always good to deep-linked screen that uses Navigate/Back to control navigation reliably.
    • To confirm navigation behavior, it is always good to Test on actual devices and consider adding logging or visual indicators .

     

     

    I am sure some clues I tried to give. If these clues help to resolve the issue brought you by here, please don't forget to check the box Does this answer your question? At the same time, I am pretty sure you have liked the response!
  • Suggested answer
    DP_Prabh Profile Picture
    361 on at

    The issue occurs because the Back button is using Launch() with LaunchTarget.Replace to reopen the Power Apps URL. On mobile devices, when one canvas app launches another canvas app, the current app instance is replaced instead of added to the navigation history. Because the previous screen is replaced, there is no navigation stack, so pressing Back appears to do nothing.

    Correct approach: Removing LaunchTarget.Replace prevents the navigation stack from being replaced, allowing the button to work correctly.

    If(
        !IsBlank(Param("ApproverID")),
        Launch(
            "https://apps.powerapps.com/play/e/default-XXXXXXXXXXXXXXXX/a/YYYYYYYYYYYYYYYYYYYYYYYYYYYY"
        ),
        Navigate('Approver Dashboard')
    )

    Reference: Use deep links with the Power Apps mobile app - Power Apps | Microsoft Learn

    I hope this works for you!

  • Iantaylor2050 Profile Picture
    603 on at
    Hi @Haque
     
    I tried below code on clicking of back button. This also doesnt work on mobile devices when the link is clicked from the email. May i know where i am going wrong?
     
    Back Button OnSelect
    If(
        !IsBlank(Param("ApprovalItemId"))&&(Host.OSType = "iOS"||Host.OSType = "Android"),
        Launch(
            "ms-apps:///providers/Microsoft.PowerApps/apps/YYYYYappid?tenantId=XXXXXtenantid&environmentId=environmentidFFFFFF&restartApp=true",
            {},
            LaunchTarget.Replace
        ), !IsBlank(Param("ApprovalItemId"))&&IsBlank(Acceleration.X),
        Launch(
            "https://apps.powerapps.com/play/e/environmentidFFFFFF/a/YYYYYappid?q=1",
            {},
            LaunchTarget.Replace
        ),
        Navigate('Approver Dashboard')
    )
     
  • Kalathiya Profile Picture
    2,151 Super User 2026 Season 1 on at
     
    It looks like the issue is caused by using Launch() with LaunchTarget.Replace. On mobile devices, this can replace the navigation history of the app. Because of that, when the user taps the Back button, there is no previous screen to go back to, so it stays on the same screen.

    Instead of reloading the app using Launch(), you can simply use Navigate() to go to the required screen inside the app.

    If(
        !IsBlank(Param("ApproverID")),
        Navigate('Approver Dashboard'),   //Add the appropriate screen where you want the user to navigate when they press the Back button after coming from the query parameter.
        Navigate('Approver Dashboard')
    )

    Or simply:

    Navigate('Approver Dashboard')
    In that case, the Back button will navigate to the same screen regardless of whether the user came from the query parameter or not. This approach will still work.

    Just a suggestion: deep links are usually best used only to open the app and land on a specific screen. After that, it’s better to handle navigation inside the app using Navigate().

     

     

    If this response resolves your issue, please mark it as the Verified Answer so it can help other community members as well.
    ---------------------------------------------------------------------------------
     
    📩 Need more help? Mention @Kalathiya anytime!
    ✔️ Don’t forget to Accept as Solution if this guidance worked for you.
    💛 Your Like motivates me to keep helping!

     

  • Iantaylor2050 Profile Picture
    603 on at
    Hi @Kalathiya, @Haque
     
    The reason i am not using Navigate() is the query string ApproverID remains the same even after the navigation happens. 
     
    Hence when user clicks on any other item from the dashboard, it takes them to the same item. That's why i am using Launch function to launch the app again so that the Query string ApproverID gets reset.
  • Suggested answer
    Haque Profile Picture
    3,217 on at
     
    Hi @Iantaylor2050,
     
     
    Let's improve a bit of your code: adding a fallback navigation to a safe screen if needed:
     
    If(
        !IsBlank(Param("ApprovalItemId")) && (Host.OSType = "iOS" || Host.OSType = "Android"),
        Launch(
            "ms-apps:///providers/Microsoft.PowerApps/apps/YYYYYappid?tenantId=XXXXXtenantid&environmentId=environmentidFFFFFF&restartApp=true",
            {},
            LaunchTarget.Replace
        ),
        !IsBlank(Param("ApprovalItemId")) && IsBlank(Acceleration.X),
        Launch(
            "https://apps.powerapps.com/play/e/environmentidFFFFFF/a/YYYYYappid?q=1",
            {},
            LaunchTarget.Replace
        ),
        Navigate('Approver Dashboard', ScreenTransition.None)
    )
    
     
    I guess you don't see any error in the previous code, right? If you see any error, please post me here.
     
    In my POV some interesting thing is happening - not sure, you may explore PCF.
     
     
     

    I am sure some clues I tried to give. If these clues help to resolve the issue brought you by here, please don't forget to check the box Does this answer your question? At the same time, I am pretty sure you have liked the response!
  • Kalathiya Profile Picture
    2,151 Super User 2026 Season 1 on at
    Hello @Iantaylor2050

    Got it. In this case, you can try the following approach.

    On App Start, store the query string parameter in a global variable and use that variable to load the data in the form instead of referencing the query parameter directly throughout the app.

    Then, when the user navigates back to the Dashboard, reset this variable so the deep link value is cleared. This prevents the app from continuing to use the previous query parameter.

    That way, when the user selects another item from the dashboard, the app will open the selected item normally instead of redirecting them back to the same record that was opened through the deep link.

    If this response resolves your issue, please mark it as the Verified Answer so it can help other community members as well.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Users!

Kudos to our 2025 Community Spotlight Honorees

Congratulations to our 2025 community superstars!

Congratulations to the April Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Power Apps

#1
Vish WR Profile Picture

Vish WR 839

#2
Valantis Profile Picture

Valantis 533

#3
Haque Profile Picture

Haque 412

Last 30 days Overall leaderboard