---
page_title: Upgrading to Terraform v1.0
description: Upgrading to Terraform v1.0
---

# Upgrading to Terraform v1.0

Terraform v1.0 is an unusual release in that its primary focus is on stability,
and it represents the culmination of several years of work in previous major
releases to make sure that the Terraform language and internal architecture
will be a suitable foundation for forthcoming additions that will remain
backward-compatible.

Terraform v1.0.0 intentionally has no significant changes compared to Terraform
v0.15.5. You can consider the v1.0 series as a direct continuation of the v0.15
series.

There are no special steps to take if you are upgrading from the previous
major release, Terraform v0.15.

You can also upgrade directly from Terraform v0.14 if you wish, although please
still consider the notes from [the Terraform v0.15 upgrade guide](/language/upgrade-guides/0-15).
If you are affected by the notes in that upgrade guide, you will still need to
take the steps described there but you can do so as part of upgrading to v1.0,
without any need for an intermediate step of running Terraform v0.15.

If you are currently using Terraform v0.13 or earlier then we strongly
recommend upgrading one major version at a time until you reach Terraform v0.14,
following the upgrade guides of each of those versions, because those earlier
versions include mechanisms to automatically detect necessary changes to your
configuration, and in some cases also automatically edit your configuration
to include those changes. Once you reach Terraform v0.14 you can then skip
directly from there to Terraform v1.0.

The following table summarizes the above recommendations. In each case, we
recommend using the latest patch release from each major version in order to
complete your upgrade.

| Current Version  | Recommendation                                                                                                                                                                                                                                                                                              |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| v0.10 or earlier | Refer to the upgrade guides for these historical versions until you have upgraded to the latest v0.11 release, then refer to the following item.                                                                                                                                                            |
| v0.11            | Use [the `terraform 0.12checklist` command](/language/upgrade-guides/0-12#pre-upgrade-checklist) to detect any situations that must be addressed before upgrading to v0.12, resolve them, and then upgrade to the latest v0.12 release and follow [the v0.12 Upgrade Guide](/language/upgrade-guides/0-12). |
| v0.12            | Upgrade to the latest Terraform v0.13 release and then follow [the v0.13 upgrade guide](/language/upgrade-guides/0-13) to upgrade your configuration and state for explicit provider requirements.                                                                                                          |
| v0.13            | Upgrade to the latest Terraform v0.14 release and attempt a normal Terraform run. If you encounter any new errors, refer to [the v0.14 upgrade guide](/language/upgrade-guides/0-14) for resolution steps.                                                                                                  |
| v0.14            | Upgrade directly to the latest Terraform v1.0 release and attempt a normal Terraform run. If you encounter any new errors, refer to [the v0.15 upgrade guide](/language/upgrade-guides/0-15) for resolution steps.                                                                                          |
| v0.15            | Upgrade directly to the latest Terraform v1.0 release and attempt a normal Terraform run. Terraform v1.0 is a continuation of the v0.15 series, and so v1.0.0 and later are directly backward-compatible with Terraform v0.15.5.                                                                            |

-> If you run into any problems during upgrading, please feel free to start a
topic in [the Terraform community forum](https://discuss.hashicorp.com/c/terraform-core),
describing the problem you've encountered in enough detail that other readers
may be able to reproduce it and offer advice.

## Remote State Compatibility

In a more complex system you might have multiple separate Terraform
configurations that collaborate together using
[the `terraform_remote_state` data source](/language/state/remote-state-data).

In that case, it's typical for some configurations to be applied with a new
version before others do, causing differences in the state snapshot format
between your different configurations.

If you are upgrading from Terraform v0.14 or Terraform v0.15 to Terraform v1.0
then you can upgrade your configurations in any order, because all three of
these versions have intercompatible state snapshot formats.

Upgrading from v0.13 or earlier in a multi-configuration environment may
require more explicit planning to ensure state snapshot compatibility. Please
refer to the previous release upgrade guides for more information, and upgrade
only one major version at a time until you reach Terraform v0.14.
