I cloned the default Shopify React Router from GitHub - Shopify/shopify-app-template-react-router: A template for building Shopify Apps using React Router version 7 and above (not using Remix)
Deployed it to Vercel and can install the app with no issues with a Test Shopify store that we have.
The problem is we’re stuck at “App Store Review”, more specifically on the “Immediately redirects to app UI after authentication“ check.
The error:
Navigation error on install
During an automated check, your app didn’t successfully redirect to a merchant user interface after authentication. The app responded with an unexpected URL. Learn more about installation requirements.
Expected URL: App homepage after installation
Actual URL: https://admin.shopify.com/store/appstoretest9/app/grant?action=eyJjbGllbnRfaWQiOiJhYzZiNWYxMzJmZDkzNWE0Mzg3MWI3ZGYxNTY4OWIwNyIsImFwcF9pZCI6Mjg4MzU0ODYxMDU3LCJmbG93Ijoic2hvcGlmeV9tYW5hZ2VkX2luc3RhbGwiLCJyZWZlcnJlciI6ImFwcF9zdG9yZSIsImFjdGlvbiI6Imluc3RhbGwiLCJwcmVzZW50YXRpb24iOiJwYWdlIn0%3D
I’ve tried a million experiments on auth.$.tsx but currently I have it like this (as per the official shopify template):
import type { HeadersFunction, LoaderFunctionArgs } from "react-router";
import { authenticate } from "../shopify.server";
import { boundary } from "@shopify/shopify-app-react-router/server";
export const loader = async ({ request }: LoaderFunctionArgs) => {
await authenticate.admin(request);
return null;
};
export const headers: HeadersFunction = (headersArgs) => {
return boundary.headers(headersArgs);
};
My shopify.app.toml is as follows:
# Learn more about configuring your app at
client_id = "ac6b5f132fd935a43871b7df15689b07"
name = "Test Integration App"
application_url = "https://tipple-integration-app.vercel.app"
embedded = true
[build]
automatically_update_urls_on_dev = true
[webhooks]
api_version = "2025-10"
[[webhooks.subscriptions]]
topics = [ "app/scopes_update" ]
uri = "/webhooks/app/scopes_update"
[[webhooks.subscriptions]]
topics = [ "app/uninstalled" ]
uri = "/webhooks/app/uninstalled"
[[webhooks.subscriptions]]
uri = "/webhooks/customers/data_request"
compliance_topics = [ "customers/data_request" ]
[[webhooks.subscriptions]]
uri = "/webhooks/customers/redact"
compliance_topics = [ "customers/redact" ]
[[webhooks.subscriptions]]
uri = "/webhooks/shop/redact"
compliance_topics = [ "shop/redact" ]
[access_scopes]
# Learn more at
scopes = "read_assigned_fulfillment_orders,read_channels,read_companies,read_content,read_custom_fulfillment_services,read_custom_pixels,read_customer_merge,read_customers,read_delivery_customizations,read_discounts,read_discounts_allocator_functions,read_draft_orders,read_fulfillment_constraint_rules,read_fulfillments,read_inventory,read_inventory_transfers,read_locales,read_locations,read_markets,read_markets_home,read_merchant_managed_fulfillment_orders,read_metaobject_definitions,read_metaobjects,read_order_edits,read_order_submission_rules,read_orders,read_product_feeds,read_product_listings,read_products,read_returns,read_shipping,read_third_party_fulfillment_orders,read_validations,write_assigned_fulfillment_orders,write_custom_fulfillment_services,write_custom_pixels,write_customer_merge,write_customers,write_delivery_customizations,write_draft_orders,write_fulfillment_constraint_rules,write_fulfillments,write_inventory,write_inventory_transfers,write_locations,write_markets,write_merchant_managed_fulfillment_orders,write_order_edits,write_order_submission_rules,write_orders,write_products,write_returns,write_shipping,write_third_party_fulfillment_orders,write_validations"
[auth]
redirect_urls = [
"https://tipple-integration-app.vercel.app/auth/callback",
"https://tipple-integration-app.vercel.app/auth/shopify/callback"
]
use_legacy_install_flow = false
[app_preferences]
url = "https://tipple-integration-app.vercel.app"
My shopify.server.ts is the same as shopify-app-template-react-router/app/shopify.server.ts at main · Shopify/shopify-app-template-react-router · GitHub
Can you help? What am I missing?