Should I use Frames or shapes such as rectangles, to create button and modal components in Figma?
Use Frames. I find rectangles and other shapes should really only be used in vector work or cases where you do not want content to exist inside the shape. In the case of a button, it will have content, such as an icon or label, and the same goes with modals. Frames are more appropriate for this case.
If you are coming from something like Sketch as I did, we’re used to the idea of creating a rectangle, maybe adding a label, and grouping the two to make a button. I find groups are handy in a few cases, but frames again are more appropriate. Instead of needing a rectangle, text layer, and group, all you need is a text layer inside a frame.
This starts to get extra powerful when taking advantage of the auto layout frames. But perhaps that’s for another time.
Thank you for the insight @zachshea!