What is appearanceTools in theme.json?

If you look at the theme.json file of a theme like Twenty Twenty-Three, you might have come across the appeareanceTools setting:

{
  "version": 2,
  "settings": {
    "appearanceTools": true
  }
}

Unlike other settings in theme.json, appearenceTools does not enable one interface element. Instead it enables several at once.

What settings does appearanceTools enable?

Writing setting appearanceTools to true is the equivalent of including the following in your theme.json:

{
	"version": 2,
	"settings": {
		"border": {
			"color": true,
			"radius": true,
			"style": true,
			"width": true
		},
		"color": {
			"link": true
		},
		"dimensions": {
			"minHeight": true
		},
		"position": {
			"sticky": true
		},
		"spacing": {
			"blockGap": true,
			"margin": true,
			"padding": true
		},
		"typography": {
			"lineHeight": true
		}
	}
}

So is this just a time saver? Not really.

Because as WordPress continues to add new features, they will be enable by appearenceTools as well.

So really the setting is a way to indicate to WordPress that you want the maximum amount of customization options available.

Should I enable appearance tools?

In the overwhelming majority of cases, the answer is “no”. This is why WordPress set appearanceTools to false by default.

This is especially true if you are an agency or freelancer building themes for clients. Because these type of custom built projects only need a subset of the available design tools.

The same is the case if your are building free or premium themes. You have created a specific design system, and might not want users to customize everything freely.

The default themes in WordPress are different. They want to showcase the capabilities of WordPress, hence why they want all available customization tools to show up.

Can I disable appearance tools in a child theme?

When building websites for clients, one option is to use a free or premium theme as a starter point.

So what if you want to keep the design, but lock down the customization tools?

In this case, just set appearanceTools to false in your child theme’s theme.json file. It will override the settings of the parent theme.

But as you’ll be disabling the settings we listed before, you need to double check whether you still got all the block customization options you want.

Fränk Klein Avatar