When developing with the new Next-Gen Dev Platform (Dev Dashboard + new shopify app dev
), Shopify Functions (such as Fulfillment Constraint Rules etc..) are not properly registered properly or accessible via the Admin API for registration, even though they appear as registered in the Dev Dashboard and have UUIDs in their extension TOML files.
This leads to errors such as FUNCTION_NOT_FOUND
when trying to register using the Admin API mutations. The same code and configuration work as expected when using the classic Partner Dashboard and CLI flow.
Environment
- Framework: Remix^2.6.1
- TypeScript: ^5.8.3
- Shopify CLI: ^3.80.7
- @shopify/ui-extensions: ~2025.10.0-rc
- Node.js: 22.x
- pnpm: 8.15.4
Steps to reproduce
- Create a new app using the Dev Dashboard and the new
shopify app dev
command. - Add a function extension (e.g Fulfillment Constraint Rule using CLI).
- Deploy or preview the app using the new CLI (
shopify app dev
orshopify app deploy
). - Confirm that the function appears as registered in the Dev Dashboard and has a UUID in its
shopify.extension.toml
. - Attempt to use the function ID in an Admin API mutation (e.g., to create a rule
fulfillmentConstraintRuleCreate
). - Observe that the API returns an error such as
FUNCTION_NOT_FOUND
, even though the function appears present in the dashboard and config files. - Repeat the same steps using the classic Partner Dashboard and CLI flow (without changing any code or configuration).
- Observe that everything works as expected: the function is recognized and the mutation succeeds.
Expected behavior
- Functions registered via the new Dev Dashboard and CLI should be accessible via the Admin API using their UUIDs.
- The behavior should be consistent with the classic Partner Dashboard and CLI flow.
Actual behavior
- Functions appear as registered in the Dev Dashboard and have UUIDs in their TOML files, but the Admin API returns
FUNCTION_NOT_FOUND
or similar errors when using these IDs. - Switching to a new app created from the classic Partner Dashboard and CLI flow (with no code changes) resolves the issue, and everything works as expected.
Additional notes
- This issue is not documented in the Early access and limitations section for the Next-Gen Dev Platform.
- I tested all function UUIDs from the one in
shopify.extension.toml
file to the one in UI dashboard, and env files, all are the same and cause the same issue. - This issue blocks development and testing of any app functionality that relies on Shopify Functions when using the new Dev Platform.
Related issue and possible cause
This functions registration issue directly caused another problem I previously reported, where attempts to save or update rules (for another function of type Order Routing Location Rules) resulted in errors.
Specifically, when attempting to save a custom metafield configuration for an Order Routing Location Rule using a Shopify Admin UI extension, the Admin UI returned an error stating that access to the namespace and key is not allowed, despite the metafield definition being present, correctly configured, and the app having all required scopes.
Possible cause:
When using the new Dev Dashboard and shopify app dev
, functions appear as registered in the dashboard and are assigned UUIDs in their TOML files. However, these functions are not actually registered in Shopify’s backend in a way that the Admin API recognizes. As a result, any API mutation that references the function by its ID (such as creating or updating a rule, or saving a metafield configuration for a rule) fails with errors like FUNCTION_NOT_FOUND
or metafield access errors. This is why switching back to the classic Partner Dashboard and CLI, which properly registers the function for API usage, immediately resolved both the original and related issues without any code changes.
Suggested action
- Please clarify in the documentation if this is a known limitation, or address the registration and accessibility of functions in the new Dev Platform so that it matches the classic flow.
- If this is a bug, please prioritize a fix, as it prevents meaningful development!