Montar SquadSolicitar Orçamento
Tecnologia28 de agosto de 20267 min de leituraAtualizado em 6 de setembro de 2026

react-spring: o que é animação por física de molas e quando usar

Onde a mola ganha da animação por duração e onde perde, os cinco alvos da mesma API (web, React Native, 3D) e como ler a cadência em rajadas de versões antes de adotar.

Índice do artigo
faltam 7 min de leitura

Animar por duração é dizer quanto tempo o movimento leva. Animar por física é dizer como o objeto se comporta e deixar o tempo ser consequência. A escolha entre os dois modelos decide mais sobre a sensação da interface do que a biblioteca escolhida.

Quase toda biblioteca de animação pede duas coisas: quanto tempo dura e qual a curva de aceleração. O react-spring não pergunta nenhuma das duas. Ele pergunta qual a tensão da mola, quanto atrito existe e qual a massa do objeto, e o tempo do movimento nasce daí.

Este artigo explica o que essa diferença muda na prática, onde ela ganha, onde ela atrapalha, quais plataformas a biblioteca cobre e como interpretar o histórico de manutenção do projeto antes de colocá-lo em um produto que precisa durar.

Resumo do artigo

  • O react-spring define movimento por tensão, atrito e massa, e não por duração, o que o torna forte em interação interrompível como arrastar e soltar.
  • A biblioteca é MIT e mantida pelo coletivo Poimandres, o mesmo grupo por trás do react-three-fiber e do zustand.
  • A mesma API de hooks atende navegador, React Native, three.js, Konva e Zdog, o que é raro entre bibliotecas de animação.
  • A manutenção é em rajadas: entre outubro de 2025 e abril de 2026 o repositório recebeu três commits, e só em maio de 2026 recebeu 98.

O react-spring anima por física, não por duração

O react-spring é uma biblioteca de animação para React descrita pelo próprio repositório como uma biblioteca multiplataforma que coloca a física de molas em primeiro lugar. Na prática, você declara de onde e para onde o valor vai, e a biblioteca calcula cada quadro simulando uma mola presa entre os dois pontos.

O código mais simples possível deixa a diferença clara: useSpring({ from: { opacity: 0 }, to: { opacity: 1 } }) devolve um objeto de estilos que você aplica em um animated.div. Não há duração nenhuma nessa declaração. O movimento termina quando a mola para de oscilar.

Duração e mola resolvem problemas diferentes

A vantagem real da física aparece quando a animação é interrompida no meio. Se o usuário arrasta um cartão e solta antes do fim, uma animação por duração precisa decidir o que fazer com o tempo restante, e a solução costuma ser reiniciar uma nova animação a partir da posição atual, o que produz um salto perceptível. A mola não tem esse problema: ela já carrega a velocidade do gesto e continua dali, porque velocidade é parte do estado do sistema.

A desvantagem é simétrica e igualmente concreta. Se o requisito é que três elementos entrem em cena com 200 ms de diferença entre eles e a sequência termine em exatamente 1,2 segundo, física é a ferramenta errada. Você vai ficar ajustando tensão e atrito até chegar perto do tempo desejado, quando poderia ter escrito o tempo.

SituaçãoFísica de molasDuração e easing
Arrastar e soltarPrecisa recalcular a partir da posição
Interrupção no meioEncadeia uma nova animação
Sequência com tempo fechadoTempo é declarado direto
Sincronizar com áudio ou vídeoPrevisível por construção
Ajuste fino por designerCurva e tempo são familiares

Comparação conceitual entre os dois modelos de animação, com base na documentação do react-spring.

Física de molas perde em três das cinco linhas, e é isso que define o seu domínio. Ela não é um modelo superior ao de duração: é o modelo certo para interface manipulável por gesto, e o modelo errado para tudo que precisa de relógio.

A adoção real está no pacote por alvo

Existe uma armadilha de leitura nos números do react-spring, e ela vale para quem compara bibliotecas por download. O pacote chamado react-spring é um guarda-chuva que instala tudo, e a própria documentação recomenda instalar apenas o alvo desejado. Por isso, olhar só o nome principal subestima a biblioteca em quase cinco vezes.

