Package Exports
- @dotmind/react-use-pwa
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@dotmind/react-use-pwa) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@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-pwaor
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.