---
description: How to define a destroy hook.
title: Destroy hook
image: images/blockly_banner.png
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# Destroy hook

Blocks have a `destroy` hook, which is called when they are deleted from the
workspace. This can be used to destroy any backing data models or external
resources associated with the block that are no longer needed.

<Tabs groupId="group-1">
  <TabItem value="json" label="JSON" default>
  ```js
  {
    // ...,
    "extensions":["destroy"],
  }
  
  Blockly.Extensions.registerMixin('destroy', {
    destroy: function() {
      this.myResource.dispose();
    }
  });
  ```
  
  In JSON, define a `destroy` hook with a
  [mixin](/guides/create-custom-blocks/define/extensions#mixins).
  </TabItem>
  <TabItem value="javascript" label="JavaScript">
  ```js
  Blockly.Blocks['block_type'] = {
    destroy: function() {
      this.myResource.dispose();
    }
  }
  ```
  </TabItem>
</Tabs>
The `destroy` method is called after the block's parent has been disposed, but
before any of its children or fields have been disposed.