5,50 miDownloads de @react-spring/web
1,18 miDownloads de react-spring
29.142Estrelas no GitHub
10.1.2Versão estável atual

Fonte: registro npm, downloads da semana de 18 a 24/08/2026, e API do GitHub para o repositório pmndrs/react-spring.

Com 5,5 milhões de downloads semanais no pacote web, o react-spring está entre as bibliotecas de animação mais usadas do ecossistema React. Isso importa por uma razão prática: quando algo quebra em produção, existe massa crítica de gente que já passou pelo mesmo problema.

A mesma API atravessa navegador, React Native e three.js

O react-spring é a única das bibliotecas de animação mais adotadas que trata React Native e renderização 3D como alvos de primeira classe, com a mesma API de hooks. O README lista cinco alvos suportados, cada um em seu pacote.

AlvoPara que serve
@react-spring/webNavegador, animando estilos de elementos do DOM. É o pacote da maioria dos projetos.
@react-spring/nativeAplicativos React Native, com a mesma escrita de hooks usada na web.
@react-spring/threeCenas 3D via react-three-fiber, animando posição, rotação e escala de objetos.
@react-spring/konvaGráficos em canvas 2D via react-konva.
@react-spring/zdogIlustração pseudo-3D via react-zdog.

Fonte: README oficial do repositório pmndrs/react-spring, leitura de 28/08/2026.

Para um time que mantém produto web e aplicativo com o mesmo código de domínio, isso reduz uma categoria inteira de retrabalho: a lógica de animação vira portável junto com o resto. Não é um caso comum, mas quando é o seu caso, nenhuma outra biblioteca dessa lista oferece o mesmo.

A cadência de versões é em rajadas, e isso precisa entrar na conta

O react-spring não é abandonado e não é continuamente mantido. Ele é mantido em rajadas, e essa é a característica que mais deveria pesar na decisão de adotá-lo em produto de longa vida. O histórico público do repositório mostra o padrão com clareza.

  1. Set/2025 10.0.3
    Última versão antes da pausa

    Publicada em 18 de setembro de 2025, no fim de um mês com cinco commits no repositório.

  2. Out/25 a abr/26 pausa
    Sete meses com três commits

    Um commit em dezembro, um em fevereiro, um em março. Nenhuma versão publicada no npm em todo o período.

  3. Mai/2026 10.0.4 e 10.1.0
    A rajada

    98 commits em um único mês e duas versões publicadas em dias consecutivos, 21 e 22 de maio de 2026.

  4. Jun/2026 10.1.2 e 11.0.0-beta
    Estabilização e próxima major

    A versão estável atual sai em 24 de junho de 2026, três dias depois do primeiro beta da 11.

A leitura correta dessa linha do tempo não é medo, é planejamento. Se o seu projeto depende de correção rápida de bug em dependência, ou se você precisa de compatibilidade garantida com a próxima versão do React no dia em que ela sair, a rajada é um risco a mitigar, seja fixando versão, seja mantendo um fork interno. Se a animação do produto é estável e você não precisa de recurso novo, o padrão é irrelevante: código que funciona não para de funcionar porque ninguém commitou em fevereiro.

Quem mantém: o coletivo Poimandres

O react-spring pertence à Poimandres, coletivo de código aberto que aparece no GitHub como pmndrs e mantém alguns dos projetos mais usados do ecossistema React, incluindo o react-three-fiber, para 3D, e o zustand, para gerenciamento de estado. Isso é diferente de um projeto de mantenedor único, tanto no bom quanto no mau sentido.

No bom sentido, o projeto não morre se uma pessoa mudar de emprego, e a lista de contribuidores mostra três nomes com volume relevante de trabalho acumulado em vez de um só. No mau sentido, projeto de coletivo raramente tem alguém contratualmente responsável por responder issue em prazo, e o trabalho acontece quando algum mantenedor tem disponibilidade. O padrão em rajadas da seção anterior combina com esse arranjo.

react-spring ou uma biblioteca de estado: onde cada uma cai

A comparação mais frequente é com bibliotecas de animação declarativas ligadas ao estado do componente. Elas se sobrepõem bastante, e o critério que separa de verdade tem dois eixos: quanto o tempo exato importa e quanto o usuário interfere no movimento.

