---
title: >-
  Public access for app owned metafields and metaobjects is now disabled -
  Shopify developer changelog
description: >-
  Shopify’s developer changelog documents all changes to Shopify’s platform.
  Find the latest news and learn about new platform opportunities.
source_url:
  html: >-
    https://shopify.dev/changelog/posts/public-access-for-app-owned-metafields-and-metaobjects-is-now-disabled
  md: >-
    https://shopify.dev/changelog/posts/public-access-for-app-owned-metafields-and-metaobjects-is-now-disabled.md
metadata:
  effectiveApiVersion: ''
  affectedApi:
    - displayName: Admin GraphQL API
      handle: admin-graphql
  primaryTag:
    displayName: API
    handle: api
  secondaryTag:
    displayName: Deprecation announcement
    handle: deprecation-announcement
  indicatesActionRequired: true
  createdAt: '2025-05-14T18:04:36-04:00'
  postedAt: '2025-05-19T13:00:00-04:00'
  updatedAt: '2025-05-15T15:43:53-04:00'
  effectiveAt: '2025-05-16T10:00:00-04:00'
---

May 19, 2025

# Public access for app owned metafields and metaobjects is now disabled

DateMay 19, 2025

Flags[Deprecation announcement](https://shopify.dev/changelog?filter=deprecation-announcement)[Action required](https://shopify.dev/changelog?action_required=true)

SurfacesAPI

Affected APIs[Admin GraphQL API](https://shopify.dev/changelog?api_type=admin-graphql)

In line with last year's [announcement](https://shopify.dev/changelog/simplifying-how-metafield-and-metaobject-permissions-work) regarding metafields access simplification, we are now implementing the removal of `PUBLIC` access for app-owned metafields and metaobjects.

The following updates have been applied across all API versions:

1. Metafields and metaobjects previously set to `PUBLIC_READ_WRITE` are now set to `MERCHANT_READ_WRITE`.
2. Metafields and metaobjects previously set to `PUBLIC_READ` are now set to `MERCHANT_READ`.

**Required Action**: If your app needs metafields or metaobjects to be accessible by other apps, you must migrate them to a custom namespace rather than using your app's reserved namespace. A custom namespace allows for broader access options, while a reserved namespace is specific to your app.
