Pular para o conteúdo principal

Instalação

Escolha o pacote de interface da sua plataforma e instale somente ele. Ele traz junto a camada React e o motor core, e reexporta os hooks e tipos de que você precisa, então você importa tudo dele.

Web​

pnpm add @rogeriodocarmo/offline-detector-web
# ou: npm install @rogeriodocarmo/offline-detector-web
# ou: yarn add @rogeriodocarmo/offline-detector-web

Exige React e react-dom 18 ou mais recente (dependências peer). O pacote depende de @rogeriodocarmo/offline-detector-react e de @rogeriodocarmo/offline-detector-core, que pnpm, npm e yarn instalam para você.

React Native e Expo​

npm install @rogeriodocarmo/offline-detector-native
# opcional, para detecção instantânea quando a interface cai:
npm install @react-native-community/netinfo
# opcional, para as margens de área segura:
npm install react-native-safe-area-context

No Expo, use npx expo install @react-native-community/netinfo react-native-safe-area-context para que o Expo escolha as versões compatíveis com o seu SDK. No React Native puro, instale os mesmos pacotes e rode pod install no iOS.

O pacote nativo depende da camada React e do core, então não há mais nada a acrescentar. Exige React 18 ou mais recente e React Native 0.73 ou mais recente. Não há código nativo próprio, nem Reanimated, nem dependência de gesture-handler; portanto nada exige um development build além do que o próprio NetInfo exige.

Só o motor​

Se quiser a sua própria interface, instale a camada React ou apenas o core:

pnpm add @rogeriodocarmo/offline-detector-core
pnpm add @rogeriodocarmo/offline-detector-react

O core nunca toca em window, navigator nem no React Native. Veja a referência do core e a referência do react.

Confira se funciona​

Renderize o componente uma vez perto da raiz (veja os inícios rápidos) e desligue a rede ou use a aba Network do DevTools do navegador em Offline. As peças aparecem em até um segundo. A demonstração ao vivo tem um controle de simular offline que funciona sem tocar na rede.