---
page_title: 'Plugin Development - Framework: Blocks'
description: >-
  Learn the block types in the provider development framework. Blocks
  are containers for nested attributes and blocks in a resource, data source, or
  provider schema.
---

# Blocks

<Tip>

Use [nested attribute types](/terraform/plugin/framework/handling-data/attributes#nested-attribute-types) instead of block types for new schema implementations. Block support is mainly for migrating legacy SDK-based providers.

</Tip>

Blocks are containers for other attributes and blocks in resource, data source, or provider [schemas](/terraform/plugin/framework/handling-data/schemas). Every block has an associated [value type](/terraform/plugin/framework/handling-data/types), which describes the kind of data the block holds. Blocks also can describe value plan modifiers (resources only) and value validators in addition to those defined by the value type.

## Available Block Types

| Block Type | Use Case |
|----------------|----------|
| [List Nested](/terraform/plugin/framework/handling-data/blocks/list-nested) | Ordered collection of structures of attributes/blocks |
| [Set Nested](/terraform/plugin/framework/handling-data/blocks/set-nested) | Unordered, unique collection of structures of attributes/blocks |
| [Single Nested](/terraform/plugin/framework/handling-data/blocks/single-nested) | Single structure of attributes/blocks |
