Creating forms for basic crud operations using shadcn components and the t3 stack gives a fantastic developer experience. That being said, creating these forms on the frontend often led me to copy and paste from another form and then modify it. In doing so, there are lots of small edge cases and ways to be lazy, such as not properly implementing loading states for submit buttons.
That is why I created the perfect fully functional starter form, which lets me bring a new api route to the frontend in a matter of seconds. All you need to do is update the trpc procedure and register your specific form fields.