Resumo
Uma ilha determina um componente interativo e que será hidratado no lado do cliente. O servidor manda todos os dados dasprops
de ilhas para fazer a hidratação, bem como o browser precisa de tempo para processar e renderizar essas ilhas. Por isso, é importante tomar alguns cuidados no uso de ilhas:
- Reduza ao máximo a quantidade de props a ser enviada / utilizada para uma ilha
- Torne uma ilha apenas o que for necessário, lembrando de usar o
children
para elementos internos que não precisam de hidratação.
Reduzindo o tamanho do JSON de props enviado para as ilhas
Ao carregar dados de APIs externas usando Loaders e enviá-los para a Section, é possível que o tamanho do payload impacte negativamente a performance do site. O impacto ocorre tanto no tempo inicial de carregamento como também na hidratação, onde a página é “inicializada” no browser para que possa ser interativa (usaruseEffect
,
useSignal
, etc…). É possível visualizar no tamanho do JSON final através da
aba Performance de uma das páginas do seu site no CMS deco.

Reduzindo dados enviados às ilhas
Nesse primeiro exemplo, mostraremos como evitar enviar muitos dados para uma ilha. Digamos que existe um componente chamado ProductCard, que recebe todo o JSON de um produto.❌ Abordagem inadequada
✅ Abordagem correta
Reduzindo o escopo de uma ilha
Uma ilha e seus componentes serão todos hidratados do lado do cliente para poderem operar. Isto significa que, para todos os elementos definidos da ilha, eles serão recursivamente hidratados. É possível reduzir o escopo da ilha, fazendo com que, qualquer elemento interno, seja passado comochildren
da ilha.
❌ Abordagem inadequadaNo exemplo abaixo, criamos uma ilha que interage com o
localStorage
para
definir um título para uma galeria de itens. No exemplo abaixo, tanto os props
de gallery serão inseridos para hidratar o TitleContainer
, como serão também
inseridos para poder hidratar o Gallery
.
✅ Abordagem corretaSe, no entanto, o
Gallery
for repassado como children para a ilha, ele será
renderizado, serializado e não será hidratado! Para o TitleContainer
, o
children
é um html pronto para ser exibido, e, portanto, não é uma ilha em si.