dotmind / react-use-pwa

Prompt to install Progressive Web App and more with React hooks.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

header

@dotmind/react-use-pwa

Prompt to install Progressive Web App and more with React hooks. Builded by .mind.io

Menu

βœ‹ Disclaimer

This package help to prompt to install and manage Progressive Web App (PWA) installed with React hooks.

Please check if your app have the required criteria before use : web.dev/install-criteria

Want to make a good PWA ? Read this

SSR support βœ…

πŸ’» Installation

yarn add @dotmind/react-use-pwa

or

npm i @dotmind/react-use-pwa --save

πŸ‘·β€β™‚οΈ How it's work

usePwa usage

import { useEffect, useCallback  } from 'react';
import { usePwa } from '@dotmind/react-use-pwa';

const App = () => {
  const {
    installPrompt,
    isInstalled,
    isStandalone,
    isOffline,
    canInstall,
  } = usePwa();

  const handleInstallPrompt = useCallback(() => {
    if (canInstall) {
      installPrompt();
    }
  }, [canInstall, installPrompt]);

  if (isOffline) {
    return <p>Please check your network πŸ“Ά</p>;
  }

  if (!isInstalled || !isStandalone) {
    return (
      <button onClick={handleInstallPrompt}>
        <span>Hey install our app πŸ‘‹</span>
      </button>
    );
  }

  return (
    <h1>Welcome to our new app πŸš€</h1>
  );
};
description type
installPrompt Show install prompt () => Promise<void>
isInstalled Is app installed on device boolean
isStandalone Is app run in standalone mode boolean
isOffline Is app run in offline mode boolean
canInstall Device can install app boolean
userChoice Prompt user choice 'accepted' | 'dismissed' | 'unknow'

usePwaAppSize usage

Choose app launching width and height (only in desktop standalone mode).

import { usePwaAppSize } from '@dotmind/react-use-pwa';

const App = () => {
  usePwaAppSize(400, 560);

  return <AppProvider />;
};
arguments description required default value
width App width false 800
height App height false 800
options App options false { fixed: false }

App options

option description type
fixed User can't resize app width & height boolean

⚑️ Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

πŸ” License

MIT

About

Prompt to install Progressive Web App and more with React hooks.

License:MIT License


Languages

Language:TypeScript 100.0%