block.json
Review the official block.json documentation for an introduction to this file.
The block.json
file simplifies the process of defining and registering a block by using the same block’s definition in JSON format to register the block on both the server and the client (Block Editor).
The Metadata in block.json documentation has a comprehensive guide on all the properties you can use in a block.json
file for a block. Some of the most common options allow you to specify:
- The block’s basic metadata.
- The files that dictate the block’s functionality, appearance, and output.
Basic metadata of a block
Using block.json
properties, you can define how the block will be uniquely identified and what information is displayed in the Block Editor. These properties include:
apiVersion
: Specifies the API version the block uses. Use the latest version unless you have specific requirements.name
: The unique name of the block, including namespace (e.g.,my-plugin/my-custom-block
).title
: The display title for the block, shown in the Inserter.category
: The category under which the block appears in the Inserter. Common categories includetext
,media
,design
,widgets
, andtheme
.icon
: An icon representing the block in the Inserter. This can be a Dashicon slug or a custom SVG icon.description
: A short description of the block, providing more context than the title.keywords
: An array of keywords to help users find the block when searching.textdomain
: The text domain for the block, used for internationalization.
Files for the block’s behavior, output, or style
The block.json
file also allows you to specify the essential files for a block’s functionality:
editorScript
: A JavaScript file or files for use only in the Block Editor.editorStyle
: A CSS file or files for styling within the Block Editor.script
: A JavaScript file or files loaded in both the Block Editor and the front end.style
: A CSS file or files applied in both the Block Editor and the front end.viewScript
: A JavaScript file or files intended solely for the front end.
Schema Validation

The first line of block.json should be a $schema property that defines a schema for the file. This will help your code editor provide validation and autocomplete of valid JSON Properties.
`"$schema": "https://schemas.wp.org/trunk/block.json",`
Setting the $schema to /trunk
version will load the latest. However we are usually several versions behind in WordPress so you can instead set the $schema property to use a /wp/x.x/
specific version in the url:
`"$schema": "https://schemas.wp.org/wp/5.8/block.json",`
