[Development Guides Home](/guides)

# Guide to the Feature Showcase

## Introduction

Warning:
cPanel & WHM displays the *Feature Showcase* interface after you upgrade to a new version that includes new features. *Feature Showcase* items can overwrite your settings.

You can add custom items to WHM's *Feature Showcase* interface. The *Feature Showcase* interface alerts WHM users to newly-released features. It appears when `root`-enabled users log in the first time after upgrading or installing cPanel & WHM.

The *Feature Showcase* interface divides items into three sections:

1. Showcased Items — Big or very important changes.
2. Recommended Items — Items that WebPros International, LLC recommends. cPanel & WHM usually enables these items, but not always.
3. New Items — Everything else.


Whether and how items appear depends on which items the user has previously seen. If no new items exist, the *Feature Showcase* interface does not appear.

## Showcase item types

Important:
* For more information about the `drivers.json` files for each item type, read our [The drivers.json File](/guides/guide-to-the-feature-showcase/guide-to-the-feature-showcase-the-drivers-json-file) documentation.
* Activation and Configuration items **must** include driver code.


The *Feature Showcase* interface supports these types of items:

### Announcements

These items announce new features. They **don't** allow the user to enable it, disable it, or configure a setting.

Use these important parameter settings:


```
"readonly":1
"auto_enable":0
```

**Example**


```json
{
    "spec_version" : 2,
    "meta" : {
        "auto_enable" : 0,
        "meta_version" : 2,
        "content" : {
            "vendor" : "WebPros International, LLC",
            "url"  : "https://www.cpanel.net/",
            "name" : {
                "short"  : "Example Driver",
                "long"   : "Example Driver for Developer Usage"
            },  
            "readonly" : 1,
            "first_appears_in" : "74",
            "last_appears_in" : "78",
            "abstract" : "An example driver for developers to emulate.",
            "version" : 1,
            "locale_abstract_strings" : [
                "locale.maketext('An example driver for developers to emulate.')",
                "locale.maketext('Comes packed with meta examples that use cPanel’s localization system: [output,url,_1,Cpanel::Locale,target,_blank].','https://go.cpanel.net/localedocs')",
                "locale.maketext('[asis,cPanel®] does not translate strings. You will need to provide your own translations.')"
            ]     
        },  
        "showcase" : {
            "is_recommended" : 0,
            "is_spotlight_feature" : 0
        }
    }     
}
```

### Background

These items **don't** appear to users. Instead, they automatically enable the feature for new installations.

Use these important parameter settings:


```
"auto_enable":1
"showcase": -1
"enable": (something)
```

**Example**


```json
{
    "spec_version" : 2,
    "meta" : {
        "auto_enable" : 1,
        "meta_version" : 2,
        "content" : {
            "vendor" : "WebPros International, LLC",
            "url" : "https://www.cpanel.net/",
            "name" : {
                "short" : "Example Driver",
                "long" : "Example Driver for Developer Usage"
            },  
            "readonly" : 0,
            "first_appears_in" : "74",
            "last_appears_in" : "78",
            "abstract" : "An example driver for developers to emulate.",
            "version" : 1,
            "locale_abstract_strings" : [
                "locale.maketext('An example driver for developers to emulate.')",
                "locale.maketext('Comes packed with meta examples that use cPanel’s localization system: [output,url,_1,Cpanel::Locale,target,_blank].','https://go.cpanel.net/localedocs')",
                "locale.maketext('[asis,cPanel®] does not translate strings. You will need to provide your own translations.')"
             ]   
        },
        "showcase" : -1
    },
    "enable" : {
        "module" : "Whostmgr::TweakSettings",
        "method" : "set_value",
        "params" : [
            "Main",
            "userdirprotect",
            1
        ]
    }  
}
```

### Activation

These items announce a new feature, which the user can then enable or disable. They **don't** allow the user to configure a setting.

Use these important parameter settings:


```
"readonly":0
"auto_enable":0
"enable": (something)
"disable": (something)
```

**Example**


```json
{
    "spec_version" : 2,
    "meta" : {
        "auto_enable" : 1,
        "meta_version" : 2,
        "content" : {
            "vendor" : "WebPros International, LLC",
            "url" : "https://www.cpanel.net/",
            "name" : {
                "short" : "Example Driver",
                "long" : "Example Driver for Developer Usage"
            },  
            "readonly" : 0,
            "first_appears_in" : "74",
            "last_appears_in" : "78",
            "abstract" : "An example driver for developers to emulate.",
            "version" : 1,
            "locale_abstract_strings" : [
                "locale.maketext('An example driver for developers to emulate.')",
                "locale.maketext('Comes packed with meta examples that use cPanel’s localization system: [output,url,_1,Cpanel::Locale,target,_blank].','https://go.cpanel.net/localedocs')",
                "locale.maketext('[asis,cPanel®] does not translate strings. You will need to provide your own translations.')"
            ]  
        },
        "showcase" : {
            "is_recommended" : 0,
            "is_spotlight_feature" : 0        
        }
    },
    "enable" : {
        "module" : "Whostmgr::TweakSettings",
        "method" : "set_value",
        "params" : [
            "Main",
            "userdirprotect",
            1
        ]
    },
    "disable" : {
        "module" : "Whostmgr::TweakSettings",
        "method" : "set_value",
        "params" : [
            "Main",
            "userdirprotect",
            0
        ]
     },
    "set_default" : {
        "static" : 1
    }
}
```

### Configuration

These items announce a new feature and allow the user to configure a setting.

Use these important parameter settings:


```
"readonly":0
"auto_enable":0
"handle_showcase_submission": (something)
```

**Example**


```json
{
    "spec_version" : 2,
    "meta" : {
        "auto_enable" : 1,
        "meta_version" : 2,
        "content" : {
            "vendor" : "WebPros International, LLC",
            "url" : "https://www.cpanel.net/",
            "name" : {
                "short" : "Example Driver",
                "long" : "Example Driver for Developer Usage"
            },  
            "readonly" : 0,
            "first_appears_in" : "74",
            "last_appears_in" : "78",
            "abstract" : "An example driver for developers to emulate.",
            "version"  : 1,
            "locale_abstract_strings" : [
                "locale.maketext('An example driver for developers to emulate.')",
                "locale.maketext('Comes packed with meta examples that use cPanel’s localization system: [output,url,_1,Cpanel::Locale,target,_blank].','https://go.cpanel.net/localedocs')",
                "locale.maketext('[asis,cPanel®] does not translate strings. You will need to provide your own translations.')"
            ]     
        },
        "showcase" : {
            "is_recommended" : 0,
            "is_spotlight_feature" : 0
        }
    },
    "handle_showcase_submission" : {
        "module" : "Whostmgr::API::1::PublicContact",
        "method" : "set_public_contact",
        "params" : [
            {
                "name" : "FORM(public_contact_name)",
                "url"  : "FORM(public_contact_url)"
             }
        ]
    }      
}
```

## Additional documentation

* [The drivers.json File](/guides/guide-to-the-feature-showcase/guide-to-the-feature-showcase-the-drivers-json-file)
* [Troubleshooting](/guides/guide-to-the-feature-showcase/guide-to-the-feature-showcase-troubleshooting)