2 pontos por GN⁺ 2025-11-04 | 3 comentários | Compartilhar no WhatsApp
  • Mesmo ao otimizar o Nextcloud em um servidor pessoal, a causa da lentidão percebida é a estrutura de carregamento excessivo de JavaScript
  • No carregamento inicial da página, são baixados 15–20 MB de JavaScript e, mesmo após compressão, ainda ficam em torno de 4–5 MB, o que continua sendo pesado
  • O tamanho dos scripts de cada app é muito grande, como core-common.js (4.71 MB), NotificationsApp.chunk.mjs (1.06 MB), o app de Calendário com 5.94 MB, o app de Arquivos com 18.8 MB e o app de Notas com 20.91 MB
  • Por causa dessa estrutura, até em um iPhone 13 mini há um atraso de 5–10 segundos para abrir o app Tasks
  • Algumas funções foram substituídas por Vikunja (1.5 MB de JS) e Immich, mas é difícil substituir totalmente o Nextcloud por causa de seus recursos integrados

Causa da queda de desempenho do Nextcloud

  • O Nextcloud integra vários recursos, como arquivos, calendário, contatos, notas, tarefas e fotos, mas a velocidade percebida de uso é lenta
    • Mesmo em ambientes com hardware suficientemente potente, a resposta continua lenta
  • Segundo a análise com as ferramentas de desenvolvedor, a principal causa da demora é a quantidade excessiva de JavaScript
    • No carregamento inicial da página, são baixados 15–20 MB de JavaScript
    • Mesmo com transmissão comprimida, o volume ainda fica em 4–5 MB, muito acima do padrão de apps web em geral (1 MB)
  • Mesmo com cache no navegador, ainda é preciso executar uma grande quantidade de código a cada visita, o que causa atraso no carregamento

Principais tamanhos dos bundles JavaScript

  • core-common.js: 4.71 MB, fornecendo funções compartilhadas entre vários apps
  • NotificationsApp.chunk.mjs: 1.06 MB
  • App de Calendário: precisa de 5.94 MB só para a visualização básica do calendário
    • Em redes lentas, o carregamento pode demorar mais de 30 segundos
  • App de Arquivos: inclui vários scripts como EditorOutline (1.77 MB), previewUtils (1.17 MB), index (1.09 MB) e emoji-picker (0.9 MB)
    • O total chega a 18.8 MB e, em ambiente real, a espera pelo carregamento pode passar de 1 minuto
  • App de Notas: só o notes-main.js já tem 4.36 MB, e o total fica em torno de 20.91 MB

Impacto na experiência do usuário

  • Até ao abrir o app Tasks, ocorre um atraso de 5–10 segundos
    • Ex.: ao abrir uma lista de compras na loja, ela não aparece imediatamente
  • A proporção entre funcionalidade e tamanho dos bundles é anormalmente alta, gerando um desequilíbrio entre recursos e desempenho
  • Pela própria estrutura do Nextcloud, há muitas bibliotecas e ferramentas compartilhadas, então a experiência integrada vem ao custo de perda de desempenho

Uso de serviços alternativos

  • Algumas funções foram separadas para Vikunja (gerenciamento de tarefas, 1.5 MB de JS) e Immich (gerenciamento de fotos)
    • O Vikunja não é perfeito, mas como o volume de JS é pequeno, a sensação de velocidade é melhor
  • Ainda assim, é difícil substituir totalmente o Nextcloud por causa de sua integração e praticidade

Conclusão e mudança de percepção

  • A estrutura atual do Nextcloud pode ter limitações reais, como motivos justificáveis ou falta de pessoal
  • Mesmo assim, a piora na experiência do usuário e na acessibilidade é apontada como um problema claro
  • Por meio dos textos do especialista em performance web Alex Russell, fica evidente a importância da performance web e o problema da falta de cuidado da equipe de desenvolvimento com desempenho e acessibilidade
  • No desenvolvimento de apps web, é preciso considerar o problema da desigualdade de performance (performance inequality)

