# OpenZeppelin has terrible examples covering Upgradable smart contracts

**URL:** <https://forum.openzeppelin.com/t/openzeppelin-has-terrible-examples-covering-upgradable-smart-contracts/26924>\
**Category:** Upgrades\
**Tags:** erc20, upgrades\
**Created:** [March 28, 2022, 7:04pm UTC](https://forum.openzeppelin.com/t/openzeppelin-has-terrible-examples-covering-upgradable-smart-contracts/26924 "2022-03-28T19:04:36Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![ericglau](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/ericglau/32/15149_2.png) [@ericglau](https://forum.openzeppelin.com/u/ericglau)\
**Post date:** [March 28, 2022, 8:21pm UTC](https://forum.openzeppelin.com/t/openzeppelin-has-terrible-examples-covering-upgradable-smart-contracts/26924/2 "2022-03-28T20:21:33Z")

</div>

Hi @Allennick, thank you for the feedback.

The [OpenZeppelin Upgrades Plugins](https://docs.openzeppelin.com/upgrades-plugins/1.x/) are plugins targeted to the Hardhat and Truffle development environments, both of which provide scripting environments (yes, js scripts) for interacting with contracts. This allows you to develop and test your contracts and program how they are deployed, and testing is particularly important to ensure that your contracts are properly upgradeable.

There are some more detailed step-by-step tutorials on the forum for each of these environments:

- [OpenZeppelin Upgrades: Step by Step Tutorial for Hardhat](https://forum.openzeppelin.com/t/openzeppelin-upgrades-step-by-step-tutorial-for-hardhat/3580/1)
- [OpenZeppelin Upgrades: Step by Step Tutorial for Truffle](https://forum.openzeppelin.com/t/openzeppelin-upgrades-step-by-step-tutorial-for-truffle/3579/1)

The OpenZeppelin Upgrades Plugins for these environments help with deploying and managing upgradeable contracts. As described [here](https://docs.openzeppelin.com/upgrades-plugins/1.x/#how-plugins-work), the plugins handle many of the details for you, which include deploying the implementation contract, admin contract (if needed), and proxy contract. They also validate that your implementation is [upgrade safe](https://docs.openzeppelin.com/upgrades-plugins/1.x/faq#what-does-it-mean-for-a-contract-to-be-upgrade-safe) and [compatible](https://docs.openzeppelin.com/upgrades-plugins/1.x/faq#what-does-it-mean-for-an-implementation-to-be-compatible) with the previous version.

It is also possible to manually deploy or upgrade the contracts separately, but using the Upgrades Plugins is recommended because they help to validate your implementation for upgrade safety.

Let me know if this helps or if you prefer to deploy and manage your contracts in a different way outside of Hardhat and Truffle.

---

_[View the full topic](https://forum.openzeppelin.com/t/openzeppelin-has-terrible-examples-covering-upgradable-smart-contracts/26924)._
