Smart contracts are immutable by design. Once they are deployed, they stay in their state permanently. Changing a contract requires a full redeploy. The redeploy also resets all the variables since newly deployed contract is treawted a brand new contract.
New contract means new address, and both address and ABI have to be updated on the frontend side.
[!tip] This can be solved
The immutability ifself is a feature, however some parts of the contract can be deliberately programmed to be changeable (e.g. with the ownable contract).