3 comentários

 
ndrgrd 2025-11-04

É simplesmente lento. Não é só o cliente que é lento; o servidor também é.
Mesmo em uma máquina com 8745HS, leva horas para gerar miniaturas de algumas centenas de PDFs e ainda não termina.
É melhor usar qualquer outro servidor de arquivos. Se o cliente for Windows, SMB; para o resto, achei melhor usar um servidor WebDAV com rclone ou dufs.

 
yeorinhieut 2025-11-05

O copyparty é bem legal.

 
GN⁺ 2025-11-04
Comentários do Hacker News
  • Eu queria gostar do Nextcloud. Acho impressionante que ele exista
    Mas, embora por fora pareça funcionar bem, às vezes acontecem erros irrecuperáveis e tudo quebra de vez
    Tentei fazer backup automático das fotos da família com os apps de iOS/Android, mas o app de iOS às vezes dá erro de “locked webdav” ou simplesmente para de sincronizar
    No fim, acabei tendo que reenviar 80 GB de fotos do zero
    É instável demais para a família usar, então preciso de uma alternativa confiável. Na prática, não existe alternativa fora o iCloud

    • Já tive caso de o app de iOS perder a conexão com a conta em segundo plano e causar perda de dados
      Colei arquivos pela integração com o app Files, mas eles não sincronizaram e os dados sumiram sem qualquer aviso
    • Existe uma alternativa ultraleve mais recente feita pela comunidade, o copyparty
      copyparty GitHub — tem só o necessário, sem peso desnecessário
    • Para backup de fotos, o Immich oferece uma experiência muito melhor
      Mas, como substituto do Dropbox, ainda não há nada realmente à altura
    • Para fotos, acho o Immich o melhor de todos
    • Troquei o upload no celular pelo FolderSync, e funciona perfeitamente
      O app oficial tem muitos bugs, mas o lado do servidor é estável
  • O Nextcloud é lento porque faz chamadas JavaScript demais
    Ao recarregar a página do calendário, são feitas 124 chamadas de rede, e 31 delas nem sequer são armazenadas em cache
    Cada calendário leva mais de 30 ms, então, quanto mais calendários houver, mais o atraso se acumula
    Mesmo na rede local leva 1 segundo; em 4G, mais de 33 segundos. O próprio design é ineficiente

    • Há arquivos JS demais e requisições AJAX demais
      Esse tipo de estrutura baseada em REST inevitavelmente fica lenta em rede móvel por causa da latência de ida e volta
      Acho que já passou da hora de usar WebSocket em vez de REST
    • Antigamente o calendário do Nextcloud era realmente excelente, mas depois do redesign ele foi completamente arruinado
      Adicionar ou editar eventos ficou incômodo, e a UI também ficou infantil. Não existe um calendário web open source realmente bom
    • Para resolver esse tipo de problema, o protocolo de sincronização de dados precisa melhorar
      Abordagens como a do Electric SQL são interessantes
      E melhorias em JS como a TC39 import proposal também podem ajudar
  • Eu já mantive um soft fork do Nextcloud, e a estrutura básica é complexa demais
    Só de aplicar alguns patches de desempenho, a velocidade de renderização do gerenciador de arquivos melhorou várias vezes
    Mas a base de código é uma estrutura de camadas em cima de camadas, então é difícil confiar nela
    No fim, abandonei o projeto. Parece que essa complexidade é um dos fatores que sustentam o ecossistema de provedores de hospedagem

    • Penso o mesmo. O Nextcloud caiu na armadilha da modularização
      Cada recurso começou como um plugin independente e acabou sem integração real
      Agora virou um monstro, e acho que seria melhor conectar várias ferramentas com SSO
    • Fiquei curioso se você compartilhou esses patches. Se o ganho de velocidade for tão grande, eles podem ajudar a comunidade
      E, na prática, operar o Nextcloud nem é tão difícil assim. Depois de configurar uma vez, a manutenção é simples
  • Acho que a causa da lentidão não é tanto o tamanho do JS citado no artigo, mas sim a lógica ineficiente
    O problema são chamadas de API demais e atualizações de UI demais

    • Quando há JS demais, o overhead acumulado de parsing, execução e manipulação do DOM fica grande
      Antigamente, se passava de 200 KB, já fazíamos revisão de otimização; o Nextcloud tem 15 MB
    • Também pode ser problema de cache mal feito ou de pré-carregamento desnecessário
  • Uso o Nextcloud há 7 anos para backup de fotos da família
    Ele protege bem a privacidade e é estável, mas eu jamais recomendaria como substituto do Google Docs
    Uploads grandes e carregamento de miniaturas são instáveis e lentos
    Mesmo assim, não há substituto, e não quero entregar meus dados para a IA das big techs
    Queria que minha família usasse mais ativamente

    • Fico curioso se o Immich pode ser essa alternativa. Ouvi dizer que ele é forte em gerenciamento de fotos e vídeos
  • Já usei vários gerenciadores de arquivos self-hosted
    Usei Ajaxplorer → Pydio → Nextcloud → FileRun, e o FileRun foi o que mais me satisfez
    É rápido, estável e funciona bem até no navegador do celular
    Hoje é pago, mas vale o preço
    O copyparty também é leve e rápido, mas não é amigável para usuários comuns
    Sinto falta do recurso de “solicitação de arquivos” do FileRun

    • Eu gosto do filebrowser. Junto com o Syncthing, ele vira um mini Dropbox
      filebrowser GitHub
      filebrowser-docker
    • No copyparty, também dá para criar links de upload parecidos com o recurso “shares(--shr)”
      link de demonstração
    • O copyparty só oferece sincronização unidirecional, então é difícil vê-lo como substituto do Nextcloud
      Estou pensando em combiná-lo com o Syncthing, mas me preocupo com a carga de CPU
  • O Nextcloud é lento e pesado, mas estável
    Estamos usando há anos em uma empresa de 8 pessoas sem problemas
    O webapp é lento, então quase não usamos; dependemos mais do cliente de sincronização para desktop
    O plugin de autenticação IMAP é muito útil e facilita a gestão de usuários

    • Dizem que o webapp é lento, mas ele também tem muitas vantagens
      Dá para personalizar livremente com uBlock, userstyle, userscript e afins
  • No passado, descobri e reportei uma vulnerabilidade no visualizador de PDF do Nextcloud
    O problema era incluir um visualizador de PDF antigo baseado em JS, e recebi US$ 100 por isso aos 16 anos
    Post no meu blog

    • Eu também tentei exibir PDF dentro de uma div no app, mas no fim tive que usar pdf.js
  • Muita gente reclama de projetos open source, mas pouca gente tenta melhorá-los por conta própria
    Eu amo o Nextcloud. Ele é lento, mas meus dados continuam sendo meus, e como o código é AGPL, eu também posso modificá-lo
    Dá para usar de graça e adicionar extensões como se estivesse “fazendo compras”
    Uso há mais de 6 anos sem grandes problemas, e essa liberdade é realmente incrível
    Não é perfeito, mas sou grato por esse projeto existir

  • A vantagem do Nextcloud é reunir toda a suíte de colaboração em uma única plataforma
    Arquivos, calendário, notas, office, fotos, Talk e mais, tudo numa experiência integrada
    O pacote AIO resolveu muitos problemas de atualização e estabilidade
    Mas, por ser baseado em PHP, o desempenho fica aquém, e seria bom se a UI fosse mais refinada, como a do Synology DSM

    • Trocar de linguagem não melhoraria tanto assim a velocidade
      O problema são a estrutura de I/O ineficiente e a enorme quantidade de chamadas XHR
      PHP tem boa acessibilidade, o que favorece contribuições da comunidade
    • Só como referência, o Owncloud Infinite Scale é uma versão reescrita em Go
      documentação oficial — mas depende bastante de Docker e tem muitas restrições de ambiente