Best Practice Storage Implementation

To clarify, OpenZeppelin Contracts v5 uses ERC-7201: Namespaced Storage Layout.

In general, we recommend also using namespaced storage in your own implementation contracts, but it is not a requirement. See my comments in Must a child contract use the namespaced storage pattern - #2 by ericglau and Do I need to use storage gaps when importing upgradeable contracts? - #4 by ericglau