{"componentChunkName":"component---src-templates-blog-list-template-js","path":"/61","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"excerpt":"Being customer-centric has always been important in the retail business, but its definition has changed over time. Before, consumers had a…","fields":{"slug":"/growth/authentication-challenges-retail-industry/"},"html":"<p>Being customer-centric has always been important in the retail business, but its definition has changed over time. Before, consumers had a sense of satisfaction from attentive sales associates and a broad choice of merchandise. </p>\n<p>These days, the consumer wants a digital experience, too, regardless of whether they buy online. Consumers need to know they can trust retailers to protect their private information. Cybercriminals are targeting retailers' data stores as they gather customer data in unprecedented numbers. So, security <a href=\"https://www.loginradius.com/b2c-identity/\">authentication for B2C</a> is important.</p>\n<p>A few brands made headlines last year due to failing to protect customer data, such as Kmart, Forever 21, and Saks. The majority of people said they would postpone shopping at a breached brand for three months. </p>\n<p>Losing business means paying for remediation, business disruption, legal expenses, identity repair, regulatory penalties, and other clean-up costs. For each breach, this amount averages $7 million.</p>\n<h2 id=\"challenges-associated-with-authentication\" style=\"position:relative;\"><a href=\"#challenges-associated-with-authentication\" aria-label=\"challenges associated with authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Challenges Associated With Authentication</h2>\n<p>Security for retail authentication should be cost-efficient and ensure that users have a frictionless experience. Although retail has some distinct differences from other industries regarding identity and authentication, it also faces many challenges. Some of these include:</p>\n<h3 id=\"increased-turnaround-time-to-complete-the-checkout\" style=\"position:relative;\"><a href=\"#increased-turnaround-time-to-complete-the-checkout\" aria-label=\"increased turnaround time to complete the checkout permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Increased turnaround time to complete the checkout</strong></h3>\n<p><a href=\"https://www.loginradius.com/blog/fuel/improve-ecommerce-store-security/\">Security for retail authentication</a> is a critical feature for users. However, that can't be used as an excuse for reducing the turnaround time of the complete process. </p>\n<p>Organizations must ensure that they do not introduce time-taking steps. You need to maintain a delicate balance between the authentication features and the time taken to complete the process. For instance during a holiday or a festival sale, time taken for the checkout would be a critical component for the customers. </p>\n<h3 id=\"higher-chances-of-a-data-breach\" style=\"position:relative;\"><a href=\"#higher-chances-of-a-data-breach\" aria-label=\"higher chances of a data breach permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Higher chances of a data breach</strong></h3>\n<p>Along with providing authentication solutions, it is important to protect the digital identities of the employees as well as the customers. In today's world, maintaining data security is a challenge. Various information (credit card details and other customer details) might attract a lot of hackers which could potentially result in a data breach.</p>\n<h3 id=\"multiple-local-government-laws-to-comply-with\" style=\"position:relative;\"><a href=\"#multiple-local-government-laws-to-comply-with\" aria-label=\"multiple local government laws to comply with permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Multiple local government laws to comply with</strong></h3>\n<p>Cloud applications have made applications and data accessible from anywhere in the world. However, the local laws require several retailers to be tight over how and from where the employees can access the data. Additionally, various governments might have different regulations. Hence, complying with multiple rules at the same time might prove to be a challenge. </p>\n<p><a href=\"https://www.loginradius.com/resource/how-retail-and-consumer-goods-companies-use-loginradius-identity-solution/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABoUlEQVQY02PgVLP5D8J8Wg7/BXWdwFjEwPW/gJbdfx5Vq/8weRDmULH6z6Xt/F/EIvC/sJ7zf04dl/8cGvb/OVStIfJAmoFL3fY/m7Ll/+oZi/5vuXD1/8J9x/73rtj8P6y45b+uf/J/MRPP/+wqVnADuYGGyDlG/tdyCf/PbR70n13X/T8n0CAOqKUMMNurpi/6P3vnwf+NC1f/T22e+N+ne+X/mIkr/8vZh/5nVbIAawD5Qtbc+7+Usft/cSP3/zImHv8VrXz/ixm5AS21RhgIckHr/BX/d52//H/DiXP/p61a/z8krfh/U0Xlf32HgP/MSpZgxTya9v8lgS6WARoqa+HzX9oMaLip138hoPdh3mbgAhIsihb/t+0/9h8E3r57B8avXr74/+nTp/8ukVn/mRTM/jNIG/3Prun8f/XW3f/rtu//v3zjzv8rN+/6f+jkuf87D534LwAMezZlK1AYAg1UAhl4FGzg3fsP/9+6e///56/fwHy3mNz/DLImYDXm/gn/s4CGRufX/o/KrQHjpNLm/zH5dUDX2/1nB7oSAE+y9EUZrjnMAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"DS-retail-consumer-goods\"\n        title=\"DS-retail-consumer-goods\"\n        src=\"/static/1a79fcc72fbd8dbcc549ce424073c640/e5715/DS-retail-consumer-goods.png\"\n        srcset=\"/static/1a79fcc72fbd8dbcc549ce424073c640/a6d36/DS-retail-consumer-goods.png 650w,\n/static/1a79fcc72fbd8dbcc549ce424073c640/e5715/DS-retail-consumer-goods.png 768w,\n/static/1a79fcc72fbd8dbcc549ce424073c640/81501/DS-retail-consumer-goods.png 2886w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<h2 id=\"solving-these-challenges\" style=\"position:relative;\"><a href=\"#solving-these-challenges\" aria-label=\"solving these challenges permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Solving These Challenges</h2>\n<p>When retailers face these challenges, they should implement several strategies. To prevent the misuse of stolen credentials, eliminate inefficiencies, and provide a good user experience, it is highly recommended to implement a flexible access control platform. User management helps them in this regard. </p>\n<p>Some of the approaches retailers have adopted are:</p>\n<h3 id=\"fast-authentication-that-does-not-slow-users-down\" style=\"position:relative;\"><a href=\"#fast-authentication-that-does-not-slow-users-down\" aria-label=\"fast authentication that does not slow users down permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Fast authentication that does not slow users down</strong></h3>\n<p>A great combination of security and usability is provided when one uses adaptive authentication, which picks the best methods and factors based on the risk profile and usage history of each user and the devices used. A one-time passcode (OTP) is especially useful in this fast-paced world, as users cannot tolerate constant disruptions to access equipment.</p>\n<p>To meet such unique use cases, retail companies must pick <a href=\"https://www.loginradius.com/industry-retail-and-ecommerce/\">authentication vendors</a> that offer flexibility. Many retailers, for example, close the POS before clearing the browser, making it difficult to distinguish the devices. Cookies and device recognition will be flexible enough to meet this requirement.</p>\n<h3 id=\"sso-simplifies-the-sign-in-process-for-users\" style=\"position:relative;\"><a href=\"#sso-simplifies-the-sign-in-process-for-users\" aria-label=\"sso simplifies the sign in process for users permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>SSO simplifies the sign-in process for users</strong></h3>\n<p>Retailers who federate their legacy applications can use the same identity to access multiple applications and avoid providing credentials multiple times (SSO). The convenience of SSO, coupled with strong authentication, is unmatched. </p>\n<p>Many vendors offer tools that allow organizations to function without refactoring their applications. Self-Service password resets are also essential for retailers. By providing this feature, retailers can further alleviate the difficulty of managing passwords.</p>\n<h3 id=\"a-flexible-platform-that-can-be-used-by-employees-and-consumers\" style=\"position:relative;\"><a href=\"#a-flexible-platform-that-can-be-used-by-employees-and-consumers\" aria-label=\"a flexible platform that can be used by employees and consumers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>A flexible platform that can be used by employees and consumers</strong></h3>\n<p>Typical business-to-employee scenarios, like e-commerce portals, require a much different set of capabilities. Strong authentication can be incorporated into apps in a very flexible manner by selecting a vendor who has a broad set of capabilities.</p>\n<h3 id=\"implementing-pci-compliance-requirements\" style=\"position:relative;\"><a href=\"#implementing-pci-compliance-requirements\" aria-label=\"implementing pci compliance requirements permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Implementing PCI compliance requirements</strong></h3>\n<p><a href=\"https://www.loginradius.com/resource/loginradius-ciam-two-factor-authentication/+\">Two-factor authentication</a> is required for PCI compliance regardless of whether a user connects from a trusted network to PCI systems. Retailers must ensure they stay up-to-date on all of the latest requirements to protect their businesses and customers. </p>\n<h2 id=\"the-bottom-line\" style=\"position:relative;\"><a href=\"#the-bottom-line\" aria-label=\"the bottom line permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The Bottom Line</h2>\n<p>The ability to authenticate customers in real time using multiple modalities is challenging. Understanding how solutions vary by use case, threat model and authentication technology used is crucial to choosing the right one for your unique requirements. <a href=\"https://www.loginradius.com/contact-sales\">Contact us</a> for better understanding. </p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-demo\"\n        title=\"book-a-demo\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"October 26, 2021","updated_date":null,"description":"Losing business means paying for remediation, business disruption, legal expenses, identity repair, regulatory penalties, and other clean-up costs. Although retail has some distinct differences from other industries regarding identity and authentication, it also faces many challenges.","title":"What are the Authentication Challenges in the Retail Industry?","tags":["data security","retail authentication","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7094017094017093,"src":"/static/0a59842aecd3d8b02b26f6eff08f3c78/14b42/retail-auth.jpg","srcSet":"/static/0a59842aecd3d8b02b26f6eff08f3c78/f836f/retail-auth.jpg 200w,\n/static/0a59842aecd3d8b02b26f6eff08f3c78/2244e/retail-auth.jpg 400w,\n/static/0a59842aecd3d8b02b26f6eff08f3c78/14b42/retail-auth.jpg 800w,\n/static/0a59842aecd3d8b02b26f6eff08f3c78/16310/retail-auth.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rashmi Mathur","github":null,"avatar":null}}}},{"node":{"excerpt":"With the rising number of cyber threats, effective data encryption becomes crucial for any business regardless of the size and industry type…","fields":{"slug":"/identity/pki-future-secure-communications/"},"html":"<p>With the rising number of cyber threats, effective data encryption becomes crucial for any business regardless of the size and industry type. </p>\n<p>One of the essential methods to secure communication and mitigate data breaches is utilizing public key infrastructure (PKI). </p>\n<p>PKI is a common term used to describe everything used to manage and establish public-key encryption, which is fast becoming the <a href=\"https://www.loginradius.com/blog/identity/maintaining-quality-data-security-practices/\">best way to secure internet encryption</a>. </p>\n<p>With PKI, one can ensure that data is adequately encrypted during the transit, ensuring only the authorized user can access the data.</p>\n<p>However, many businesses aren’t yet leveraging this technique and could be on the verge of compromising their crucial business data or sensitive consumer information. </p>\n<p>Since PKI helps authenticate the identity of the users or devices communicating with each other, the chances of a data breach become negligible. </p>\n<p>Let’s understand what PKI is and how it’s paving the path for the secure encryption for businesses embarking on a journey to transform themselves digitally. </p>\n<h2 id=\"what-is-pki\" style=\"position:relative;\"><a href=\"#what-is-pki\" aria-label=\"what is pki permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is PKI</h2>\n<p>Public key infrastructure (PKI) can be defined as a framework that enables proper encryption of all the public keys, including their affiliated crypto-mechanisms. </p>\n<p>The overall mechanism of PKI is set to efficiently and securely manage keys along with certificates associated with it, which eventually creates a highly secure environment for both applications and devices. </p>\n<h2 id=\"where-is-it-used\" style=\"position:relative;\"><a href=\"#where-is-it-used\" aria-label=\"where is it used permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Where is It Used</h2>\n<p>PKI is one of the most reliable ways to <a href=\"https://www.loginradius.com/blog/fuel/good-transaction-security/\">secure online transactions</a> as it establishes the identity of two or more endpoints on a network. </p>\n<p>Businesses leveraging cloud services have a massive risk essential by unauthorized professionals or cybercriminals. Through the PKI technique, the flow of data through the network’s communication channels is encrypted. Only authorized users can access the same, eliminating any chances of sneak. </p>\n<p>Since we’re living in a digitally advanced world where data breaches and data leaks are quickly becoming the new normal, the critical role of PKI cannot be overlooked. PKI utilizes private keys and public keys for encryption and decryption, respectively, by leveraging digital certificates. </p>\n<p>Whether we talk about artificial intelligence or the Internet of Things, millions of devices are communicating with each other and granting and asking for access to specific resources. </p>\n<p>Business owners relying on third-party technology vendors aren’t aware of this communication between devices, which is perhaps why there’s a massive risk for enterprises leveraging cloud services. </p>\n<p>Suppose a cloud vendor isn’t compliant with security and data privacy regulations. In that case, the chances are that their consumers, i.e., enterprises, may face the consequences of data breach and brand tarnishing. </p>\n<p>Hence, businesses must ensure that they’re utilizing modern encryption techniques whenever they’re storing and managing their data, primarily through cloud deployments. </p>\n<h2 id=\"where-can-you-apply-pki\" style=\"position:relative;\"><a href=\"#where-can-you-apply-pki\" aria-label=\"where can you apply pki permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Where Can You Apply PKI</h2>\n<p>Enterprises can leverage the true potential of PKI through several ways in their daily processes when it comes to secure data transfer. Here’s the list: </p>\n<ul>\n<li>Secure web browsing through SSL (Secure Sockets Layer) or TLS (Transport Layer Security)</li>\n<li>Secure authentication </li>\n<li>Secure code-signing </li>\n<li>Email security for encrypting messages</li>\n<li>File security through encrypted file systems </li>\n<li>Secure Browsing (via SSL/TLS)</li>\n</ul>\n<h2 id=\"why-is-pki-the-future-of-secure-communications-in-2021-and-beyond\" style=\"position:relative;\"><a href=\"#why-is-pki-the-future-of-secure-communications-in-2021-and-beyond\" aria-label=\"why is pki the future of secure communications in 2021 and beyond permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why is PKI the Future of Secure Communications in 2021 and Beyond</h2>\n<h3 id=\"1-minimized-frauds\" style=\"position:relative;\"><a href=\"#1-minimized-frauds\" aria-label=\"1 minimized frauds permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Minimized frauds</h3>\n<p>Since PKI authenticates the identity of users accessing the information or resources, it significantly reduces the chances of a data breach. </p>\n<p>Through the two-key encryption systems, data is passed back and forth between two parties, and they both have a key to decrypt and encrypt the digital data. The one with the right key could access the data, which eventually mitigates the risk of a data breach during transit. </p>\n<h3 id=\"2-authentication-of-devices-users\" style=\"position:relative;\"><a href=\"#2-authentication-of-devices-users\" aria-label=\"2 authentication of devices users permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Authentication of devices/ users</h3>\n<p>One of the most important aspects of PKI with regards to security is the <a href=\"https://www.loginradius.com/authentication/\">secure authentication</a> of users and machines on a network. </p>\n<p>Robust authentication mechanisms like PKI ensure that the devices and users are the ones they claim to be and not any unauthorized professional impersonating any other user. </p>\n<h3 id=\"3-to-enable-single-sign-on\" style=\"position:relative;\"><a href=\"#3-to-enable-single-sign-on\" aria-label=\"3 to enable single sign on permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. To enable Single Sign-On</h3>\n<p>Businesses can leverage the true potential of PKI through Single Sign-On. Though PKI isn’t an SSO service through specific alterations, enterprises can also benefit from Single Sign-On through PKI. </p>\n<p><a href=\"https://www.loginradius.com/resource/loginradius-single-sign-on/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABkUlEQVQY002Qv0tbURiGL6LmemOLoCipMdVofmiutSTRm2gSbRKMQS0oqCRpQboZuTilHWpdJIP+IzqVthSKUhDSpU5OLg5dsmRTSCIO1cdzb0Lp8Jxz4Dvf+77fJ3W4IxhYPRE6vVFBrHF7DCIozbqBPDKN4kvQE1qheyJBh5pE9s4iu2aQm38k41BE85AawOVxMzg8gtPtxeefQg1o9KpRLK6mqGi0jidxxDOMJTdQtFXkFylhOtMwFHVT0CIeajBMej5BLBYl4H/J+voamWyGntFp2l2NpM8m0zhCS/QHF7AJ7AKHtsiAtsRT31xT0IgrGsKvUuSyG+TzW3x4X6BYLKLrOn3j/yUU9PrnsQuR5+Fl7ELcFkzzZKwx9r+R25whvpyccXdbp1wuU6lUTG7rdZLZbVoGp5D6/WzvHnJ59YfPP844+nrC8bdTSucXnJZ+06XGaRc7lhRTMMz3n7+AB65vbqhWq9RqNe7v/5J6qyMNBGkVptrrTfIfD8jtfCKr75q8K+zzZmePztGYubpHveXjbvKsd6kAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"DS-SSO\"\n        title=\"DS-SSO\"\n        src=\"/static/93476b7d6cd257f74ac39f36e32ef1b5/e5715/DS-SSO.png\"\n        srcset=\"/static/93476b7d6cd257f74ac39f36e32ef1b5/a6d36/DS-SSO.png 650w,\n/static/93476b7d6cd257f74ac39f36e32ef1b5/e5715/DS-SSO.png 768w,\n/static/93476b7d6cd257f74ac39f36e32ef1b5/81501/DS-SSO.png 2886w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<h3 id=\"4-highly-scalable\" style=\"position:relative;\"><a href=\"#4-highly-scalable\" aria-label=\"4 highly scalable permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Highly scalable</h3>\n<p>PKI is highly scalable when it comes to handling a massive number of users that are transacting simultaneously. </p>\n<p>With PKI, users maintain their security certificates and certificate authentication involving data exchange between a server and client only. Hence, the need for a third-party authentication server has vanished, which is why there’s no limit to the number of users supported using the PKI. </p>\n<h3 id=\"5-to-meet-compliance\" style=\"position:relative;\"><a href=\"#5-to-meet-compliance\" aria-label=\"5 to meet compliance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. To meet compliance</h3>\n<p>Different countries have set additional regulations when it comes to data storage, transfer, and collection. PKI helps businesses ensure they remain compliant with various data security and privacy regulations across the world.</p>\n<p>No matter where they’re storing or transferring data, they can always stay compliant with government regulations with PKI.</p>\n<h2 id=\"final-thoughts\" style=\"position:relative;\"><a href=\"#final-thoughts\" aria-label=\"final thoughts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Final Thoughts</h2>\n<p>Since the number of data breaches is surging day by day and consumer data is continuously at risk, businesses need to adopt the next level of secure infrastructure that not only offers regulatory compliance but eventually safeguards sensitive business and consumer data. </p>\n<p>PKI is a game-changer when it comes to managing secure access between devices and users without any hassle. Businesses can add <a href=\"https://www.loginradius.com/blog/identity/multi-factor-authentication-a-beginners-guide/\">another stringent layer of security</a> to their business process by implementing public key infrastructure. </p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-demo-loginradius\"\n        title=\"book-a-demo-loginradius\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"October 26, 2021","updated_date":null,"description":"With PKI, one can ensure that data is adequately encrypted during transit, ensuring only the authorized user can access the data. Let’s understand what PKI is and how it paves the path for secure encryption for businesses.","title":"Why is PKI The Future of Secure Communications","tags":["single sign-on","sso","authentication"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.694915254237288,"src":"/static/4619ee5b6c7710091504e927ad08617a/14b42/pki-cover.jpg","srcSet":"/static/4619ee5b6c7710091504e927ad08617a/f836f/pki-cover.jpg 200w,\n/static/4619ee5b6c7710091504e927ad08617a/2244e/pki-cover.jpg 400w,\n/static/4619ee5b6c7710091504e927ad08617a/14b42/pki-cover.jpg 800w,\n/static/4619ee5b6c7710091504e927ad08617a/16310/pki-cover.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Vishal Sharma","github":null,"avatar":null}}}},{"node":{"excerpt":"Why Follow React Coding Best Practices? Writing code to create apps isn't just enough; the code should be as clean and maintainable as your…","fields":{"slug":"/engineering/guest-post/react-best-coding-practices/"},"html":"<h2 id=\"why-follow-react-coding-best-practices\" style=\"position:relative;\"><a href=\"#why-follow-react-coding-best-practices\" aria-label=\"why follow react coding best practices permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why Follow React Coding Best Practices?</h2>\n<p>Writing code to create apps isn't just enough; the code should be as clean and maintainable as your app. Before jumping into the good practices to follow, it's essential to realize the reasons behind the same. It becomes crucial for you to understand coding conventions because of the following reasons:</p>\n<ol>\n<li>As a developer, you shall understand that writing code to build apps is not enough, but the code should also be <em>Reliable</em>, <em>Scalable</em>, and <em>Maintainable</em>. Generally, 40% - 80% of the total cost of software is spent on its maintenance.</li>\n<li><em>Readability is the priority</em>. Any software is seldom fully supported by one single developer; There is a whole team or group of people working on it. Furthermore, new developers always join the project team. Thus,  maintaining coding standards improves the product's readability that lets developers easily understand the codebase even faster.</li>\n<li>Like any product, the software must be well-packaged and clean. Following best coding practices helps you write clean code throughout the codebase by ensuring consistency.</li>\n</ol>\n<h2 id=\"starting-with-react-best-practices\" style=\"position:relative;\"><a href=\"#starting-with-react-best-practices\" aria-label=\"starting with react best practices permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Starting with React Best Practices</h2>\n<h3 id=\"code-structure\" style=\"position:relative;\"><a href=\"#code-structure\" aria-label=\"code structure permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Code Structure</h3>\n<p>There's basically no defined structure, but you should have a style to follow throughout the codebase. Thus, this section explains how you can structure your codebase for medium to large-sized apps.</p>\n<ol>\n<li>\n<p>Put all your imports in order at the very top of the code file. You shall ideally prioritize as follows:</p>\n<p><code>React imports</code> &#x3C;> <code>Library imports</code> &#x3C;> <code>import * as</code> &#x3C;> <code>import ./&#x3C;some file></code></p>\n<p>Make sure all your imports statements are on new lines, as this will make your imports clean and easy to understand for all the components, third-party libraries, etc.</p>\n</li>\n<li>Use <code>index.js</code> for each folder to export so that all the imports are referenced on the <code>index.js</code> file, and you don't have to write import statements again and again for every file.</li>\n<li>\n<p>It's easy to get confused about <em>whether to use double quotes (\" \") or single quotes (' ')</em> while working with React. The simple answer is: <code>maintain consistency</code> whatever you're using. </p>\n<p>Also, consider that you use double quotes (\" \") for <code>JSX</code> attributes and single quotes (' ') for the <code>JS</code> code (Follow the standard way or maintain consistency).</p>\n</li>\n<li>Most of the time, beginners merge two-three components inside a single file and play around with that. However, that's not a good practice to follow. Dividing the whole app into components and then working on it on a separate file is a good practice to maintain clean code.</li>\n<li>Do you sometimes use CSS styles with JSX? But it's a bad practice. Always make <code>classNames</code> for each element and put all the styling under respective CSS files only.</li>\n</ol>\n<h3 id=\"naming-conventions\" style=\"position:relative;\"><a href=\"#naming-conventions\" aria-label=\"naming conventions permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Naming Conventions</h3>\n<ol>\n<li>Your filenames should always have consistent casing and extension. Either use <code>.js</code> or <code>.jsx</code> as explained in code structure for extensions. And <code>PascalCase</code> or <code>camelCase</code> for filenames.</li>\n<li>In React, name your file the same as the React component inside that file i.e. without a hyphen in the filename. For example: <code>Registration-Form</code> → ❌. <code>RegistrationForm</code> → ✔️.</li>\n<li>Not only filename but also make sure that your <code>variables/functions/modules</code> filenames are consistent with cases.</li>\n<li>Use well-descriptive names for <code>variables/functions/modules/Actions</code>, keeping in mind that it is application-specific so that even a third party or new developer can easily understand you code.</li>\n<li>It's bad to use the underscore prefix ( _ ) for a React component's internal methods because underscore prefixes seem to be used as a convention in other languages to denote private objects or variables. But everything in JavaScript is public. And there is no native support for privacy. So, even if you add underscore prefixes to your properties, It'll not make them private. <code>_onClickSubmit() → ❌</code></li>\n<li>When making reducer functions, write <code>Action</code> types as <code>domain/eventNames</code>. For example: <code>ADD_TODO</code> and <code>INCREMENT</code> (in CAPITALS) as this matches the typical conventions in most programming languges for declaring the constant values.</li>\n<li>Talking about <code>cases</code> in a React component, use <code>PascalCase</code> for the same — and for their instances, use <code>camelCase</code>. For example:-</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">const loginForm = &lt;LoginForm /&gt;;</span>\n<span class=\"grvsc-line\">import LoginForm from &#39;./loginForm&#39;;</span></code></pre>\n<h3 id=\"files-and-folders\" style=\"position:relative;\"><a href=\"#files-and-folders\" aria-label=\"files and folders permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Files and Folders</h3>\n<ol>\n<li>Your app's directory structure shall be as follows:</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">└── /src</span>\n<span class=\"grvsc-line\">  ├── /assets - Contains static assets such as  images, svgs, company logo etc.</span>\n<span class=\"grvsc-line\">  ├── /components - reusable components like navigation bar, buttons, forms</span>\n<span class=\"grvsc-line\">  ├── /services - JavaSript modules</span>\n<span class=\"grvsc-line\">  ├── /store - redux store</span>\n<span class=\"grvsc-line\">  ├── /utils - utilities, helpers, constants.</span>\n<span class=\"grvsc-line\">  ├── /views/pages - majority of the app pages would be here</span>\n<span class=\"grvsc-line\">  ├── index.js</span>\n<span class=\"grvsc-line\">  └── App.js</span></code></pre>\n<ol start=\"2\">\n<li>Each component folder should have its respective files grouped under the same. It maintains the hierarchy throughout the codebase. The necessary files include:\n<code>Component.js</code>, <code>Component.css</code>, <code>Component.test.js</code></li>\n</ol>\n<h3 id=\"code\" style=\"position:relative;\"><a href=\"#code\" aria-label=\"code permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Code</h3>\n<ol>\n<li><em>Play the game of <a href=\"https://www.loginradius.com/blog/engineering/react-hooks-guide/\">HOOKS</a> by following all its rules</em>. You can read more about the rules <a href=\"https://www.smashingmagazine.com/2020/04/react-hooks-best-practices/\">here</a>. Either manually follow these rules or use an ESLint plugin called <code>eslint-plugin-react-hooks</code> which enforces these rules. So, add these rules while working on any project</li>\n<li>Remove <code>console. logs</code> — unless you have strong motivation why you would like it.</li>\n<li>Avoid multiple <code>if-else blocks</code>. Instead, use <code>ternary</code> — best for clean code practice</li>\n<li>Remove all <code>commented-out codes</code>. The biggest motivation for writing comments is the bad code that you write. It would be good to spend more time writing descriptive functions, methods, and filenames that are self-explanatory.</li>\n<li>Write <code>Tests</code> for each component. It's a good practice to write test cases for each component developed as it reduces the chances of getting errors when deployed. You can check all the possible scenarios through unit testing — and for that, some of the most commonly used React test frameworks you can use are <code>JEST</code> and <code>ENZYMES</code>.</li>\n</ol>\n<h3 id=\"good-commenting-practices\" style=\"position:relative;\"><a href=\"#good-commenting-practices\" aria-label=\"good commenting practices permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Good Commenting Practices</h3>\n<ol>\n<li>Use comments to explain <em>why you did something</em>, not <em>how you did it</em>. If you find yourself explaining  <em>how you did something</em>, then it's time to make your code self-explanatory.</li>\n<li>Another point is not to write comments that are obvious and redundant — for example:</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">// Prints out the sum of two numbers</span>\n<span class=\"grvsc-line\">console.log(sum);</span></code></pre>\n<ol start=\"3\">\n<li>Write comments that are legal, informative, explanatory of intent, and offer clarification,</li>\n</ol>\n<h3 id=\"es6\" style=\"position:relative;\"><a href=\"#es6\" aria-label=\"es6 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>ES6</h3>\n<ol>\n<li>Always destructure your props. Destructuring your props helps make your code cleaner and more maintainable. It also makes assigning object properties to variables feels like much less of a chore.</li>\n<li>Know where to use spread/rest operators. You shall read about it before actually using it.</li>\n<li>Try using <code>optional chaining</code> if possible.</li>\n<li>Use <code>const</code> instead of <code>var</code> or <code>let</code> . <code>const</code> lets you check that a variable should always stay constant. <code>let</code> indicates that the values of the variables can be changed.</li>\n<li>Start preferring <code>arrow functions</code> (= >) for more cleaner code. Arrow functions allow simplifying your code to a single line.</li>\n</ol>\n<h3 id=\"basics\" style=\"position:relative;\"><a href=\"#basics\" aria-label=\"basics permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Basics</h3>\n<ol>\n<li>Always ensure that your app is responsive.</li>\n<li>Your app should contain a proper <code>README.md</code> file that clearly details or explains your app. Clearly mention the features, functionalities, contributions guidelines, installation process, guide, etc.</li>\n<li>Do check that your app runs without any errors.</li>\n<li>Use <code>EsLint</code> throughout your codebase and other automation tools so that most of the best practices are maintained automatically for you.</li>\n<li>Consolidate duplicate code throughout the codebase.</li>\n</ol>\n<p>Please note that I haven't talked about automation extension and tools that can help you maintain most of the best practices easily without looking into separately. But, I wanted to bring this into consideration. Anyhow, you can use extensions like <code>prettier</code>, <code>EsLint</code>, <code>EditorConfig</code>, <code>PLOP</code> etc., to maintain your codebase efficiently.</p>\n<p>These are the best practices that I've learned practically over time by working in a team, reviewing my mates' codebase, observing open-source projects and repositories, and reading great resources, such as the <a href=\"https://reactjs.org/docs/getting-started.html\">offical React docs</a>. </p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>I hope you gained valuable insights. If you have more suggestions or practices that the React or dev community can follow, please to let us know.</p>\n<p>Until next time, keep learning, build awesome stuff, and uplift the community.</p>\n<p>By the way, if you want to <a href=\"https://www.loginradius.com/blog/engineering/user-authentication-react-application/\">add user registration and authentication to your React apps</a>, you can use LoginRadius. It helps you become more efficient and focus more on the core business features of your React apps.</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n</style>","frontmatter":{"date":"October 26, 2021","updated_date":null,"description":"Important React best practices every React developer should follow before, during, & after writing the code. To ensure code maintainability, keep these React coding best practices handy.","title":"32 React Best Practices That Every Programmer Should Follow","tags":["React"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/05fa72d6fb6ace5ecff9919a78a8ff56/ee604/Best-Practices.png","srcSet":"/static/05fa72d6fb6ace5ecff9919a78a8ff56/69585/Best-Practices.png 200w,\n/static/05fa72d6fb6ace5ecff9919a78a8ff56/497c6/Best-Practices.png 400w,\n/static/05fa72d6fb6ace5ecff9919a78a8ff56/ee604/Best-Practices.png 800w,\n/static/05fa72d6fb6ace5ecff9919a78a8ff56/f3583/Best-Practices.png 1200w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Anjali Rohira","github":"rohiraanjali","avatar":null}}}},{"node":{"excerpt":"In modern times, retailers use automation, machine learning, and other technological advances to supplement various aspects of their…","fields":{"slug":"/growth/b2c-enterprises-ciam-retail-supply-chain/"},"html":"<p>In modern times, retailers use automation, machine learning, and other technological advances to supplement various aspects of their operations. From their distribution networks to their shop fronts, successful companies are implementing new and emerging technologies.</p>\n<p>From the corporate end to the production center to the selling floor, technology is aiding retailers in gaining a more comprehensive picture of their daily operations. Companies can use systems like enterprise resource planning to verify their earnings independently. Businesses that use these data-rich reports and smart authentication make better decisions.</p>\n<p>Retailers can enhance not only their reporting capabilities but also their client experiences by incorporating more advanced technologies. Moreover, retailers who use technology can supply goods faster and easily track where they came from with the help of the <a href=\"https://www.loginradius.com/blog/identity/loginradius-identity-import-manager-data-migration/\">identity import manager</a><strong>.</strong> They are also using techniques to construct intelligent and more productive supply chains. </p>\n<h2 id=\"understanding-the-role-of-ciam-in-supply-chain-management\" style=\"position:relative;\"><a href=\"#understanding-the-role-of-ciam-in-supply-chain-management\" aria-label=\"understanding the role of ciam in supply chain management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Understanding the Role of CIAM in Supply Chain Management</h2>\n<p>Retailers hold access to a comprehensive range of technologies. From today's current options, such as RFID tags, to stimulating creativity, such as self-driving trucks, businesses will largely depend on computers to manage their daily operations. </p>\n<p>Mentioned below are some latest technologies that help companies to foster identity and access management in the supply chain. </p>\n<ul>\n<li><strong>Artificial Intelligence</strong></li>\n</ul>\n<p>Currently, AI assembles and collects client information and consumer audit trail, which retailers share with their manufacturers. This information is then employed to assist businesses in producing the correct amount of product, thereby reducing waste from overproduction. </p>\n<p>Retailers benefit from AI solutions that accumulate and analyze consumer data from social media, their purchasing habits, and other sources to render valuable business insights. Retailers who use this information make educated, data-driven decisions about when and ways to target consumers with the most definite promotion or deal.</p>\n<p><a href=\"https://www.loginradius.com/resource/loginradius-consumer-audit-trail\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABmElEQVQY00WRv09TURTHX4y0j/doS7RpCbVN0+IrpT+Ij0J/CCXQQhsqJLBIgIE4SrGTk+LiJDP/g04S4sAPExNhMExuLg4OMpWQFPIgYfpw7+PXTc79nnPPOd/vOblKuzGMNM14ji5Qj0lfoIjl221emtpTQEuU8OZmeZwu0Z4so/aOoj69rpOo2GSxIp2BKLrLjdrhQfX40LrjuENJ3EYO1RgRDaJJNOipCUJj8yTKL9GyczhTFVtYvRFVrpmH6QobpJN9eL1eHE4Xjr4ZXKN19GjhTl3vLdJlTtI9UMFvVngyWCU4NMUjMe3tlIp0JLvRP0jGNEn1PyMSSxMvLTP1ZgOfWcPZkxdbjOCI5vEkxgjlpwnmXhDI1vAPVEW+cE8or7ZIns3tH1hnp/w/OqLZPKZ5fMLlhcXE4goPwkMoAZP62jp//v7jq6j9vLXLl2977B/+5vvBIZ3JcSFYQNHEJzyM5Nj5+Qt5Wq0WlmVxcX5ux5WlVZRgxq7Jzizz+t0nFhtrLKy+t+3V248sNT7QES/iFFNeATNG2+w/f3TlAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"DS-consumer-audit-trail\"\n        title=\"DS-consumer-audit-trail\"\n        src=\"/static/cb62a00a6d3359f1f12117d11756ddf3/e5715/DS-consumer-audit-trail.png\"\n        srcset=\"/static/cb62a00a6d3359f1f12117d11756ddf3/a6d36/DS-consumer-audit-trail.png 650w,\n/static/cb62a00a6d3359f1f12117d11756ddf3/e5715/DS-consumer-audit-trail.png 768w,\n/static/cb62a00a6d3359f1f12117d11756ddf3/81501/DS-consumer-audit-trail.png 2886w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<ul>\n<li><strong>Radio-Frequency Identification Devices</strong></li>\n</ul>\n<p>Retailers can use RFID tags to track assembly operations or individual products. Also, at the store level, employees can readily restock items after counting the number of RFID tags left for a product. </p>\n<p>Tags are used in the production center to ensure order accuracy and monitor the product’s shelf life. Also, businesses that use RFID tags as <strong>CIAM solutions</strong> for logistics can transport goods safely and get an exact estimate of the inventory by using these tags. </p>\n<ul>\n<li><strong>Internet of Things</strong></li>\n</ul>\n<p>The internet of things (IoT) refers to any device or object getting connected to the internet. The ability of the Internet of Things or <a href=\"https://www.loginradius.com/blog/identity/iot-smart-authentication/\">IoT authentication</a> to help businesses track every brand or item aids people in making quick and accurate decisions. </p>\n<p>Retailers can better distribute money and minimize lost time by integrating all stages of the distribution chain, from conception to product features in the store. A supply chain software firm, for example, uses IoT-connected gadgets to notify users of any issues with monitored products or user data security. </p>\n<p>The cellular-connected device provides companies with real-time notifications on the status of a shipment. If a shipment is damaged, companies get notified quickly and, if needed, can plan a substitute delivery using this application. </p>\n<ul>\n<li><strong>Automatic Robots</strong></li>\n</ul>\n<p>Intelligent machines have a lot of potentials to help vendors, from stockpiling robots to drone delivery companies. Robotics can help retail supply chain management businesses save time and money by speeding up processes and creating tracking data. Also, nowadays, many retail chains use robots in their storage facilities to help with inventory marketing and product delivery for <a href=\"https://www.loginradius.com/compliances/\">better privacy compliance</a><strong>.</strong> </p>\n<ul>\n<li><strong>Blockchain</strong></li>\n</ul>\n<p>Retailers benefit from blockchain because it provides a secure, time-stamped, and immutable record of an item or transaction. This technology gives businesses a bird's-eye view of a product's life, which helps them make better decisions and improve processes. </p>\n<p>Retailers can use blockchain technology to learn from and monitor how a collapse or malfunction occurred. Also, blockchain can help retail businesses overcome the challenges of credential stuffing by using multi-factor authentication as login services. </p>\n<p>MFA can assist companies in guarding their online data against cyber breaches to prevent loss of resources and customer trust. </p>\n<h2 id=\"the-bottom-line\" style=\"position:relative;\"><a href=\"#the-bottom-line\" aria-label=\"the bottom line permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The Bottom Line</h2>\n<p>Digital transformation is all about enhancing the customer experience by reducing online threats such as <a href=\"https://www.loginradius.com/resource/understanding-credential-stuffing-attacks-whitepaper\">credential stuffing attacks</a>. Digital technologies are transforming and improving the customer experience game, introducing new rules and opportunities that were previously unimaginable. Customer Identity and Access Management (CIAM) is a brand-new subset of Identity and Access Management (IAM), and it is primarily a component of the customer experience. </p>\n<p>Also, clients are now constantly anticipating deeper social connections supplied effortlessly and flawlessly, as digital interactions have become the principal mechanism for conversing with brands online using login services. </p>\n<p>Customers likewise expect some control over how companies collect, store, manage, and share their personal information. With the competition just a click away, your company's misuse of customer data, whether intentional or unintentional, can severely harm brand equity. <a href=\"https://www.loginradius.com/contact-sales\">Contact us</a> to secure your operations with LoginRadius today!</p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-demo-Consultation\"\n        title=\"book-a-demo-Consultation\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"October 25, 2021","updated_date":null,"description":"Retailers hold access to a comprehensive range of technologies. From today's current options, such as RFID tags, to stimulating creativity, such as self-driving trucks, businesses will largely depend on computers to manage their daily operations. Learn how they are incorporating CIAM in their environment.","title":"How B2C Industries are Leveraging CIAM in the Retail Supply Chain Management","tags":["ciam solution","iot authentication","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/016bed2c5a679d77551a34559108dc2a/14b42/retail-supply-chain-cover.jpg","srcSet":"/static/016bed2c5a679d77551a34559108dc2a/f836f/retail-supply-chain-cover.jpg 200w,\n/static/016bed2c5a679d77551a34559108dc2a/2244e/retail-supply-chain-cover.jpg 400w,\n/static/016bed2c5a679d77551a34559108dc2a/14b42/retail-supply-chain-cover.jpg 800w,\n/static/016bed2c5a679d77551a34559108dc2a/47498/retail-supply-chain-cover.jpg 1200w,\n/static/016bed2c5a679d77551a34559108dc2a/0e329/retail-supply-chain-cover.jpg 1600w,\n/static/016bed2c5a679d77551a34559108dc2a/d8255/retail-supply-chain-cover.jpg 1920w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Navanita Devi","github":null,"avatar":null}}}},{"node":{"excerpt":"In a digitally advanced business ecosystem, the C-level executives are finding ways to leverage technology to its peak to ensure the highest…","fields":{"slug":"/identity/sso-business-strategy/"},"html":"<p>In a digitally advanced business ecosystem, the C-level executives are finding ways to leverage technology to its peak to ensure the highest level of productivity and a seamless user experience that helps navigate business success. </p>\n<p>Assess management is one of the essential aspects that eventually helps drive success in challenging business environments where numerous competitors are just a click away. </p>\n<p>In such competitive business environments, SSO (Single Sign-On) becomes the need of the hour that helps establish a flawless user experience while providing the highest level of security and efficiency. </p>\n<p>Enterprises need to put their best foot forward in defining the right SSO strategy that fits right for their organization and helps pave the way for overall success. </p>\n<p>Let’s understand what SSO is, what it offers to businesses, the right SSO strategy, and how to implement it for business growth in the most challenging and competitive business environments. </p>\n<h2 id=\"what-is-sso-single-sign-on\" style=\"position:relative;\"><a href=\"#what-is-sso-single-sign-on\" aria-label=\"what is sso single sign on permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is SSO (Single Sign-On)</h2>\n<p><a href=\"https://www.loginradius.com/single-sign-on/\">Single Sign-On (SSO)</a> refers to the authentication process that allows your consumers to access various applications with a single set of login IDs and passwords and an active login session. The following are the two examples of the Single Sign-On environments:</p>\n<ul>\n<li>Consumers access multiple applications of the same provider. Consumers don't need to create and remember separate credentials for each application; they log in once and access the provider's various applications. Example: Google, Youtube, Gmail, etc.</li>\n<li>Employees access numerous applications daily. They don't need to create and remember separate credentials for each application; they can log in once and access various applications from the same organization. Example: HR Portal, Resource Portal, Organizational Account, etc.</li>\n</ul>\n<p>Since we now know what SSO is, let’s move towards understanding how to choose the right SSO strategy for your organization. </p>\n<h2 id=\"tips-to-choose-the-right-sso-strategy-for-your-business\" style=\"position:relative;\"><a href=\"#tips-to-choose-the-right-sso-strategy-for-your-business\" aria-label=\"tips to choose the right sso strategy for your business permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Tips to Choose the Right SSO Strategy For Your Business</h2>\n<h3 id=\"1-understand-the-business-and-consumer-benefits-of-using-sso\" style=\"position:relative;\"><a href=\"#1-understand-the-business-and-consumer-benefits-of-using-sso\" aria-label=\"1 understand the business and consumer benefits of using sso permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>#1. Understand the business and consumer benefits of using SSO</h3>\n<p>The first thing that businesses should know about SSO is <a href=\"https://www.loginradius.com/blog/identity/benefits-single-sign-on-sso/\">what benefits it offers</a> to their organization and its consumers. </p>\n<p>Every organization thinks adequately about investing in a specific technology. Similarly, businesses should first think about what business advancements they could get with SSO. Moreover, what would the benefit for their consumers be if they implement SSO. </p>\n<p>To help businesses quickly understand the benefits of SSO, we’ve listed some of the significant benefits of SSO for businesses as well as their consumers. </p>\n<p><strong>Benefits of SSO for Businesses</strong></p>\n<p>SSO offers endless possibilities to businesses leading to overall efficiency, security, and revenues growth. Here are some of the significant benefits of using SSO for enterprises: </p>\n<ul>\n<li><strong>Improves conversions and revenue:</strong> Customers can access all domains and services with a single active session.</li>\n<li><strong>Mitigates risk:</strong> Accessing third-party sites (user passwords are not stored or managed externally) becomes risk-free.</li>\n<li><strong>Unifies customer profiles:</strong> Creating a <a href=\"https://www.loginradius.com/customer-profiling\">single instance of the customer data</a> provides a centralized view of the customer across all channels.</li>\n<li>\n<p><strong>Reduces IT costs:</strong> Due to fewer help desk calls about passwords, IT can spend less time helping users remember or reset their passwords for hundreds of applications.</p>\n<p><strong>Benefits of SSO for Consumers</strong></p>\n</li>\n<li><strong>Seamless user experience:</strong> Consumers can use a single identity to navigate multiple web and mobile domains or service applications.</li>\n<li><strong>More robust password protection:</strong> Because users only need to use one password, SSO makes generating, remembering, and using stronger passwords simpler.</li>\n<li><strong>Reduces consumer time:</strong> The time spent on re-entering passwords for the same identity. Users will spend less time logging into various apps to do their work. Ultimately, it enhances the productivity of businesses.</li>\n</ul>\n<h3 id=\"2-identifying-actual-business-needs\" style=\"position:relative;\"><a href=\"#2-identifying-actual-business-needs\" aria-label=\"2 identifying actual business needs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>#2. Identifying Actual Business Needs</h3>\n<p>Once you’re aware of the business and consumer benefits of implementing SSO, it’s time to understand your actual business needs. The major challenge for most businesses is developing a scalable and secure infrastructure for managing access, delivering a flawless experience, and maintaining adequate security. </p>\n<p>Since every business is inclining towards cloud deployments, it’s time to think about <a href=\"https://www.loginradius.com/\">a cloud-based SSO provider</a> that ensures security, scalability and delivers a rich user experience. </p>\n<p>Hence businesses shouldn’t settle for the ones that aren’t yet delivering cloud-based services and should consider relying on SSO providers offering scalability, rich user experience, and security by meeting the essential regulatory compliances. </p>\n<h3 id=\"3-choosing-the-right-sso-partner\" style=\"position:relative;\"><a href=\"#3-choosing-the-right-sso-partner\" aria-label=\"3 choosing the right sso partner permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>#3. Choosing the right SSO partner</h3>\n<p>When it comes to choosing the right SSO provider, the market is flooded with endless options. However, businesses should understand that they need a cloud-based SSO provider like LoginRadius with <a href=\"https://www.loginradius.com/scalability/\">no code implementation and 100% uptime</a>. </p>\n<p>Let’s understand why LoginRadius is the best SSO provider for business in 2021 and beyond. </p>\n<h2 id=\"why-is-loginradius-sso-solution-better-than-its-competitors\" style=\"position:relative;\"><a href=\"#why-is-loginradius-sso-solution-better-than-its-competitors\" aria-label=\"why is loginradius sso solution better than its competitors permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why is LoginRadius SSO Solution Better Than Its Competitors?</h2>\n<p>LoginRadius guarantees unparalleled uptime 99.99% every month. The cloud-based identity provider manages 180K logins per second, 20 times more than its major competitors!</p>\n<p>Apart from delivering the industry's best consumer, the following are a few ways the platform excels compared to its competitors.</p>\n<ul>\n<li><strong>Auto scalable infrastructure:</strong> The platform offers an auto-scalable infrastructure to handle surges during daily and seasonal peak loads. It automatically accommodates data storage, account creation, consumer authentication, new applications, and more.</li>\n<li><strong>Scalability:</strong> LoginRadius ensures that it accommodates your continually growing consumer base. It can autoscale and handle hundreds of applications. The even better part is, there are no limitations to the number of users. Also, the LoginRadius Cloud Directory scales automatically to handle incremental data every time—in real-time.</li>\n<li><strong>Globally compliant:</strong> The LoginRadius platform also complies with major global compliances like the GDPR, CCPA, etc. You can keep track of your consumers, manage preferences, and customize the kind of consent consumers want. </li>\n<li><strong>Security Certifications:</strong> LoginRadius is compliant with international regulatory bodies like AICPA SOC 2, ISAE 3000, Cloud Security Alliance, Privacy Shield, and more.</li>\n</ul>\n<p><a href=\"https://www.loginradius.com/resource/authentication-sso-native-mobile-apps-datasheet\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABgklEQVQY00WRyS9DURTGXxAdKEIRqua5rbntq6FUW1UzC7MES4KVlbKx4v8QsZAQC1NiYcXGzoIIEWJDJMLO8HPfo9zky7nnnO9855x7JV1hPQr0RQ3EFruJLXH/WIEYEQvnFWjza9FbvBjlXpLKvOisPrTFjWgL6lQoHCksZiz3kWBpEiJuDFYvieV+UmvaSLA2/5F1wsbYfJg9g5T6BtA7+9DYWtD/5hWeFL5kONuxePspcPeR5erCUNqERnSPt3rQiMnihJ9ubyPDIWBvJbmyBVN1gExRl2YPklzh/59QEVSE5O4JXAI2/6AoCpIi95BYFVRXDa9tFIWZrk7McgcmR7toEsRQ0viXVwWjcmXWtvZ4fHrm4uqGm9s7bu8feHx+oXloiohsB5KpiunQKueX12zuHrG+vc/GziHHp2ccHJ8Qb/EQnVeLpLxfZI6TfRFUztvbKx/v73x9fap+YGwGyVyjNnV2jTO1sMLI3CLDMyGGZ0NMzi8zOrekfqJGbPoNCAzffBRitnoAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"native-mobile\"\n        title=\"native-mobile\"\n        src=\"/static/347814b732b0a12eadb1b994f77d5145/e5715/native-mobile.png\"\n        srcset=\"/static/347814b732b0a12eadb1b994f77d5145/a6d36/native-mobile.png 650w,\n/static/347814b732b0a12eadb1b994f77d5145/e5715/native-mobile.png 768w,\n/static/347814b732b0a12eadb1b994f77d5145/63ff0/native-mobile.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<h2 id=\"are-you-ready-to-experience-a-future-ready-sso\" style=\"position:relative;\"><a href=\"#are-you-ready-to-experience-a-future-ready-sso\" aria-label=\"are you ready to experience a future ready sso permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Are You Ready to Experience a Future-Ready SSO?</h2>\n<p>Single Sign-On improves consumer experience and boosts productivity by a considerable margin.</p>\n<p>By implementing the benefits of the LoginRadius SSO as a unified solution, you increase business agility, security, convenient and streamlined experience for your business and consumers alike.</p>\n<p>Need more information about how SSO benefits your business? <a href=\"https://www.loginradius.com/contact-sales\">Contact us</a> for a free personalized demo.</p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"LoginRadius Book a Demo\"\n        title=\"LoginRadius Book a Demo\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"October 25, 2021","updated_date":null,"description":"In a competitive business environment, SSO (Single Sign-On) establishes a flawless user experience while providing the highest level of security and efficiency. Enterprises need to put their best foot forward in defining the right SSO strategy that fits right for their organization and helps pave the way for overall success.","title":"How to Find the Right SSO Strategy that Fits Your Business","tags":["sso provider","data security","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.6666666666666667,"src":"/static/9ee0ca32d702202c88c94a13e4abe12b/14b42/sso-business-strategy.jpg","srcSet":"/static/9ee0ca32d702202c88c94a13e4abe12b/f836f/sso-business-strategy.jpg 200w,\n/static/9ee0ca32d702202c88c94a13e4abe12b/2244e/sso-business-strategy.jpg 400w,\n/static/9ee0ca32d702202c88c94a13e4abe12b/14b42/sso-business-strategy.jpg 800w,\n/static/9ee0ca32d702202c88c94a13e4abe12b/16310/sso-business-strategy.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Manish Tiwari","github":null,"avatar":null}}}},{"node":{"excerpt":"A Progressive Web App (PWA) is a more dynamic web application that can run as a standalone. It offers benefits such as:  performance; the…","fields":{"slug":"/engineering/guest-post/how-to-build-a-progressive-web-app-with-react/"},"html":"<p>A Progressive Web App (PWA) is a more dynamic web application that can run as a standalone. It offers benefits such as: </p>\n<ul>\n<li>performance;</li>\n<li>the ability to work with or without an internet connection;</li>\n<li>platform-specific; and, </li>\n<li>installable.</li>\n</ul>\n<blockquote>\n<p>You can learn more about the <a href=\"https://www.loginradius.com/blog/engineering/progressive-app-vs-native-app/\">differences between native apps and PWAs here.</a></p>\n</blockquote>\n<p>In this article, you're going to learn how to build a PWA using React. As React is a popular web framework, this article starts by going over the setup, development process, and spinning it up to see how it looks. For this example, you'll create a simple Counter Page that simply adds or subtracts a number based on button controls.</p>\n<h2 id=\"create-a-react-app-with-the-progressive-web-app-template\" style=\"position:relative;\"><a href=\"#create-a-react-app-with-the-progressive-web-app-template\" aria-label=\"create a react app with the progressive web app template permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a React App with the Progressive Web App Template</h2>\n<p>Before you can begin coding, you need to set up your project. Let's start by ensuring you can use React (if you're already familiar with coding in React, you can probably skip this section!). You need to use Node.js with any development using web frameworks such as Angular, React, or Vue -- especially if you wish to use libraries and packages to assist in developing your project. </p>\n<p>A popular utility in using such packages and libraries is the Node Package Manager, simply referred to as \"npm\". This utility allows you to install/uninstall packages, start your React application build using webpack, and many more other features. For your needs, you can take advantage of npm to create a React application with a PWA template, which allows you to code right away. Whenever you start building a React app, you can use templates offered by Facebook using the 'create-react-app' command with npm. </p>\n<p>Let's build the PWA starter app by running the following command:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">npx create-react-app name-of-our-PWA-app --template cra-template-pwa</span></span></code></pre>\n<p>The above command can be broken down as follows:</p>\n<ul>\n<li><strong>npx</strong>: Every npm command needs to start with npm (or essentially with whatever node package manager you have installed, but 'npx' is used here, which comes with npm version 5.2.0). This helps you run npm packages and <a href=\"https://nodejs.org/en/learn/getting-started/an-introduction-to-the-npm-package-manager\">takes care of many features</a>.</li>\n<li><strong>create-react-app</strong>: This command initiates the popular Create React App utility that helps you build the starter react project.</li>\n<li><strong>name-of-our-PWA-app</strong>: This is a filler title of your application. Name the app to whatever you would like. Here, the default 'my-app' name is used)</li>\n<li><strong>--template</strong>: This is an argument. When you have an argument, you're essentially enabling an option in the same command. Here, you can specify a specific template for our starter react application.</li>\n<li><strong>cra-template-pwa</strong>: The name of the PWA template for your PWA react application.</li>\n</ul>\n<p>Hitting 'Enter' after this command should initiate the build of your starter PWA React application. You should see a stream of prompts in your command-line interface. It may take a few minutes, but if you can see this screen after the command, you have created the project.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 592px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 60.641891891891895%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAABdUlEQVQoz6VSa0/CQBA8jICU8hI1ooDiBxEQebWUUh4VWkAQG///jxl3r2AaUgyJH+Z2+7i5udkRKd1G0V6jMF7i0dnizv7A7WSFwnQlnxmX5hxJbYJIow9R1yG4HkOsPUTWcpGxHKSNd6jaVG5WCVxT+hQqIUPfTiIUNQ2Jvo300JEbc4OZ3Mx95NWAeO5AVLt+3ZP9RcpLkklGLhRW1ZtA6Y0lWGGiO5Iq2Zqz5uAEhfSDQgpTRMqb9yRK1yeNty2q/vVDCQ+ffcKpJEzufOPriheN0PNR3VWyR4JJanq4BbwkDFteO07KWBEj1hr6oKHFOxaiLRPnbyYuOiNEqfL7cIV08g1FprL0cE/xYRTfN6i4XyjNNtSv8bTwZM9R4r48/8TDfCuHJxUHCfnEa4pNzpjJCedp2lcUoeyulwqCKgJ9aIxEQ4dKBPnxQsbkEEenWT8SH/ZJJek8FPbo13SJYH8iMqaDsuORh98ouR5E0/wXfgDK9lnyHdvUOwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"cra-pwa.png\"\n        title=\"cra-pwa.png\"\n        src=\"/static/56f2c5d2b65cd178c1206a0e8d63a829/1b853/cra-pwa.png\"\n        srcset=\"/static/56f2c5d2b65cd178c1206a0e8d63a829/1b853/cra-pwa.png 592w\"\n        sizes=\"(max-width: 592px) 100vw, 592px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 388px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 110.30927835051547%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACFklEQVQ4y6WUX2/SYBjF3xYKtIU6Bkjihc6NiMg/LdACZdIV1rXMkQhzMNmM+i1k3hgT7zSZH2n3Gv1Exwc6Q8ySxZaLk7dp2l/OeXqesuyDe0h1isioj5DNpJDNppFObyKVTt6uVBIZejaXz2Ent42th/eRp2vGphcQX3+EMpsj/vYTlPefwZ1egE3mYNO5d96mkw+eJtcSvv+E9PUK7MsVuMvfYJe/wL79CC4xX8BdTYXUHULuDhAua2BbebCdAth2AEUqbShqH5IzgezOILQdsFIzuKJlA8n6EJJ9Aql3DLH/ElylBfakAVbU/CtSaWKz1YN8MCXgCLL9ak1gtUm12YPszKAcvkHEcMm6FhwYLumQ2wcI6/sIqaZ3s1D3ziBQjoDR9gCx50OE6+YKEtQhX2ogYZhIvHgHoWGBPVbXA4aKNaQ1g2Z4BtEcIVQzV5GDiKPuxDSbgNTD/jH4qkHu1pghX25Aae0ugVFjQJFrHijoLMOlFjI6rZ0zhWhdl7qo//uQH2iIHCaNhcNTxN0zJNxzKvcU/LPdldu/0P8B86U6NggY2xsj1j3yNsaiWT7tgKN5cuWmX4d1ctgh4GgJk/cXOz1e7rVkjRGh0vsC8kXqYcskGEW2JwRwPcCiOgv5jSyQQ6njej2kf+Ii6o0X/TgUVR13rEPEB+eI04cR9N7NYvuKXO0QxKaoDu2y5X3ZNVbvD+uGhwaPXliAAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"pwa-folder-structure.png\"\n        title=\"pwa-folder-structure.png\"\n        src=\"/static/33577ffd80429d8835275ec6105f302a/96c67/pwa-folder-structure.png\"\n        srcset=\"/static/33577ffd80429d8835275ec6105f302a/96c67/pwa-folder-structure.png 388w\"\n        sizes=\"(max-width: 388px) 100vw, 388px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Here, you can see the following folder structure of your application so far. There are a few files that you shall pay attention to when it comes to PWA's:</p>\n<ul>\n<li><strong><code>service-worker.js</code></strong>: This is a script that runs in the background once your application starts running. The service worker makes sure that you can use your React application offline and handle multiple requests for the UI. (<a href=\"https://developers.google.com/web/fundamentals/primers/service-workers?hl=en\">learn more here</a>)</li>\n<li><strong><code>manifest.json</code></strong>: This is basically a configuration file that lists different properties that you can customize specifically for progressive web applications. It can determine such things as icons, names, and colors to use when the application is displayed.</li>\n<li><strong><code>serviceWorkerRegistration.js</code></strong>: This file does the job of telling whether or not your service worker was successfully registered. If you look into the file, you'll notice multiple console logs that will be displayed depending on the status of the service worker once you deploy your application.</li>\n</ul>\n<h2 id=\"adding-a-simple-react-component\" style=\"position:relative;\"><a href=\"#adding-a-simple-react-component\" aria-label=\"adding a simple react component permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Adding a Simple React Component</h2>\n<p>For your project, you'll build a simple Counter component, similar (if not exactly the same) to the example provided in the React docs: <a href=\"https://reactjs.org/docs/hooks-state.html\">Hooks State</a></p>\n<p>Let's start by creating a Counter component. Here, it is named as <code>Counter.jsx</code> and placed in a <code>components</code> folder.</p>\n<p>To speed things up, you can copy and paste the following code in your specific files. Here, it is built out as a simple page and some generic stylings for the component.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"jsx\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">//Counter.jsx</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">React</span><span class=\"mtk1\">, { </span><span class=\"mtk12\">useState</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;react&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Button</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;@mui/material/Button&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">function</span><span class=\"mtk1\"> </span><span class=\"mtk11\">Counter</span><span class=\"mtk1\">(</span><span class=\"mtk12\">props</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk4\">let</span><span class=\"mtk1\"> [</span><span class=\"mtk12\">count</span><span class=\"mtk1\">, </span><span class=\"mtk12\">setCount</span><span class=\"mtk1\">] = </span><span class=\"mtk11\">useState</span><span class=\"mtk1\">(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk4\">function</span><span class=\"mtk1\"> </span><span class=\"mtk11\">increment</span><span class=\"mtk1\">() {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk11\">setCount</span><span class=\"mtk1\">(</span><span class=\"mtk12\">count</span><span class=\"mtk1\"> + </span><span class=\"mtk7\">1</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk4\">function</span><span class=\"mtk1\"> </span><span class=\"mtk11\">decrement</span><span class=\"mtk1\">() {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk11\">setCount</span><span class=\"mtk1\">(</span><span class=\"mtk12\">count</span><span class=\"mtk1\"> - </span><span class=\"mtk7\">1</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">return</span><span class=\"mtk1\">(</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">style</span><span class=\"mtk1\">=</span><span class=\"mtk4\">{</span><span class=\"mtk1\">{</span><span class=\"mtk12\">textAlign:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;center&#39;</span><span class=\"mtk1\">}</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">h3</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Counter App</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">h3</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Button</span><span class=\"mtk1\"> </span><span class=\"mtk12\">variant</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;contained&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">onClick</span><span class=\"mtk1\">=</span><span class=\"mtk4\">{</span><span class=\"mtk12\">increment</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">+</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Button</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk4\">{</span><span class=\"mtk12\">count</span><span class=\"mtk4\">}</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Button</span><span class=\"mtk1\"> </span><span class=\"mtk12\">variant</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;contained&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">onClick</span><span class=\"mtk1\">=</span><span class=\"mtk4\">{</span><span class=\"mtk12\">decrement</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">-</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Button</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    );</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">};</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">export</span><span class=\"mtk1\"> </span><span class=\"mtk15\">default</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Counter</span><span class=\"mtk1\">;</span></span></code></pre>\n<p><strong>Note:</strong> Here, Material UI's Button component is used. You don't need to and can substitute the Button component with:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"jsx\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">button</span><span class=\"mtk1\"> </span><span class=\"mtk12\">onClick</span><span class=\"mtk1\">=</span><span class=\"mtk4\">{</span><span class=\"mtk12\">increment</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">+</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">button</span><span class=\"mtk17\">&gt;</span></span></code></pre>\n<p>To use Material UI, run the following npm commands:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">npm install </span><span class=\"mtk12\">@mui</span><span class=\"mtk1\">/material</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">npm install </span><span class=\"mtk12\">@emotion</span><span class=\"mtk1\">/react </span><span class=\"mtk12\">@emotion</span><span class=\"mtk1\">/styled //these are additional dependencies </span><span class=\"mtk15\">for</span><span class=\"mtk1\"> me to get Material UI working with the Counter component</span></span></code></pre>\n<h2 id=\"running-your-application\" style=\"position:relative;\"><a href=\"#running-your-application\" aria-label=\"running your application permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Running Your Application</h2>\n<p>In your command prompt, entering 'npm start' can spin up your application to a specific <code>http://localhost</code> url. You can start to see what work you've done so far.</p>\n<p>With these simple components, let's try to spin this application up and ensure it is working. </p>\n<p>Enter the command:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">npm start</span></span></code></pre>\n<p>This starts the application at a set <code>http://localhost</code> URL. Once the dev server is working and live on the command prompt, go to the URL to view the application. You should see something similar to this:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 11.384615384615385%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAATElEQVQI12OYOXvu/9lz5/2fPGXa/96+Cf/7+lFxf//E/w0tnWDcP2EihnwfUM+ECZP+z5o95/+MGTP/M/wnApx+9OP/+Sc/iVH6HwAEuITcBlSqFgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"counter-base-app.png\"\n        title=\"counter-base-app.png\"\n        src=\"/static/088d475708c50e6be837f5ddf9ee3534/e5715/counter-base-app.png\"\n        srcset=\"/static/088d475708c50e6be837f5ddf9ee3534/a6d36/counter-base-app.png 650w,\n/static/088d475708c50e6be837f5ddf9ee3534/e5715/counter-base-app.png 768w,\n/static/088d475708c50e6be837f5ddf9ee3534/7ebf9/counter-base-app.png 1919w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Now, it's all good and ready to have the app live and working, but more interested in the PWA aspect.</p>\n<h2 id=\"running-your-progressive-web-application\" style=\"position:relative;\"><a href=\"#running-your-progressive-web-application\" aria-label=\"running your progressive web application permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Running Your Progressive Web Application</h2>\n<p>Focus back on the <code>index.js</code> file. Make the following change:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"jsx\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">// If you want your app to work offline and load faster, you can change</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">// unregister() to register() below. Note this comes with some pitfalls.</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">// Learn more about service workers: https://cra.link/PWA</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">serviceWorkerRegistration</span><span class=\"mtk1\">.</span><span class=\"mtk11\">register</span><span class=\"mtk1\">(); </span><span class=\"mtk3\">//change the service worker registration from &#39;unregistered&#39; to &#39;registered&#39;</span></span></code></pre>\n<p>Essentially, changing the service worker from unregistered to registered will allow you to utilize the app even when it's offline, a key benefit when it comes to PWAs. Check Google's explanation on this topic for more information: <a href=\"https://web.dev/articles/service-workers-registration\">Service Worker Registration</a></p>\n<p>With the PWA files setup, in order to view the difference, you can deploy your application to a static server using the <code>serve</code> package that will serve your application to localhost. In a nutshell, make sure you have the <code>serve</code> package by installing, building the application again, and using <code>serve</code> to deploy the application:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">npm install serve</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">npm run build</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">serve -s build //</span><span class=\"mtk15\">if</span><span class=\"mtk1\"> you encounter an error with this command, </span><span class=\"mtk15\">try</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;npx serve -s build&#39;</span></span></code></pre>\n<p>Once you use the <code>serve</code> command, you should see the following message, having your application deployed to <code>http://localhost:5000</code>. It automatically adds the URL to your clipboard as well for quick pasting in your browser.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 359px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 54.038997214484674%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABtUlEQVQoz51S207bQBBdk0ICSri0qFBA4iYuSZ0Qr2MbX5JgyEUgEmgq2vKAkPj/fzicWTsqEby0D8dzPDsze2Zn1EZ7gI32EPv9MQ4Gd9jrjbCT3mDr4gbbAxubacz/ERZ1gorXxfH1BOVWF6ragvruv8fCWYRiM0aZwSUnwZLbxpJuY5G85GoUnYDnCebsAIX6uTkTq2rex1A13uTHUA6DmsQZoUMoN6JNaOOMt2hbUXYm3ItzX86DJFOobD9z6ghW2IEVs51GMNuGnYPcotJ3XJR5ScbNh8UUi6n0EmrYNyqtmiTkBU/dDPJuUy440cYnsUaU/UZhgc5vSR+7F9cMZuKxzhKYuB738Dm8wmqQkvex2Rlijf97vTFW6FNHDqwZha4MJkL4+IT0+QXV2wn0zz8GX6IrHHL6tdsHY+3RLzR/POJweI/6+De8hyd85SVmBvIEU4UWW1tgUYGsyLLfRYWQLSg0zs0mCJ/GfGqEmOO0S4ydb4TZwN4qnK+HqHC/ikySlZEgsbImUkgKCC+7HZRY3AzCvGmOmTf08/7rwf9BWp3WMDfp6O9O/Svc3DqhUf0KNFRAHuaCVJ0AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"pwa-serve.png\"\n        title=\"pwa-serve.png\"\n        src=\"/static/c9a8359e93f7d5a8f4ddea4944617655/f5eb6/pwa-serve.png\"\n        srcset=\"/static/c9a8359e93f7d5a8f4ddea4944617655/f5eb6/pwa-serve.png 359w\"\n        sizes=\"(max-width: 359px) 100vw, 359px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>If you enter the <code>http://localhost</code> URL in your browser, you should see something similar to this:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 40.15384615384615%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEElEQVQoz5XQ7U6DMBQG4F6Djm2ok+8CAxmZsjjjvQDTaKAgC2HTZHeoN+FN+Pu1K9PM+AeaPOnpaXpOW1I3r9hs3pDlBeJkhSR9+CPl4jgV0vTx337Cz7DiBdW6xjNjIOgwPj6/8M51GaTe7sCqBnWzxZp3yTImFGWFnJXI+c1XT6193ObKdj7E2SHPigpEn93hRPVxNtEwUQzI5wpOB2Nu9EuSxsJx7thgKGMoX0IaXYAsogWoZUPVDAThNW6iJSzqwjApZ0M3aC8kmM1hWi4UzYR/FSKcR7yQIzapPeWNTCiq0Rm5Xd5j6gV8oYsCvufBs3VRSNMtMfdB9rcyLQe2G8D1Zvy5Dv8C2vupP74BqkMz+jHTrhwAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"pwa-service-worker.png\"\n        title=\"pwa-service-worker.png\"\n        src=\"/static/90d0aef82baba4315cab1a1b8ce921e5/e5715/pwa-service-worker.png\"\n        srcset=\"/static/90d0aef82baba4315cab1a1b8ce921e5/a6d36/pwa-service-worker.png 650w,\n/static/90d0aef82baba4315cab1a1b8ce921e5/e5715/pwa-service-worker.png 768w,\n/static/90d0aef82baba4315cab1a1b8ce921e5/29114/pwa-service-worker.png 1920w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 id=\"pwa-features\" style=\"position:relative;\"><a href=\"#pwa-features\" aria-label=\"pwa features permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PWA Features</h2>\n<p>With the PWA React application live, let's take a look under the hood and open up the Developer Tools (for Google Chrome, entering F12 opens the Dev Tools).</p>\n<p>After registering your service worker from <code>index.js</code>, you should be able to see it running in the Application tab. Inside that tab, on the left side you should see a Service Workers section. From here, you can see for <code>http://localhost:5000</code>. You have a Service Worker from your <code>service-worker.js</code> file and is activated/running.</p>\n<p>In the section above, you can see <code>Manifest</code> -- opening that should show you the relevant details you listed from your <code>manifest.json</code> files.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 54.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABaklEQVQoz5WSvU7CUBiGewmCQEWkpS30FwopAamocfACpI2TYJwcHIyLJkYKRQaNUfSq0MEJd+EedH/tKWhioIIneXKSc773yXd+qEp1GwWjhHKlipq1j72aPYVt2bAse+YegeQah0eo1xugBoM39PvPGA5HCBov7x94HX1ikUH1Hp9w/9DDze0d3E4XTquNq6aDtnsN1+2i1e7g9LyJswsHLW/PCaDptPw8lc7IiNFxhMJRrCZYrCVTCEdohJfpnzkWpRH1IDVBLIUiWIknQJXKJohUlFSomo6cbkDR8pCV7C8kWYOQlmZC8hyf8bIFUHreAC+I/gIJkZlhebApYYoUlw6EZFQtB8rc2PJFvCD5XfJ/hBYSkg7TogLZk2aLJvTNXb9gXkeBQv84RJBkIZs7KB4cg2W4sXQingepTTIT4XeQ3KPoPQYvqmBZ7t9dkg4lWR0LfciCsQ7z5BKiUQHjfZ//HlmUFHwBERWGuHTl+YgAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"pwa-manifest.png\"\n        title=\"pwa-manifest.png\"\n        src=\"/static/72e264704e37dc7bb2a9dec4ad37ca4c/e5715/pwa-manifest.png\"\n        srcset=\"/static/72e264704e37dc7bb2a9dec4ad37ca4c/a6d36/pwa-manifest.png 650w,\n/static/72e264704e37dc7bb2a9dec4ad37ca4c/e5715/pwa-manifest.png 768w,\n/static/72e264704e37dc7bb2a9dec4ad37ca4c/29114/pwa-manifest.png 1920w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>With your PWA app running using React, you've successfully built your first PWA React application! From here, you can test many PWA features, such as installation, offline viewing, and Lighthouse audit testing.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 39.07692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAABaElEQVQoz52MzUoCURiG5zq00XF0nD+jH3KcH0VoZbRQZ7KNURYE0S6XrYJWte8euo2kK4iypSuLWgQ6ajTj+HY8ipHhpg8e3u+8D99hjk9OsV87Qqns/KFIsG0HFcemWSw5KNsVFLa2IUoqkqIMSVZRsndwUDvEbrUKxvd9/DCc7R4BCNB6c3F738LrxwCj4bgDHh6fwIsqJGUFIZbHXaNBe8/zwGDBjEaT/PQCvLs+vvxgVrbbLzir13F5fYPziys8N5u0D4bB4g//O0y/38c8nW4HvV6P7AOaLqE3xXVdSrfbnSR9j93kltGNHHQji4xuQSOYZg6b+QI2NAtjp2VMSlozYRCXzeVhZfP0RssYM5/RJ55h2QhYNgouGkM0yiEel2FZe4hwIuk40vHUh8MsBEGix4mkTHwcoTDpl37DKEIcajKBtZSM1ZRCUJFSU9NdwbKiQCZeFnjIEunW04jxArhYguY833RDrR15xU/mAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"pwa-install.png\"\n        title=\"pwa-install.png\"\n        src=\"/static/3cb9b63c38ee39150c91b5e790a9997b/e5715/pwa-install.png\"\n        srcset=\"/static/3cb9b63c38ee39150c91b5e790a9997b/a6d36/pwa-install.png 650w,\n/static/3cb9b63c38ee39150c91b5e790a9997b/e5715/pwa-install.png 768w,\n/static/3cb9b63c38ee39150c91b5e790a9997b/29114/pwa-install.png 1920w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>If you hit the '+' symbol on the right side of the URL ba,r you can install your PWA, just as done here.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 20.153846153846153%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvklEQVQY022OS47CMBBEc40Rwk63HZO0fwOJCAo7dswh5v63KGyDsmLx1FJVdak68QmVSWIhNMbpfVNe4ZyHSMlIhjvJzuAmhPgLHzKkUP+r1iltcPygetvoyeJHGTwf/wjhjoPSu6f6d+5wJKSUsd42jKWsjlCa0Rk2kKHCOPsTluRxiYIlRyzXP8yXDXMcMRc9ed+y3jEcE2LMuK4b2LhWVod0RAa19Cuky6WC/Wh295gYdhjbOuIBuiyvhS8jyHS+MbNuyQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"pwa-lighthouse.png\"\n        title=\"pwa-lighthouse.png\"\n        src=\"/static/0540c7c3e60a931d7c2083aad390cb53/e5715/pwa-lighthouse.png\"\n        srcset=\"/static/0540c7c3e60a931d7c2083aad390cb53/a6d36/pwa-lighthouse.png 650w,\n/static/0540c7c3e60a931d7c2083aad390cb53/e5715/pwa-lighthouse.png 768w,\n/static/0540c7c3e60a931d7c2083aad390cb53/dd507/pwa-lighthouse.png 1528w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Use Workbox Lighthouse for testing the capabilities of your PWA: <a href=\"https://developer.chrome.com/docs/lighthouse/overview/\">Lighthouse</a></p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>You've learned about what PWAs are and how to build a PWA with React.</p>\n<p>If you want to quickly add user registration and authentication to your React PWA, you can <a href=\"https://www.loginradius.com/blog/engineering/user-authentication-react-application/\">use LoginRadius</a>. It eliminates the burden of building and maintaining user authentication from scratch and helps you focus entirely on building your app's core features.</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk3 { color: #6A9955; }\n  .dark-default-dark .mtk15 { color: #C586C0; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk17 { color: #808080; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n</style>","frontmatter":{"date":"October 22, 2021","updated_date":null,"description":"Follow this article to understand how to develop a simple React PWA. It explains the step-by-step process to help you easily follow along.","title":"How to Build a Progressive Web App (PWA) with React","tags":["React","PWA","npm"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/c7e3ca9131877e6d122821800050a259/ee604/blog-image.png","srcSet":"/static/c7e3ca9131877e6d122821800050a259/69585/blog-image.png 200w,\n/static/c7e3ca9131877e6d122821800050a259/497c6/blog-image.png 400w,\n/static/c7e3ca9131877e6d122821800050a259/ee604/blog-image.png 800w,\n/static/c7e3ca9131877e6d122821800050a259/f3583/blog-image.png 1200w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Abdullah Pathan","github":"aonepathan","avatar":null}}}}]},"markdownRemark":{"excerpt":"Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards…","fields":{"slug":"/identity/developer-first-identity-provider-loginradius/"},"html":"<p>Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards and refining approaches to building secure, seamless experiences.</p>\n<p>We’re here to support developers on that journey. We know how important simplicity, efficiency, and well-structured documentation are when working with identity and access management solutions. That’s why we’ve redesigned the <a href=\"https://www.loginradius.com/\">LoginRadius website</a>—to be faster, more intuitive, and developer-first in every way.</p>\n<p>The goal? Having them spend less time searching and more time building.</p>\n<h2 id=\"whats-new-and-improved-on-the-loginradius-website\" style=\"position:relative;\"><a href=\"#whats-new-and-improved-on-the-loginradius-website\" aria-label=\"whats new and improved on the loginradius website permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What’s New and Improved on the LoginRadius Website?</h2>\n<p>LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve spent the last few months redesigning our interface— making navigation more intuitive and reassuring that essential resources are easily accessible.</p>\n<p>Here’s a closer look at what’s new and why it’s important:</p>\n<h3 id=\"a-developer-friendly-dark-theme\" style=\"position:relative;\"><a href=\"#a-developer-friendly-dark-theme\" aria-label=\"a developer friendly dark theme permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A Developer-Friendly Dark Theme</h3>\n<p><img src=\"/f46881583c7518a93bb24e94c32320de/a-developer-friendly-dark-theme.webp\" alt=\"This image shows how LoginRadius offers several authentication methods like traditional login, social login, passwordless login, passkeys and more in a dark mode.\">    </p>\n<p>Developers spend long hours working in dark-themed IDEs and terminals, so we’ve designed the LoginRadius experience to be developer-friendly and align with that preference.</p>\n<p>The new dark mode reduces eye strain, enhances readability, and provides a seamless transition between a coding environment and our platform. Our new design features a clean, modern aesthetic with a consistent color scheme and Barlow typography, ensuring better readability. High-quality graphics and icons are thoughtfully placed to enhance the content without adding visual clutter.</p>\n<p>So, whether you’re navigating our API docs or configuring authentication into your system, our improved interface will make those extended development hours more comfortable and efficient.</p>\n<h3 id=\"clear-categorization-for-loginradius-capabilities\" style=\"position:relative;\"><a href=\"#clear-categorization-for-loginradius-capabilities\" aria-label=\"clear categorization for loginradius capabilities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Clear Categorization for LoginRadius Capabilities</h3>\n<p><img src=\"/e5358b82be414940f3fb146013845933/capabilities.webp\" alt=\"This image shows a breakdown of all the LoginRadius CIAM capabilities, including authentication, security, UX, scalability and multi-brand management.\"></p>\n<p>We’ve restructured our website to provide a straightforward breakdown of our customer identity and access management platform capabilities, helping you quickly find what you need:</p>\n<ul>\n<li>Authentication: Easily understand <a href=\"https://www.loginradius.com/blog/identity/authentication-option-for-your-product/\">how to choose the right login method</a>, from traditional passwords and OTPs to social login, federated SSO, and passkeys with few lines of code.</li>\n<li>Security: Implement no-code security features like bot detection, IP throttling, breached password alerts, DDoS protection, and adaptive MFA to safeguard user accounts.</li>\n<li>User Experience: Leverage AI builder, hosted pages, and drag-and-drop workflows to create smooth, branded sign-up and login experiences.</li>\n<li>High Performance &#x26; Scalability: Confidently scale with sub-100ms API response times, 100% uptime, 240K+ RPS, and 28+ global data center regions.</li>\n<li>Multi-Brand Management: Efficiently manage multiple identity apps, choosing isolated or shared data stores based on your brand’s unique needs.</li>\n</ul>\n<p>This structured layout ensures you can quickly understand each capability and how it integrates into your identity ecosystem.</p>\n<h3 id=\"developer-first-navigation\" style=\"position:relative;\"><a href=\"#developer-first-navigation\" aria-label=\"developer first navigation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Developer-First Navigation</h3>\n<p><img src=\"/a8c155c2b6faf3d5f4b4de4e2b14d763/developers-menu.webp\" alt=\"This image shows the LoginRadius menu bar, highlighting the developer dropdown.\">   </p>\n<p>We’ve been analyzing developer workflows to identify how you access key resources. That’s why we redesigned our navigation with one goal in mind: to reduce clicks and make essential resources readily available.</p>\n<p>The new LoginRadius structure puts APIs, SDKs, and integration guides right at the menu bar under the Developers dropdown so you can get started faster. Our Products, Solutions, and Customer Services are also clearly categorized, helping development teams quickly find the right tools and make informed decisions.</p>\n<h3 id=\"quick-understanding-of-integration-benefits\" style=\"position:relative;\"><a href=\"#quick-understanding-of-integration-benefits\" aria-label=\"quick understanding of integration benefits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quick Understanding of Integration Benefits</h3>\n<p><img src=\"/b2f9a964a2da0ea83e2f8596b833bba7/we-support-your-tech-stack.webp\" alt=\"This image shows a list of popular programming languages and frameworks offered by LoginRadius.\"></p>\n<p>Developers now have a clear view of the tech stack available with LoginRadius, designed to support diverse business needs.</p>\n<p>Our platform offers pre-built SDKs for Node.js, Python, Java, and more, making CIAM integration seamless across popular programming languages and frameworks.</p>\n<h2 id=\"over-to-you-now\" style=\"position:relative;\"><a href=\"#over-to-you-now\" aria-label=\"over to you now permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Over to You Now!</h2>\n<p>Check out our <a href=\"https://www.loginradius.com/\">revamped LoginRadius website</a> and see how the improved experience makes it easier to build, scale, and secure your applications.</p>\n<p>Do not forget to explore the improved navigation and API documentation, and get started with our free trial today. We’re excited to see what you’ll build with LoginRadius!</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 21, 2025","updated_date":null,"description":"LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve redesigned our website interface, making navigation more intuitive and reassuring that essential resources are easily accessible.","title":"Revamped & Ready: Introducing the New Developer-First LoginRadius Website","tags":["Developer tools","API","Identity Management","User Authentication"],"pinned":true,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7857142857142858,"src":"/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp","srcSet":"/static/80b4e4fbe176a10a327d273504607f32/61e93/hero-section.webp 200w,\n/static/80b4e4fbe176a10a327d273504607f32/1f5c5/hero-section.webp 400w,\n/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp 800w,\n/static/80b4e4fbe176a10a327d273504607f32/99238/hero-section.webp 1200w,\n/static/80b4e4fbe176a10a327d273504607f32/7c22d/hero-section.webp 1600w,\n/static/80b4e4fbe176a10a327d273504607f32/1258b/hero-section.webp 2732w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},"pageContext":{"limit":6,"skip":360,"currentPage":61,"type":"///","numPages":161,"pinned":"ee8a4479-3471-53b1-bf62-d0d8dc3faaeb"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}