> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metabind.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Package

> Immutable component snapshots with dependencies

The `Package` type represents an immutable snapshot of components at a specific version. Packages follow semantic versioning and include all dependencies needed to render content.

## Type Definition

```graphql theme={null}
type Package {
  id: ID!
  projectId: ID!
  version: String!
  components: [Component!]!
  assets: [Asset!]!
  dependencies: [PackageDependency!]!
  compiled: String!
  resolved: ResolvedPackage!
  resolvedRef: ResolvedPackageRef!
  createdAt: DateTime!
}
```

## Fields

| Field          | Type                   | Description                                   |
| -------------- | ---------------------- | --------------------------------------------- |
| `id`           | ID!                    | Unique identifier (changes with each version) |
| `projectId`    | ID!                    | Parent project ID                             |
| `version`      | String!                | Semantic version (e.g., "1.0.0")              |
| `components`   | \[Component!]!         | Components included in this package           |
| `assets`       | \[Asset!]!             | Assets bundled with the package               |
| `dependencies` | \[PackageDependency!]! | External package dependencies                 |
| `compiled`     | String!                | This package's compiled components (JSON)     |
| `resolved`     | ResolvedPackage!       | Full package data with all dependencies       |
| `resolvedRef`  | ResolvedPackageRef!    | Package IDs for normalized caching            |
| `createdAt`    | DateTime!              | Publication timestamp                         |

## Field Details

### version

Packages use semantic versioning (semver):

* **Major** (1.0.0 → 2.0.0): Breaking changes
* **Minor** (1.0.0 → 1.1.0): New features, backward compatible
* **Patch** (1.0.0 → 1.0.1): Bug fixes

### compiled

JSON object mapping component names to their compiled code:

```json theme={null}
{
  "ProductCard": "const body = (props) => { ... }",
  "ArticleLayout": "const body = (props) => { ... }"
}
```

### resolved vs resolvedRef

Choose based on your use case:

* **resolved**: Full package data inline (larger payload, simpler client)
* **resolvedRef**: IDs only for normalized caching (smaller payload, requires additional queries)

See [Resolved Package](/graphql/types/resolved-package) for details.

## PackageDependency

```graphql theme={null}
type PackageDependency {
  projectId: ID!
  version: String!
}
```

| Field       | Type    | Description          |
| ----------- | ------- | -------------------- |
| `projectId` | ID!     | Dependent project ID |
| `version`   | String! | Required version     |

## Example Query

### Full Package Data

```graphql theme={null}
query GetPackage($version: String!) {
  package(version: $version) {
    id
    version
    components {
      id
      name
      compiled
    }
    assets {
      id
      name
      url
    }
    dependencies {
      projectId
      version
    }
    resolved {
      package {
        version
        components
        assets
      }
      dependencies {
        version
        components
        assets
      }
    }
  }
}
```

### With Caching References

```graphql theme={null}
query GetPackageWithCaching($version: String!) {
  package(version: $version) {
    id
    version
    resolvedRef {
      package
      dependencies
    }
  }
}
```

Response:

```json theme={null}
{
  "data": {
    "package": {
      "id": "pkg123",
      "version": "2.0.0",
      "resolvedRef": {
        "package": "abc123def456...",
        "dependencies": ["xyz789ghi012..."]
      }
    }
  }
}
```

## Related Types

* [Component](/graphql/types/component) - Components bundled in packages
* [Resolved Package](/graphql/types/resolved-package) - Package resolution types
* [Content](/graphql/types/content) - Content references packages via version
