pull down to refresh

that's a nice clear definition, you've obviously done the work to inform yourself. im not sure i could have given such a concise definition.

you can definitely migrate away from radix to base ui piecemeal, but for each ui component you migrate, you may need to change every place that component is used because the ref forwarding / asChild prop behaves differently.

in practice, all of the styling presets are customisable so any decision that shadcn made can be overridden. it's just a starting point. and with tailwind + class-variance-authority this becomes a breeze

however if you do modify your shadcn ui components it makes upgrading to the latest versions fiddly because you need to cherrypick your changes and apply them to the updated shadcn component.