For Shopify legacy app

I have reproduced the issue on the latest CLI version.

Yes, I am on the latest version

I have searched existing posts and this report is not a duplicate.

Yes, this isn’t a duplicate

In which of these areas are you experiencing a problem?

App

Expected behavior

I am trying to create a Shopify legacy app using the Shopify CLI with the Remix template. The app should initialize the Shopify API library correctly and allow usage of AppDistribution.ShopifyAdmin without configuration errors.

Actual behavior

When I use AppDistribution.ShopifyAdmin in the app/shopify.server.js file, I receive the following error:

“Cannot initialize Shopify API Library. Missing values for: adminApiAccessToken. For apiVersion, please specify an explicit API version (e.g., ApiVersion.July25). See About Shopify API versioning for more information.”

Because of this, the app fails to initialize properly.

Reproduction steps

Create a Shopify app using the Shopify CLI with the Remix template.

Configure the app as a legacy/private-style admin integration.

Use AppDistribution.ShopifyAdmin in app/shopify.server.js.

Run the application.

The API initialization error appears regarding adminApiAccessToken and API version.

Verbose output

2026-02-16T10:24:09.612Z: Running command app deploy
2026-02-16T10:24:09.620Z: Running system process in background:
· Command: /home/ascure/.nvm/versions/node/v24.13.1/bin/node /home/ascure/.nvm/versions/node/v24.13.1/bin/shopify notifications list --ignore-errors
· Working directory: /var/www/html/CIN7_to_axima/custom-app

2026-02-16T10:24:09.627Z: Notifications to show: 0
2026-02-16T10:24:09.642Z: Reading cached app information for directory /var/www/html/CIN7_to_axima/custom-app…
2026-02-16T10:24:09.643Z: Reading the content of file at shopify.app.toml…
2026-02-16T10:24:09.646Z: Reading the content of file at shopify.app.toml…
2026-02-16T10:24:09.649Z: Ensuring that the user is authenticated with the App Management API with the following scopes:

2026-02-16T10:24:09.650Z: Getting session store…
2026-02-16T10:24:09.650Z: Getting current session ID…
2026-02-16T10:24:09.651Z: Validating existing session against the scopes:
[
“openid”,
https://api.shopify.com/auth/shop.admin.graphql”,
https://api.shopify.com/auth/shop.admin.themes”,
https://api.shopify.com/auth/partners.collaborator-relationships.readonly”,
https://api.shopify.com/auth/shop.storefront-renderer.devtools”,
https://api.shopify.com/auth/partners.app.cli.access”,
https://api.shopify.com/auth/destinations.readonly”,
https://api.shopify.com/auth/organization.store-management”,
https://api.shopify.com/auth/organization.on-demand-user-access”,
https://api.shopify.com/auth/organization.apps.manage
]
For applications:
{
“appManagementApi”: {
“scopes”:
},
“businessPlatformApi”: {
“scopes”:
}
}

2026-02-16T10:24:09.651Z: - Token validation → It’s expired: false
2026-02-16T10:24:09.654Z: Sending “BusinessPlatform” GraphQL request:
query UserInfo {
currentUserAccount {
uuid
email
organizations(first: 2) {
nodes {
name
__typename
}
__typename
}
__typename
}
}

With request headers:

  • User-Agent: Shopify CLI; v=3.90.1
  • Keep-Alive: timeout=30
  • Sec-CH-UA-PLATFORM: linux
  • Content-Type: application/json

to https://destinations.shopifysvc.com/destinations/api/2020-07/graphql
2026-02-16T10:24:09.663Z: Sending “App Management” GraphQL request:
query ActiveAppReleaseFromApiKey($apiKey: String!) {
app: appByKey(key: $apiKey) {
…AppVersionInfo
__typename
}
}

fragment ReleasedAppModule on AppModule {
uuid
userIdentifier
handle
config
target
specification {
identifier
externalIdentifier
name
managementExperience
}
}

fragment AppVersionInfo on App {
id
key
organizationId
activeRoot {
clientCredentials {
secrets {
key
}
}
grantedShopifyApprovalScopes
}
activeRelease {
id
version {
name
appModules {
…ReleasedAppModule
}
}
}
}

With variables:
{
“apiKey”: “*****”
}

