Use of SVD for controlling the norm of weight matrix

I have been reading up on the idea of parametrizing the weight matrix of an arbitrary layer with SVD to control the norms of the corresponding gradients. My question is if such a method should be created via a custom layer, or the use of hooks to alter the outputs of the weight matrix, and what the advantages/disadvantages of each would be.