{"id":14962879,"url":"https://github.com/swizec/useauth","last_synced_at":"2025-05-14T17:05:18.809Z","repository":{"id":35055627,"uuid":"200542038","full_name":"Swizec/useAuth","owner":"Swizec","description":"The simplest way to add authentication to your React app. Supports various providers.","archived":false,"fork":false,"pushed_at":"2023-01-11T19:53:29.000Z","size":12168,"stargazers_count":2589,"open_issues_count":157,"forks_count":110,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-05-14T17:03:45.199Z","etag":null,"topics":["auth0","gatsby","netlify-identity","nextjs","react","reacthooks","reactjs","useauth","xstate"],"latest_commit_sha":null,"homepage":"https://useauth.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Swizec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-04T21:11:28.000Z","updated_at":"2025-04-27T02:55:36.000Z","dependencies_parsed_at":"2023-01-15T13:01:19.974Z","dependency_job_id":null,"html_url":"https://github.com/Swizec/useAuth","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Swizec%2FuseAuth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Swizec%2FuseAuth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Swizec%2FuseAuth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Swizec%2FuseAuth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Swizec","download_url":"https://codeload.github.com/Swizec/useAuth/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254190396,"owners_count":22029632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auth0","gatsby","netlify-identity","nextjs","react","reacthooks","reactjs","useauth","xstate"],"created_at":"2024-09-24T13:30:38.728Z","updated_at":"2025-05-14T17:05:18.739Z","avatar_url":"https://github.com/Swizec.png","language":"TypeScript","readme":"\u003ch1 align=\"center\"\u003euseAuth\u003c/h1\u003e\n\u003ch2 align=\"center\"\u003ethe quickest way to add authentication to your React app\u003c/h2\u003e\n\u003cp\u003e \n  \u003ca href=\"#contributors-\"\u003e\n    \u003cimg alt=\"All Contributors\" src=\"https://img.shields.io/badge/all_contributors-20-orange.svg?style=round-square\"/\u003e\n  \u003c/a\u003e\n  \u003cimg alt=\"Version\" src=\"https://img.shields.io/badge/version-2.0.0-green.svg?cacheSeconds=2592000\" /\u003e\n  \u003ca href=\"https://github.com/Swizec/useAuth/blob/master/LICENSE\"\u003e\n    \u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" target=\"_blank\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://useAuth.dev\"\u003e\u003cimg src=\"https://useauth.dev/useauth-card.png\" alt=\"useAuth.dev\" title=\"useAuth.dev\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n## Getting Started\n\n[`useAuth`](https://useauth.dev) is designed to be quick to setup. You'll need an account with Auth0 or Netlify Identity and the appropriate access keys.\n\n### 1. Install the hook\n\n```\n$ yarn add react-use-auth\n```\n\nDownloads from npm, adds to your package.json, etc. You can use npm as well.\n\n### 2. Install your auth client\n\n[`useAuth`](https://useauth.dev) does not install its own authentication clients. Instead they're marked as peer dependencies.\n\nInstall `auth0-js` or `netlify-identity-widget` depending on what you'd like to use. More coming soon :)\n\n```\n$ yarn add auth0-js\n```\n\nor\n\n```\n$ yarn add netlify-identity-widget\n```\n\nYou'll see warnings about missing peer dependencies for the client you aren't using. That's okay.\n\n### 3. Configure with AuthConfig\n\n[`useAuth`](https://useauth.dev) uses an `\u003cAuthConfig\u003e` component to configure your authentication client. We use XState behind the scenes to manage authentication state for you.\n\nEnsure `AuthConfig` renders on every page.\n\nWith Gatsby, add it to `gatsby-browser.js`. With NextJS, `_app.js` is best. You don't _need_ to wrap your component tree, but you can if you prefer. We make sure useAuth doesn't break server-side rendering. ✌️\n\n```jsx\n// gatsby-browser.js\nimport * as React from \"react\";\nimport { navigate } from \"gatsby\";\n\nimport { AuthConfig } from \"react-use-auth\";\nimport { Auth0 } from \"react-use-auth/auth0\";\n\nexport const wrapRootElement = ({ element }) =\u003e (\n    \u003c\u003e\n        \u003cAuthConfig\n            navigate={navigate}\n            authProvider={Auth0}\n            params={{\n                domain: \"useauth.auth0.com\",\n                clientID: \"GjWNFNOHqlino7lQNjBwEywalaYtbIzh\"\n            }}\n        /\u003e\n        {element}\n    \u003c/\u003e\n);\n```\n\n`\u003cAuthConfig\u003e` initializes the global XState state machine, sets up an Auth0 client, and validates user sessions on every load. You now have easy access to authentication in your whole app :)\n\nThe config options are:\n\n1. `navigate` – your navigation function, used for redirects. Tested with Gatsby, NextJS, and React Router. Anything should work.\n\n2. `authProvider` – the useAuth interface to your authentication provider.\n\n3. `params` – parameters for your authentication provider\n\n[`useAuth`](https://useauth.dev) client wrappers provide smart defaults.\n\nMore detail on using custom configuration for each client in [Use with Auth0](https://useauth.dev/docs/auth0), and [Use with Netlify Identity](https://useauth.dev/docs/netlify-identity). To learn about how this works, go to [Create an auth provider](https://useauth.dev/docs/auth-providers)\n\nPS: feel free to use my Auth0 domain and clientID to see if [`useAuth`](https://useauth.dev) is a good fit for you. That's why they're visible in the code snippet 😊\n\n### 4. Create the callback page\n\nAuth0 and most other authentication providers use OAuth. That requires redirecting your user to their login form. After login, the provider redirects users back to your app.\n\nYou can skip this step with Netlify Identity. It uses an in-page popup.\n\nAny way of creating React pages should work, here's the code I use for Gatsby:\n\n```jsx\nimport * as React from \"react\"\nimport { useAuth } from \"react-use-auth\"\n\nconst Auth0CallbackPage = () =\u003e {\n    const { handleAuthentication } = useAuth()\n    React.useEffect(() =\u003e {\n        handleAuthentication()\n    }, [handleAuthentication])\n\n    return (\n        \u003ch1\u003e\n            This is the auth callback page,\n            you should be redirected immediately!\n        \u003c/h1\u003e\n    )\n}\n\nexport default Auth0CallbackPage\n```\n\nThe goal is to load a page, briefly show some text, and run the `handleAuthentication` method from [`useAuth`](https://useauth.dev) on page load.\n\nThat method will create a cookie in local storage with your user's information and redirect back to homepage. You can pass a `postLoginRoute` param to redirect to a different page.\n\nMake sure you add `\u003cdomain\u003e/auth0_callback` as a valid callback URL in your Auth0 config.\n\n### 5. Enjoy useAuth\n\nYou're ready to use [`useAuth`](https://useauth.dev) for authentication in your React app. 🤘\n\nHere's a login button for example:\n\n```jsx\nconst Login = () =\u003e {\n    const { isAuthenticated, login, logout } = useAuth();\n\n    if (isAuthenticated()) {\n        return \u003cButton onClick={logout}\u003eLogout\u003c/Button\u003e;\n    } else {\n        return \u003cButton onClick={login}\u003eLogin\u003c/Button\u003e;\n    }\n};\n```\n\n`isAuthenticated` is a method that checks if the user's cookie is still valid.\n\n`login` and `logout` trigger their respective actions.\n\nYou can even say hello to your users:\n\n```jsx\n// src/pages/index.js\n\nconst IndexPage = () =\u003e {\n  const { isAuthenticated, user } = useAuth()\n\n  return (\n    \u003cLayout\u003e\n      \u003cSEO title=\"Home\" /\u003e\n      \u003ch1\u003eHi {isAuthenticated() ? user.name : \"people\"}\u003c/h1\u003e\n  )\n}\n```\n\nCheck `isAuthenticated` then use the `user` object. ✌️\n\n---\n\nFor more detailed docs visit [useAuth.dev](https://useauth.dev)\n\n---\n\nYou can try it out here 👉 https://gatsby-useauth-example.now.sh/\n\n## Author\n\n👤 **Swizec Teller \u003cswizec@swizec.com\u003e**\n\n-   Github: [@swizec](https://github.com/swizec)\n-   Twitter: [@swizec](https://twitter.com/swizec)\n-   Blog: [swizec.com/blog](https://swizec.com/blog)\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome!\u003cbr /\u003eFeel free to check [issues page](https://github.com/Swizec/useAuth/issues).\n\nI am looking to support other authentication providers. Please help :)\n\n## Show your support\n\nGive a ⭐️ if this project helped you!\n\n## 📝 License\n\nCopyright © 2019 [Swizec Teller \u003cswizec@swizec.com\u003e](https://github.com/swizec).\u003cbr /\u003e\nThis project is [MIT](https://github.com/Swizec/useAuth/blob/master/LICENSE) licensed.\n\n---\n\n_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/dejanstrancar\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/3260215?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDejan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#example-dejanstrancar\" title=\"Examples\"\u003e💡\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://jasonformat.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/105127?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJason Miller\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=developit\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://graham.now.sh\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/4955937?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGraham Barber\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#question-puregarlic\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/MateusGabi\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/14940643?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMateus Gabi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=MateusGabi\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://jgalat.dev/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/9066191?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJorge Galat\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=jgalat\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://swizec.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/56883?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSwizec Teller\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=Swizec\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/Swizec/useAuth/commits?author=Swizec\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#blog-Swizec\" title=\"Blogposts\"\u003e📝\u003c/a\u003e \u003ca href=\"#example-Swizec\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#maintenance-Swizec\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/NWRichmond\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/5732000?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNick Richmond\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=NWRichmond\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://olliemonk.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/7108120?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eOllie Monk\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=omonk\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/Swizec/useAuth/commits?author=omonk\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://henrikwenz.de/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/1265681?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHenrik Wenz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/issues?q=author%3AHaNdTriX\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://twitter.com/maxchehab\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/13038919?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMax Chehab\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=maxchehab\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://joelb.dev\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/6668097?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJoel Bartlett\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=murbar\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/smehdii\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/22805576?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSIDDIK MEHDI \u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=smehdii\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/sophister\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/219501?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJess\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/issues?q=author%3Asophister\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/vasco3\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/804301?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJorge Cuadra\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=vasco3\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.oyvinmar.com/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/364853?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eØyvind Marthinsen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=oyvinmar\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://feed.no\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/764318?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFredrik Søgaard\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=fredrik-sogaard\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://ottofeller.com\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/58164?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArtem Rudenko\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=gvidon\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/traverspinkerton\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/6158476?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTravers Pinkerton\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=traverspinkerton\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/erichodges\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/14981329?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEric Hodges\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=erichodges\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://fitzsimons.dev\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/3719502?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDevin Fitzsimons\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=aisflat439\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/jasonLaster\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/254562?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJason Laster\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=jasonLaster\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/Swizec/useAuth/commits?author=jasonLaster\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/Swizec/useAuth/issues?q=author%3AjasonLaster\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://patrick.wtf\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/667029?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePatrick Arminio\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/Swizec/useAuth/commits?author=patrick91\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswizec%2Fuseauth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswizec%2Fuseauth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswizec%2Fuseauth/lists"}