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

# Upgrading to CDKTN Version 0.23

> Upgrade your CDK Terrain (cdktn) project to v0.23. This release drops support for end-of-life language runtimes — Go 1.18–1.24, Python 3.8, and TypeScript below 4.5 — and warns that Node.js 20.x support is ending.

0.23 contains **breaking changes** to the language runtimes CDK Terrain (`cdktn`) supports. The
framework and CLI APIs are unchanged — you only need to make sure your toolchain is running a
supported runtime version before upgrading.

<Note>If your project already uses recent runtime versions, upgrading is as simple as bumping `cdktn` and `cdktn-cli` (and any `@cdktn/provider-*` packages) to `^0.23.3`.</Note>

## Breaking Changes

### Dropped runtime support

| Language       | No longer supported | Minimum supported | Recommended |
| -------------- | ------------------- | ----------------- | ----------- |
| **Go**         | 1.18 – 1.24         | **1.25**          | 1.25+       |
| **Python**     | 3.8                 | **3.9**           | 3.9+        |
| **TypeScript** | \< 4.5              | **4.5**           | Latest 5.x  |

* **Go**: update your `go.mod` toolchain directive and CI to Go 1.25 or higher.
* **Python**: update your environment / `pyproject.toml` / `requirements.txt` to Python 3.9 or higher.
* **TypeScript**: provider generation now uses features from TypeScript 4.5. There is no official
  minimum TypeScript version at this time, but using the latest 5.x release is recommended.

<Warning>These are hard requirements for v0.23. Building or synthesizing on an unsupported runtime is no longer tested or supported.</Warning>

## Upcoming Breaking Changes

<Note>**Node.js 20.x is end-of-life.** Node.js 22.x will become the minimum supported version in an upcoming release. Plan to move your local and CI environments to Node 22.x soon.</Note>

## Upgrade Process

<Tabs>
  <Tab title="TypeScript/JavaScript">
    **1. Ensure TypeScript 4.5+ (latest 5.x recommended):**

    ```bash theme={null}
    npm install --save-dev typescript@latest
    ```

    **2. Bump cdktn packages in package.json:**

    ```diff theme={null}
    {
      "dependencies": {
    -   "cdktn": "^0.22.0",
    +   "cdktn": "^0.23.3",
        "@cdktn/provider-aws": "^20.0.0"
      },
      "devDependencies": {
    -   "cdktn-cli": "^0.22.0"
    +   "cdktn-cli": "^0.23.3"
      }
    }
    ```

    **3. Reinstall and verify:**

    ```bash theme={null}
    npm install
    npx tsc --noEmit
    ```
  </Tab>

  <Tab title="Python">
    **1. Ensure Python 3.9+:**

    ```bash theme={null}
    python --version   # must be >= 3.9
    ```

    **2. Bump cdktn in requirements.txt or Pipfile:**

    ```diff theme={null}
    - cdktn>=0.22.0
    + cdktn>=0.23.3
    ```

    **3. Reinstall:**

    ```bash theme={null}
    pip install -r requirements.txt --force-reinstall
    ```
  </Tab>

  <Tab title="Go">
    **1. Update your Go toolchain to 1.25+ in go.mod:**

    ```diff theme={null}
    - go 1.23
    + go 1.25
    ```

    **2. Bump the cdktn module:**

    ```diff theme={null}
    require (
    -   github.com/open-constructs/cdk-terrain-go/cdktn v0.22.0
    +   github.com/open-constructs/cdk-terrain-go/cdktn v0.23.3
    )
    ```

    **3. Tidy modules:**

    ```bash theme={null}
    go mod tidy
    ```
  </Tab>

  <Tab title="Java">
    Bump the dependency to `0.23.3` and rebuild. No JDK change is required by this release.

    ```diff theme={null}
    dependencies {
    -   implementation "io.cdktn:cdktn:0.22.0"
    +   implementation "io.cdktn:cdktn:0.23.3"
    }
    ```

    ```bash theme={null}
    ./gradlew build
    ```
  </Tab>

  <Tab title="C#">
    Bump the package reference to `0.23.3` and restore. No .NET SDK change is required by this release.

    ```diff theme={null}
    <ItemGroup>
    -   <PackageReference Include="Io.Cdktn" Version="0.22.0" />
    +   <PackageReference Include="Io.Cdktn" Version="0.23.3" />
    </ItemGroup>
    ```

    ```bash theme={null}
    dotnet restore
    ```
  </Tab>
</Tabs>

## What Stays the Same

The framework and CLI surface is unchanged from v0.22. Configuration (`cdktf.json`), the output
directory (`cdktf.out/`), `CDKTF_*` environment variables, the `~/.cdktf` home directory, Terraform
provider sources, and your Terraform state are all unaffected. See the
[v0.22 migration guide](/release/upgrade-guide-v0-22) if you are still migrating from `cdktf`.

## Verification

After upgrading, confirm your project still synthesizes:

```bash theme={null}
# Synthesize
cdktn synth

# Verify output
ls cdktf.out/stacks/*/cdk.tf.json
```

## Getting Help

* Ask a question in [the cdk.dev Slack](https://cdk.dev/)
* GitHub Issues: [https://github.com/open-constructs/cdk-terrain/issues](https://github.com/open-constructs/cdk-terrain/issues)
