What's your biggest current challenge? Have your say in Community Polls along the right column.

Re: Theme extension app rejected for "No functionnal user interface"

Theme extension app rejected for "No functionnal user interface"

Guian
Shopify Partner
6 1 1

Hello everyone.

 

We've submitted an app to the store which is intended to provide some new visual elements in the store's theme. They are only theme extension blocks that can be added and configured inside the theme customization section.

On The app home page, we've explained the process to set this up using text only.

 

But our app has been rejected :

 

Your app doesn't have a functional user interface (UI). All apps in the Shopify App Store must be operational through a UI regardless of how the app is launched

I've found those app requirements with US guidelines : ux-guidelines : onboarding-for-app-embed-blocks 

 

I understand I need the user to select the store theme in order to provide specific instructions. 
Seeing :
App blocks are supported only in themes that contain JSON templates, also known as Online Store 2.0 themes
 I understand that, according to the theme, instructions and compatibility will be different.
 
Questions :
1) Is there a sample code to help us with the "select theme" process somewhere ? 
 
2) How are we supposed to know which theme has which version ?
I've found the Theme resource model  it doesn't provide any version information.
 
3) Is it ok to show the message: "This theme doesn't support app blocks and cannot use all our app extensions" ? 
 

 

Reply 1 (1)

Guian
Shopify Partner
6 1 1

The Select theme  can be done using the "Select" polaris component.  With options filled with theme names.

 

Theme list can be listed using the REST API, called from the Remix's 'loader' function :

 

 

export const loader = async ({ request }) => {
  const { admin, session } = await authenticate.admin(request);
  
  const shopData = await admin.rest.resources.Shop.all({ session: session });
  const d= shopData?.data[0].domain;

  const themeData = await admin.rest.resources.Theme.all({ session: session });
  const themes = themeData?.data;

  return json({ domain :d, themes});
};


export default function Index() {
  const shopInfos = useLoaderData();
  const shopDomain = shopInfos.domain;
  const themesArray = shopInfos.themes;

 

 

 

Still cannot detect theme version.  How do we know if  a theme is compatible with JSON app theme extension  ?