With request headers:

  • User-Agent: Shopify CLI; v=3.90.1
  • Keep-Alive: timeout=30
  • Sec-CH-UA-PLATFORM: linux
  • Content-Type: application/json

to https://app.shopify.com/app_management/unstable/graphql.json
2026-02-16T10:24:10.255Z: Request to https://app.shopify.com/app_management/unstable/graphql.json completed in 592 ms
With response headers:

  • content-type: application/json; charset=utf-8
  • server-timing: processing;dur=165, verdict_flag_enabled;desc=“count=5”;dur=0.818, _y;desc=“65c8f967-fae3-45a4-aa30-c7365dbae1c1”, _s;desc=“cfa27047-e3d0-4d7f-8fc6-2a9874302b94”, cfRequestDuration;dur=510.999918
  • x-request-id: 874ea7c8-19ac-42c2-b62b-83919d48fd31-1771237449

2026-02-16T10:24:10.257Z: Sending “BusinessPlatform” GraphQL request:
query FindOrganizations($organizationId: OrganizationID!) {
currentUserAccount {
organization(id: $organizationId) {
id
name
__typename
}
__typename
}
}

With variables:
{
“organizationId”: “Z2lkOi8vb3JnYW5pemF0aW9uL09yZ2FuaXphdGlvbi8xMjkyNTIyOTc=”
}

With request headers:

  • User-Agent: Shopify CLI; v=3.90.1
  • Keep-Alive: timeout=30
  • Sec-CH-UA-PLATFORM: linux
  • Content-Type: application/json

to https://destinations.shopifysvc.com/destinations/api/2020-07/graphql
2026-02-16T10:24:10.262Z: Sending “App Management” GraphQL request:
query fetchSpecifications($organizationId: ID!) {
specifications(organizationId: $organizationId) {
name
identifier
externalIdentifier
features
uidStrategy {
appModuleLimit
isClientProvided
__typename
}
validationSchema {
jsonSchema
__typename
}
__typename
}
}

With variables:
{
“organizationId”: “gid://shopify/Organization/129252297”
}

With request headers:

  • User-Agent: Shopify CLI; v=3.90.1
  • Keep-Alive: timeout=30
  • Sec-CH-UA-PLATFORM: linux
  • Content-Type: application/json

to https://app.shopify.com/app_management/unstable/graphql.json
2026-02-16T10:24:11.038Z: Request to https://app.shopify.com/app_management/unstable/graphql.json completed in 776 ms
With response headers:

  • content-type: application/json; charset=utf-8
  • server-timing: processing;dur=140, verdict_flag_enabled;desc=“count=7”;dur=0.757, _y;desc=“7e7d0356-343c-41a9-bd80-9a2db7847b37”, _s;desc=“88e4f143-5631-4374-9e1e-375e0f730778”, cfRequestDuration;dur=483.999968
  • x-request-id: ec79f286-4874-4e6b-ae41-edc06678b772-1771237450

2026-02-16T10:24:11.053Z: The following extension specifications were defined locally but not found in the remote specifications: tax_calculation
2026-02-16T10:24:11.053Z: The following extension specifications were found in the remote specifications but not defined locally: admin_app, app_link, app_nav_item, bulk_action, checkout_script_tag, flow_action_definition, flow_trigger_definition, flow_trigger_discovery_webhook, manage_marketplaces, marketing_action, marketing_activity_extension, merchandising_create_publication, merchandising_fulfillment_variant_details, ping_message_callback, pos_link, product_configuration_link, resource_publication_settings, retail_cart_promotion, retail_product_recommendation, subscription_link
2026-02-16T10:24:11.057Z: Reading the content of file at .gitignore…
2026-02-16T10:24:11.060Z: Reading the .env file at .env
2026-02-16T10:24:11.061Z: Reading the content of file at .env…
2026-02-16T10:24:11.418Z: Reading the content of file at package.json…
2026-02-16T10:24:11.424Z: Running system process:
· Command: npm prefix
· Working directory: /var/www/html/CIN7_to_axima/custom-app

