essentially if I use something more than 2 times I create a reuseable element for it
I try and lean heavily into the reuseable elements since they make building new features in an app much faster and easier, as well as changing things in an existing app.
For example I might build a reuseable for a table of contacts. I might use it on the contact list page, then also the company page (contacts at company), contacts page (related contacts), event (contacts at event).
Within the reuseable element I might have several other reuseables - a card for the contact, a pager, a filter - these I might break out and use in other places separate to the table but I want them to function the same in all the places.
Another common reuseable is highlights/callouts - title and number in a box. Cards for all data types - these are used in searches. Custom dropdowns/selectors. Create/edit popups. Search for things popups.
With reuseables you don’t have to rely on urls - you can use states and also parameters on the reuseable itself to pass in information. And you can create reuseables for rows in a table to workaround the issue of “current rows thing changes”.
Quite often I’ll also create 1 time reuseables just to compartment off the logic to make dev easier and the page to load faster in the editor.