How can I improve user experience with server-side redirects in a public embedded app?

Topic summary

A public embedded Shopify app uses server-side redirects (Next.js res.redirect) to send users to /signup or /home based on profile completion, but this causes a brief full-screen load followed by an iFrame reload, resulting in a noticeable flicker.

Context: Embedded apps run inside the Shopify Admin in an iFrame. Server-side redirects trigger top-level navigation, while Shopify App Bridge (client-side) can perform in-frame navigation more smoothly.

Existing approach: Client-side redirects via App Bridge (Redirect.create(app).dispatch(Redirect.Action.APP, path)) avoid the flicker and provide a better user experience.

Open question: Is there a server-side method to achieve the same user-friendly behavior without flicker?

Additional notes: Code snippets (Next.js res.redirect and App Bridge redirect) are central to understanding the issue.

Current status: Multiple participants report the same behavior and ask for a solution. No workaround or definitive answer has been provided; the thread remains unresolved.

Summarized with AI on January 31. AI used: gpt-5.

The public embedded app that I am developing currently has a sub-optimal user experience. The thing is, when the user launches my app, depending on whether the profile setup is complete or not, I redirect the user either to /signup or to /home route. I do this quite simply using the Next.js utility method:

res.redirect(path)

However, what this does is it momentarily loads my app full-screen (i.e. without the visible Shopify Admin UI), and then reloads as an iFrame inside the Shopify Admin. So, essentially it works, but the flickering of the screen is somewhat annoying.

I know that I can use AppBridge utils to gracefull handle such redirects on the client-side:

Redirect.create(app).dispatch(Redirect.Action.APP, path)

Is there a way to handle these redirects similarly user-friendly from the server?

1 Like

I’m also interested in this answer as I also experience the same behaviour.

1 Like

Any solution?