2026-02-16T10:24:11.523Z: Obtaining the dependency manager in directory /var/www/html/CIN7_to_axima/custom-app…
2026-02-16T10:24:11.523Z: Reading the content of file at package.json…
2026-02-16T10:24:11.524Z: Reading the content of file at .shopify/project.json…
2026-02-16T10:24:11.526Z: Reading the content of file at shopify.web.toml…
2026-02-16T10:24:11.529Z: Notifications to show: 0
2026-02-16T10:24:11.530Z: Reading cached app information for directory /var/www/html/CIN7_to_axima/custom-app…
2026-02-16T10:24:11.530Z: Storing app information for directory /var/www/html/CIN7_to_axima/custom-app:{
“appId”: “5789ce05bb020110823027c75f6c9714”,
“title”: “custom_app”,
“directory”: “/var/www/html/CIN7_to_axima/custom-app”,
“orgId”: “129252297”
}
2026-02-16T10:24:11.557Z: Sending “App Management” GraphQL request:
query ActiveAppReleaseFromApiKey($apiKey: String!) {
app: appByKey(key: $apiKey) {
…AppVersionInfo
__typename
}
}

fragment ReleasedAppModule on AppModule {
uuid
userIdentifier
handle
config
target
specification {
identifier
externalIdentifier
name
managementExperience
}
}

fragment AppVersionInfo on App {
id
key
organizationId
activeRoot {
clientCredentials {
secrets {
key
}
}
grantedShopifyApprovalScopes
}
activeRelease {
id
version {
name
appModules {
…ReleasedAppModule
}
}
}
}

With variables:
{
“apiKey”: “*****”
}

With request headers:

  • User-Agent: Shopify CLI; v=3.90.1
  • Keep-Alive: timeout=30
  • Sec-CH-UA-PLATFORM: linux
  • Content-Type: application/json

to https://app.shopify.com/app_management/unstable/graphql.json
2026-02-16T10:24:12.368Z: Request to https://app.shopify.com/app_management/unstable/graphql.json completed in 811 ms
With response headers:

  • content-type: application/json; charset=utf-8
  • server-timing: processing;dur=114, verdict_flag_enabled;desc=“count=5”;dur=0.6, _y;desc=“adf3537c-e806-46fb-8ff2-62b8ce27cbd9”, _s;desc=“f4f2a7e4-855c-4e52-91e0-77d625502dc9”, cfRequestDuration;dur=484.999895
  • x-request-id: 25662779-d6db-40ea-afa9-5697e352086b-1771237451

2026-02-16T10:24:12.379Z: Sending “App Management” GraphQL request:
query ActiveAppReleaseFromApiKey($apiKey: String!) {
app: appByKey(key: $apiKey) {
…AppVersionInfo
__typename
}
}

fragment ReleasedAppModule on AppModule {
uuid
userIdentifier
handle
config
target
specification {
identifier
externalIdentifier
name
managementExperience
}
}

fragment AppVersionInfo on App {
id
key
organizationId
activeRoot {
clientCredentials {
secrets {
key
}
}
grantedShopifyApprovalScopes
}
activeRelease {
id
version {
name
appModules {
…ReleasedAppModule
}
}
}
}

With variables:
{
“apiKey”: “*****”
}

With request headers:

  • User-Agent: Shopify CLI; v=3.90.1
  • Keep-Alive: timeout=30
  • Sec-CH-UA-PLATFORM: linux
  • Content-Type: application/json

to https://app.shopify.com/app_management/unstable/graphql.json
2026-02-16T10:24:13.127Z: Request to https://app.shopify.com/app_management/unstable/graphql.json completed in 748 ms
With response headers:

  • content-type: application/json; charset=utf-8
  • server-timing: processing;dur=113, verdict_flag_enabled;desc=“count=5”;dur=0.692, _y;desc=“96f57846-240c-4821-9479-b083de85ea1a”, _s;desc=“d48acfa2-c9e2-4ab0-9524-87cd93186bdb”, cfRequestDuration;dur=440.999985
  • x-request-id: 43471223-6668-436f-830a-febd59a7a20e-1771237452

2026-02-16T10:24:13.129Z: Reading the content of file at shopify.app.toml…
2026-02-16T10:24:13.134Z: Writing some content to file at shopify.app.toml…

Operating system

Ubuntu 24.04

CLI version

3.90.1

Nodejs version

v24.13.1

What language and version are you using in your application?

Remix js

Can you specify what you mean by a “Legacy app”.

Do you mean you’ve created a custom app in a specific merchant’s account? One that still allows you to access the access token for the app from within the Shopify dashboard?