Use a single radial-gradient dot as background-image and set the spacing with background-size, and it repeats into a grid of dots (the same idea as halftone, except every dot is the same size). On its own, that background stops abruptly at the rectangle's edge.
Layer mask-image: radial-gradient(...) on top and the alpha fades smoothly — opaque (dots visible) at the centre, transparent (dots gone) toward the edges — so the pattern reads as naturally dissolving rather than cut off. Since the mask is a separate layer, changing only its radius or shape freely controls how far the dots spread.
Most often it sits as static background texture behind a card or section, with content placed on top — it works fine with no animation at all.
When to use
Use as background texture behind a feature or CTA section. Keep the dot-to-background contrast low so it never outshines the content.