Comunidade

Pare de Lutar com Bibliotecas Pesadas de Toast no React Native (Então Eu Criei a Minha Própria)

O autor do artigo descreve a criação de um novo pacote chamado 'rn-lean-toast' para React Native, que oferece notificações rápidas e suaves sem a necessidade de complexos contextos ou configurações. O objetivo é fornecer uma solução leve e eficiente para exibir mensagens temporárias em aplicações móveis, garantindo desempenho superior mesmo sob cargas pesadas.

Compartilhar
Medium

Pare de Lutar com Bibliotecas Pesadas de Toast no React Native (Então Eu Criei a Minha Própria)

Por que parei de usar pacotes complexos e cheios de contexto para notificações e criei uma biblioteca de toast rápida, sem configuração e imperativa.

Ao construir aplicativos móveis, o feedback do usuário é tudo. Quando um usuário atualiza seu perfil, copia um link para a área de transferência ou enfrenta uma queda na rede, eles esperam uma notificação limpa e não intrusiva.

No entanto, implementar toasts no React Native muitas vezes parece excessivo. Você se vê:

  1. Instalando pacotes de notificações massivos que exigem envolver toda a árvore de componentes em provedores de contexto personalizados.
  2. Forçando desenvolvedores a passar hooks useToast() através de componentes profundamente aninhados apenas para disparar uma mensagem simples.
  3. Lidando com animações estremadas, que fazem o JavaScript thread hesitar quando a UI está ocupada.

Fiquei cansado do excesso. Queria algo rápido, completamente livre de contexto e macio como manteiga. Então, eu criei rn-lean-toast.

A Filosofia: Imperativa e Livre de Contexto

Por que você deveria ter que chamar um hook do React apenas para exibir uma mensagem de sucesso? Notificações são eventos temporários da UI — elas não devem depender do ciclo de vida do contexto React da árvore de componentes.

Com rn-lean-toast, você não precisa de hooks. Você simplesmente chama Toast.success() de qualquer lugar em sua base de código — seja dentro de um componente, uma camada de rede ou uma função utilitária em segundo plano.

import { Toast } from 'rn-lean-toast';
// Exiba uma notificação de sucesso instantaneamente de qualquer lugar
Toast.success('Perfil atualizado com sucesso!');
// Ou dispare uma notificação de erro na parte inferior da tela
Toast.error('Requisição de rede falhou. Tente novamente.', { position: 'bottom' });

O que rn-lean-toast Oferece

  • API Sem Configuração: Nenhuma necessidade de hooks (useToast) na chamada. Dispare notificações diretamente de interceptores Axios, Redux thunks ou funções auxiliares.
  • Posicionamento Flexível: Envie notificações para o topo ou a parte inferior da tela dependendo das necessidades do seu layout.
  • Animações Nativas em 60fps: Totalmente alimentadas por useNativeDriver: true, garantindo que suas notificações nunca tremam mesmo sob carregamento pesado da thread JavaScript.
  • Consciente da Área Segura: Calcula automaticamente as dimensões do status bar e notch para que suas notificações nunca sejam cortadas na Dynamic Island ou barras do sistema Android.
  • Ultra Leve: Zero dependências externas (apenas peer-depends em react-native-safe-area-context).
Pressione enter ou clique para ver a imagem em tamanho completo

Guia Rápido de Início

1. Instalação

Instale o pacote junto com sua dependência peer:

npm install rn-lean-toast react-native-safe-area-context
# ou
yarn add rn-lean-toast react-native-safe-area-context

2. Monte o Host na Raiz do Seu Aplicativo

Drope a uma vez no nível raiz do seu aplicativo, diretamente dentro de seu SafeAreaProvider:

import React from 'react';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { ToastHost } from 'rn-lean-toast';
import MainApp from './MainApp';

export default function App() {
return (
<SafeAreaProvider style={{ flex: 1 }}>
<MainApp />

{/* Mount global toast host */}
<ToastHost />
</SafeAreaProvider>
);
}

3. Disparar Toasts em Qualquer Lugar

import { Toast } from 'rn-lean-toast';

const handleDataSave = async () => {
try {
await api.saveChanges();
Toast.success('Alterações salvas com sucesso!');
} catch (err) {
Toast.error('Falha ao salvar alterações. Por favor, tente novamente.');
}
};

Comece Hoje

Limpe sua lógica de notificações, descarte os wrappers de contexto pesados e forneça loops de feedback rápidos para seus usuários.

Código feliz!

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa