Sumission blocked because it need App-Bridge but App-Bridge present

Topic summary

A developer encountered a submission block for their Shopify app due to failed automated checks for App Bridge integration and session token authentication, despite having implemented both.

Technical Setup:

  • App Bridge loaded via CDN: <script src="https://unpkg.com/@shopify/app-bridge"></script>
  • Session tokens implemented using AppBridgeUtils.getSessionToken()
  • Code recently moved from inline HTML to separate JS file

Issue Context:

  • Previous submissions succeeded without problems
  • Last Shopify feedback required switching from custom auth to Shopify OAuth (implemented via silent redirect/popup)
  • Automated checks run every 2 hours but continued failing despite developer interaction with the app

Resolution:
Developer resolved the issue by consulting the App Bridge migration guide, though they noted the documentation wasn’t entirely clear. The specific fix wasn’t detailed, but likely involved updating to newer App Bridge implementation requirements.

Summarized with AI on October 28. AI used: claude-sonnet-4-5-20250929.

Hello,

I am currently blocked for my app publishing because of the non detection of the app bridge connector.

I already submited 3 times without issue. The last blocking from shopify was about using our Auth inside the admin isntead of using a shopify url input. What we did by adding some Oauth page as silent redirect and popup.

Since that we got the blocking message:

That translate into:

Integrated App Checks
Automatically checked every 2 hours. Log in and interact with your app on a development store to generate visit data.

Use of the latest App Bridge script loaded from Shopify’s CDN
Use of session tokens for user authentication

I of course navigate my app and waiting 2h but the error persist.

I use

<script src="https://unpkg.com/@shopify/app-bridge"></script>

to load app bridge code and do something like:

const shopify_init = async (shopifyApiKey, verify_token_url, redirectUri) => {
  var AppBridge = window["app-bridge"];
  var AppBridgeUtils = AppBridge.utilities;
  const params = new URLSearchParams(window.location.search);

  const host = getHost(params);

  const shop = getShop(params);

  const app = AppBridge.createApp({ apiKey: shopifyApiKey, host: host });

  if (redirectUri) {
    app.loading(true);
    const url = new URL(decodeURIComponent(redirectUri));
    if (
      [location.hostname, "admin.shopify.com"].includes(url.hostname) ||
      url.hostname.endsWith(".myshopify.com")
    ) {
      window.open(url, "_top");
    } else {
      throw new Error(
        "Les applications ne peuvent utiliser que /exitiframe pour atteindre Shopify ou l'application elle-même."
      );
    }
  }

  try {
    const token = await AppBridgeUtils.getSessionToken(app);
    const response = await fetch(verify_token_url, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "X-CSRFToken": "{{ csrf_token }}",
      },
      body: JSON.stringify({ token: token }),
    });

    const data = await response.json();

    if (!data.success) {
      throw new Error(data.error || "Erreur d'authentification");
    } else {
    }
  } catch (error) {
    console.error("Erreur Shopify :", error);
    throw new Error("Erreur d'authentification");
  }

  return shop;
};

Other difference is that before this code was directly set in the html page and now it is in is specific js file that loaded in the html file.
I really doesn’t understand why it was working before and not anymore.

Thank for the answer. This post was blocked. I figuret out what was wrong here: https://shopify.dev/docs/api/app-bridge/migration-guide
Even if not clear at all