Sequência coreografadaTimeline imperativa
Coreografia com gestoBiblioteca ligada a estado
Microinteração simplesCSS puro
Manipulação diretareact-spring

O quadrante inferior direito é o território natural do react-spring: cartão que se arrasta, folha que se puxa de baixo para cima, item que se solta no meio do caminho e continua com a inércia do gesto. Fora dele, existem opções mais diretas, e o quadrante inferior esquerdo é o lembrete mais barato de todos: nem toda animação precisa de biblioteca.

Quando o react-spring não é a escolha certa

Três casos pedem outra coisa.

Equipe sem familiaridade com física. Ajustar tensão, atrito e massa até a interface parecer certa é um trabalho de tentativa e erro que não se resolve lendo documentação, e designers acostumados a curvas de easing não têm vocabulário para pedir ajuste nesse modelo.

Animação de layout automática. Fazer um elemento animar suavemente entre duas posições calculadas pelo navegador, sem você declarar as coordenadas, é recurso pronto em outras bibliotecas e trabalho manual aqui.

Projeto que não é React. A biblioteca é construída em torno de hooks, e não existe caminho de uso fora do React.

Como decidir

  • A interface tem gesto de arrastar, puxar ou soltar? Esse é o caso em que a física paga por si.
  • Alguma animação precisa terminar em um tempo exato? Se sim, esse pedaço não deve usar mola.
  • O produto tem versão em React Native ou cena 3D? Só aqui a mesma API atravessa as três.
  • Seu processo aguenta uma dependência que fica meses sem publicar versão? Se não, fixe a versão e planeje a manutenção.

Se você respondeu sim para gesto e não precisa de tempo fechado, o react-spring é a escolha mais alinhada ao problema. Se a animação do seu produto é entrada, saída e transição de tela, existem caminhos com menos parâmetros para calibrar.

Precisa estruturar a interface do seu produto?

Solicite um orçamento e avance com arquitetura, escopo e entrega definidos.


Fontes e método

A apuração deste artigo foi feita em 28 de agosto de 2026, em fonte primária. Versões, datas de publicação e licença vêm do registro npm e do repositório pmndrs/react-spring. Estrelas, contribuidores e histórico de commits vêm da API do GitHub, com a contagem por mês feita sobre todos os commits desde 1 de junho de 2025. Alvos suportados e forma de instalação vêm do README oficial. Downloads referem-se à semana de 18 a 24 de agosto de 2026.

Nenhum teste de performance foi executado pela X-Apps para este artigo. O react-spring e os demais projetos citados são externos, sem relação comercial com a X-Apps.

Perguntas frequentes

É uma biblioteca de animação para React baseada em física de molas, em que o movimento é definido por tensão, atrito e massa em vez de duração e curva de easing.

Post anterior
Motion (ex-Framer Motion): o que mudou, o que é grátis e o que custa
Próximo post
React Bits: o que é, o que a licença permite e onde ele cobra o preço
Newsletter

Um e-mail por mês, sem ruído

O que aprendemos entregando software sob medida e IA aplicada.

Artigos similares

Motion (ex-Framer Motion): o que mudou, o que é grátis e o que custa8 min · Tecnologia
React Bits: o que é, o que a licença permite e onde ele cobra o preço8 min · Tecnologia
Guia definitivo do Low-code: o que é e quando usar?10 min · Tecnologia
Como funciona uma software house?10 min · Tecnologia
O que é web app e quais são seus benefícios?10 min · Tecnologia

Acelere a sua empresa com a X-Apps

Alocar profissionaisSolicitar Orçamento
A X-Apps é um provedor de TI parceiro e aconselhada pelo
Gartner
Receba nossos e-mails
Siga nossas redes sociais
O seu time de tecnologia e IA. Software sob medida, soluções de IA e alocação de profissionais.
Vamos conversar?
comercial@x-apps.com.br11 5083-0122

Rua Rodrigo Vieira, 126

Jardim Vila Mariana. São Paulo, SP.

CEP: 04115-060

Mapa do site
Termos de serviçoTermos de privacidade
Available in English