Opa, tudo bom! Trabalho há alguns anos com React acho que posso contribuir com algumas dicas.

1 - Antes de começar a componentizar em código vale a pena estudar no layout o que faz sentido ser um componente. 2 - Eu gosto de trabalhar com componentes em dois níveis (mas pode variar de desenvolvedor para desenvolvedor) um nível de projeto que são componentes que vão se repetir em 2 ou mais telas, exemplo, botão, titulo, link e etc. Já o segundo nível é o que considero componentes de tela que são componentes que só fazem sentido para a tela em questão, por exemplo tem uma aplicação que tem login e home e dentro da tua home tem um componente de sessão, esse no meu projeto seria um componente a nível de tela. 3 - Recomendo dar uma olhada no Atomic Design link português e link inglês dependendo o projeto ele pode ser muito útil. 4 - Não há uma regra quanto a lógica de negócio, mas eu gosto de deixar as regras nas hooks e no componente ter regras somente de estilização e comportamento do componente em si. 5 - Prefira desenvolver seus componentes do que colocar lib nas dependências para tudo, claro que há sempre exceções, mas leve em conta que adicionar dependências aumenta o tamanho do seu projeto e pode trazer mais pontos de segurança para cuidar. 6 - Nos componentes se estiver usando somente o javascript recomendo usar propTypes para no mínimo dizer o que o componente precisa de propriedades para funcionar ou utilize o typescript. 7 - Se seu projeto vai ter componentes que em um futuro próximo podem ser utilizados em outros projetos na mesma empresa, talvez seja interessante utilizar o storybook ou algo similar para documentar seus componentes. 8 - Passei por vários projetos e posso dizer que nem todos usavam testes no frontend, mas recomendo muito que utilize, o próprio Jest ou ainda o Cypress podem te ajudar bastante nisso.

Fiz um compilado do que ia lembrando aqui, espero ter ajudado.