The issue might just come down to how small the movement is. Since the overall size is only changing by 4 pixels in every direction, there are only 4 logical “steps” that can be shown throughout the tween. A simple way to make it appear more snappy is to make the duration really short or to make the change more dramatic.
This version happens really fast:
currentSelection:TweenSizeAndPosition(UDim2.new(0, currentSelection.Size.X.Offset - 8, 0, currentSelection.Size.Y.Offset - 8), UDim2.new(0.5, currentSelection.Position.X.Offset + 4, 0.5, currentSelection.Position.Y.Offset + 4), "In", "Linear", .4)
wait(5)
currentSelection:TweenSizeAndPosition(UDim2.new(0, currentSelection.Size.X.Offset + 8, 0, currentSelection.Size.Y.Offset + 8), UDim2.new(0.5, currentSelection.Position.X.Offset - 4, 0.5, currentSelection.Position.Y.Offset - 4), "Out", "Linear", .4)
This version makes a larger movement:
currentSelection:TweenSizeAndPosition(UDim2.new(0, currentSelection.Size.X.Offset - 40, 0, currentSelection.Size.Y.Offset - 40), UDim2.new(0.5, currentSelection.Position.X.Offset + 20, 0.5, currentSelection.Position.Y.Offset + 20), "In", "Linear", 5)
wait(5)
currentSelection:TweenSizeAndPosition(UDim2.new(0, currentSelection.Size.X.Offset + 40, 0, currentSelection.Size.Y.Offset + 40), UDim2.new(0.5, currentSelection.Position.X.Offset - 20, 0.5, currentSelection.Position.Y.Offset - 20), "Out", "Linear", 5)
This version is a combination of both:
currentSelection:TweenSizeAndPosition(UDim2.new(0, currentSelection.Size.X.Offset - 20, 0, currentSelection.Size.Y.Offset - 20), UDim2.new(0.5, currentSelection.Position.X.Offset + 10, 0.5, currentSelection.Position.Y.Offset + 10), "In", "Linear", .6)
wait(5)
currentSelection:TweenSizeAndPosition(UDim2.new(0, currentSelection.Size.X.Offset + 20, 0, currentSelection.Size.Y.Offset + 20), UDim2.new(0.5, currentSelection.Position.X.Offset - 10, 0.5, currentSelection.Position.Y.Offset - 10), "Out", "Linear", .6)