{"id":3352,"date":"2025-11-27T13:04:01","date_gmt":"2025-11-27T13:04:01","guid":{"rendered":"https:\/\/www.infragistics.com\/blogs\/?p=3352"},"modified":"2025-12-04T07:14:09","modified_gmt":"2025-12-04T07:14:09","slug":"react-pwa","status":"publish","type":"post","link":"https:\/\/www.infragistics.com\/blogs\/react-pwa","title":{"rendered":"Creating a React PWA That Feels Native with Ignite UI Components\u00a0"},"content":{"rendered":"\n<p>Progressive Web Apps (PWAs) have changed the way developers think about building modern applications. They combine the reach of the web with the reliability, speed, and polish of native mobile and desktop applications,&nbsp;without requiring app-store deployment or&nbsp;maintaining&nbsp;multiple codebases.&nbsp;<\/p>\n\n\n\n<p>For React developers, building a React PWA offers a huge opportunity: to deliver&nbsp;an installable, offline-capable app experience while still writing standard React code. And when paired with a powerful UI toolkit like&nbsp;<a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-react\">Ignite UI for React<\/a>, you can build production-ready interfaces dramatically faster, with a native feel right out of the box.&nbsp;<\/p>\n\n\n\n<p>In this guide,&nbsp;you&#8217;ll&nbsp;learn what&nbsp;a PWA&nbsp;is, how React supports PWA development, and how Ignite UI for React helps you create a fast, responsive, and visually consistent Progressive Web App.&nbsp;We\u2019ll&nbsp;also build a small React PWA example using Ignite UI components to&nbsp;demonstrate&nbsp;how everything fits together.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-is-a-pwa-in-react-and-why-it-matters\">What Is&nbsp;a&nbsp;PWA&nbsp;in&nbsp;React? (And Why It Matters)&nbsp;<\/h2>\n\n\n\n<p>A&nbsp;Progressive Web App in React&nbsp;is simply a React application enhanced with certain capabilities that make it behave more like a native app. PWAs rely on three core technologies:&nbsp;<\/p>\n\n\n\n<p><strong>1. Service Workers<\/strong>&nbsp;<\/p>\n\n\n\n<p>A background script that:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Caches files for offline use&nbsp;<\/li>\n\n\n\n<li>Intercepts network requests&nbsp;<\/li>\n\n\n\n<li>Enables instant loading on repeat visits&nbsp;<\/li>\n\n\n\n<li>Supports background sync&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>React uses&nbsp;Workbox&nbsp;under the hood (when using Create React App\u2019s PWA template) to generate and manage a service worker automatically.&nbsp;<\/p>\n\n\n\n<p><strong>2. Web App Manifest (<\/strong><strong><em>manifest.json\/manifest.webmanifest<\/em><\/strong><strong>)<\/strong>&nbsp;<\/p>\n\n\n\n<p>A JSON file&nbsp;containing&nbsp;app metadata:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>App name&nbsp;<\/li>\n\n\n\n<li>Icons&nbsp;<\/li>\n\n\n\n<li>Theme\/background colors&nbsp;<\/li>\n\n\n\n<li>Preferred screen orientation&nbsp;<\/li>\n\n\n\n<li>Display mode (\u201cstandalone\u201d makes it look like a native app)&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>This is what allows the browser to show an&nbsp;\u201cInstall App\u201d&nbsp;button.&nbsp;<\/p>\n\n\n\n<p><strong>3. HTTPS<\/strong>&nbsp;<\/p>\n\n\n\n<p>PWAs&nbsp;require&nbsp;a secure context, as service workers are powerful features.&nbsp;When these three pieces are in place, a React progressive web app becomes:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Installable&nbsp;\u2014 desktop, Android, and even some iOS scenarios&nbsp;<\/li>\n\n\n\n<li>Offline-ready&nbsp;<\/li>\n\n\n\n<li>Fast&nbsp;\u2014 thanks to cached assets and preloading&nbsp;<\/li>\n\n\n\n<li>App-like&nbsp;\u2014 via full-screen UI and smooth interactions&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>React&nbsp;doesn&#8217;t&nbsp;enforce any special PWA architecture. Instead, it supplies tooling to make it easy to convert an existing project into an installable, reliable React PWA.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"setting-up-your-react-pwa\">Setting Up Your React PWA&nbsp;<\/h2>\n\n\n\n<p>The fastest way to start developing a&nbsp;React PWA&nbsp;is by using Create React App\u2019s built-in PWA template.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Create Your React Project&nbsp;<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npx create-react-app react-pwa-demo --template cra-template-pwa \ncd react-pwa-demo<\/pre>\n\n\n\n<p>This template does the heavy lifting:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Includes a&nbsp;<em>service worker setup<\/em>&nbsp;<\/li>\n\n\n\n<li>Configures&nbsp;Workbox&nbsp;<\/li>\n\n\n\n<li>Adds a basic&nbsp;<em>manifest.json<\/em>&nbsp;<\/li>\n\n\n\n<li>Registers the service worker automatically&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>If you use the regular template instead, you can enable offline support manually by editing&nbsp;<em>src\/serviceWorkerRegistration.js<\/em>&nbsp;and&nbsp;switching from:&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">unregister();\u00a0<\/pre>\n\n\n\n<p>to&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">register();\u00a0<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Install Ignite UI for React&nbsp;<\/h3>\n\n\n\n<p>Ignite UI for React is a library of high-performance UI components built specifically for enterprise-grade React apps, which is perfect for PWAs that demand speed and responsiveness.&nbsp;<\/p>\n\n\n\n<p>Install the components you need:&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm install igniteui-react \nnpm install igniteui-react-grids igniteui-react-charts<\/pre>\n\n\n\n<p>This gives you access to:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data Grid&nbsp;<\/li>\n\n\n\n<li>Category\/Financial Charts\/Pie Charts&nbsp;<\/li>\n\n\n\n<li>Inputs&nbsp;<\/li>\n\n\n\n<li>Navigation components&nbsp;<\/li>\n\n\n\n<li>Layout utilities&nbsp;<\/li>\n\n\n\n<li>Themed styling&nbsp;<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Configure&nbsp;<em>manifest.json<\/em>&nbsp;<\/h3>\n\n\n\n<p>Inside your project\u2019s&nbsp;<em>public\/manifest.json<\/em>, customize your app metadata:&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{ \n  \"short_name\": \"PWA Demo\", \n  \"name\": \"React PWA Demo App\", \n  \"icons\": [ \n    { \n      \"src\": \"icons\/icon-192.png\", \n      \"sizes\": \"192x192\", \n      \"type\": \"image\/png\" \n    }, \n    { \n      \"src\": \"icons\/icon-512.png\", \n      \"sizes\": \"512x512\", \n      \"type\": \"image\/png\" \n    } \n  ], \n  \"start_url\": \".\", \n  \"display\": \"standalone\", \n  \"theme_color\": \"#1976d2\", \n  \"background_color\": \"#ffffff\" \n}<\/pre>\n\n\n\n<p>Key setting:&nbsp;<br>&#8220;display&#8221;: &#8220;standalone&#8221;&nbsp;makes your React PWA feel like a native app rather than a browser tab.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"building-the-ui-with-ignite-ui-for-react\">Building the UI with Ignite UI for React&nbsp;<\/h2>\n\n\n\n<p>A PWA&nbsp;doesn\u2019t&nbsp;succeed on offline capabilities alone. It must also&nbsp;feel&nbsp;smooth, fast, and native. This is where Ignite UI for React shines, providing:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Feature-rich, customizable&nbsp;UI components&nbsp;(both Premium and Open-Source).&nbsp;<\/li>\n\n\n\n<li>Consistent design system.&nbsp;<\/li>\n\n\n\n<li>Excellent mobile\/touch support.&nbsp;<\/li>\n\n\n\n<li>Built-in virtualization for large datasets.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Let\u2019s&nbsp;look at how easy it is to integrate Ignite UI components into your React progressive web app.&nbsp;<\/p>\n\n\n\n<p><strong>Example: Adding a Navigation Bar<\/strong>&nbsp;<\/p>\n\n\n\n<p>A PWA should have&nbsp;an intuitive&nbsp;navigation experience. With Ignite UI layouts, you can build one quickly:&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import\u00a0{\u00a0IgrNavbar,\u00a0IgrNavbarModule\u00a0}\u00a0from\u00a0'igniteui-react';\u00a0\n\nexport\u00a0function\u00a0AppNavbar() {\u00a0\n\n\u202f\u00a0return\u00a0(\u00a0\n\n\u202f \u202f\u00a0&lt;IgrNavbar>\u00a0\n\n\u202f \u202f \u202f \u202f &lt;span>React PWA Dashboard Example using Ignite UI&lt;\/span>\u00a0\n\n\u202f &lt;\/IgrNavbar>\u00a0\n\n\u202f );\u00a0\n\n}<\/pre>\n\n\n\n<p>Add it to your app layout:&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;AppNavbar\u00a0\/>\u00a0<\/pre>\n\n\n\n<p><strong>Example: Displaying Data with the Ignite UI React Data Grid<\/strong>&nbsp;<\/p>\n\n\n\n<p>One of the biggest advantages of Ignite UI for React is its&nbsp;<strong>virtualized, high-performance Data Grid<\/strong>, ideal for PWAs handling real data.&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import\u00a0{\u00a0IgrDataGrid,\u00a0IgrTextColumn\u00a0}\u00a0from\u00a0\"igniteui-react-grids\";\u00a0\n\nexport\u00a0function\u00a0EmployeeGrid({\u00a0data\u00a0}) {\u00a0\n\n\u202f\u00a0return\u00a0(\u00a0\n\n\u202f \u202f\u00a0&lt;IgrGrid\u00a0data={data}>\u00a0\n\n\u202f \u202f &lt;IgrColumn\u00a0field=\"TicketNumber\"\u00a0dataType=\"string\" header=\"TicketNumber\" sortable={true} selectable={false}>&lt;\/IgrColumn>\u00a0\n\n\u202f \u202f &lt;IgrColumn\u00a0field=\"Subject\"\u00a0dataType=\"string\" header=\"Subject\" sortable={true} selectable={false}>&lt;\/IgrColumn>\u00a0\n\n\u202f \u202f &lt;IgrColumn\u00a0field=\"Customer\"\u00a0dataType=\"string\" header=\"Customer\" sortable={true} selectable={false}>&lt;\/IgrColumn>\u00a0\n\n\u202f \u202f &lt;IgrColumn\u00a0field=\"Status\"\u00a0dataType=\"string\" header=\"Status\" sortable={true} selectable={false}>&lt;\/IgrColumn>\u00a0\n\n\u202f \u202f &lt;IgrColumn\u00a0field=\"Priority\"\u00a0dataType=\"string\" header=\"Priority\" sortable={true} selectable={false}>&lt;\/IgrColumn>\u00a0\n\n\u202f \u202f &lt;IgrColumn\u00a0field=\"Updated\"\u00a0dataType=\"date\" header=\"Updated\" sortable={true} selectable={false}>&lt;\/IgrColumn>\u00a0\n\n\u202f &lt;\/IgrGrid>\u00a0\n\n\u202f );\u00a0\n\n}<\/pre>\n\n\n\n<p>Features&nbsp;that come with the&nbsp;IgniteUI&nbsp;React Grid:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Fast scrolling&nbsp;<\/li>\n\n\n\n<li>Sorting&nbsp;<\/li>\n\n\n\n<li>Filtering&nbsp;<\/li>\n\n\n\n<li>Keyboard navigation&nbsp;<\/li>\n\n\n\n<li>Adaptive column rendering&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Exactly what a native-feeling PWA needs.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"optimizing-performance-offline-support\">Optimizing&nbsp;Performance &amp; Offline Support&nbsp;<\/h2>\n\n\n\n<p>Performance is one of the primary reasons developers build PWAs. A slow app\u2014native or web\u2014kills user engagement.&nbsp;React + Workbox + Ignite UI is an extremely performance-friendly combination.&nbsp;<\/p>\n\n\n\n<p><strong>1. Audit Your Current Performance<\/strong>&nbsp;<\/p>\n\n\n\n<p>Open Chrome&nbsp;DevTools&nbsp;\u2192 Lighthouse \u2192 Run Audit.&nbsp;<\/p>\n\n\n\n<p>Focus on two categories:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Performance&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PWA&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>A well-configured React PWA should achieve:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>90+<\/em>&nbsp;Performance&nbsp;<\/li>\n\n\n\n<li><em>100<\/em>&nbsp;in PWA&nbsp;Installability&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><strong>2. Use Code-Splitting &amp; Lazy Loading<\/strong>&nbsp;<\/p>\n\n\n\n<p>PWAs should&nbsp;load&nbsp;instantly. Use&nbsp;<em>React.lazy()<\/em>&nbsp;to load pages or components on demand:&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const\u00a0Support\u00a0=\u00a0lazy(()\u00a0=>\u00a0import('.\/support\/support'));\u00a0\n\nexport\u00a0const\u00a0routes\u00a0=\u00a0[\u00a0\n\n\u202f {\u00a0\n\n\u202f \u202f\u00a0index:\u00a0true,\u00a0\n\n\u202f \u202f\u00a0element:\u00a0(\u00a0\n\n\u202f \u202f \u202f\u00a0&lt;Suspense\u00a0fallback={&lt;div>Loading...&lt;\/div>}>\u00a0\n\n\u202f \u202f \u202f \u202f\u00a0&lt;Support\u00a0\/>\u00a0\n\n\u202f \u202f \u202f\u00a0&lt;\/Suspense>\u00a0\n\n\u202f \u202f ),\u00a0\n\n\u202f \u202f\u00a0text:\u00a0'Support'\u00a0\n\n\u202f },\u00a0\n\n];<\/pre>\n\n\n\n<p><strong>3. Tune Your Caching<\/strong>&nbsp;<\/p>\n\n\n\n<p>Create React App\u2019s PWA template uses Workbox with a default caching strategy:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Precache static assets&nbsp;<\/li>\n\n\n\n<li>Runtime caching for navigation and API requests&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>You can extend this&nbsp;in&nbsp;<em>service-worker.js<\/em>, for example:&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">workbox.routing.registerRoute(\u00a0\n\n\u202f\u00a0({\u00a0request\u00a0})\u00a0=>\u00a0request.destination\u00a0===\u00a0'image',\u00a0\n\n\u202f\u00a0new\u00a0workbox.strategies.CacheFirst()\u00a0\n\n);<\/pre>\n\n\n\n<p><strong>4. Leverage Ignite UI\u2019s Rendering Optimizations<\/strong>&nbsp;<\/p>\n\n\n\n<p>Ignite UI components are&nbsp;optimized&nbsp;specifically for performance-sensitive use cases like PWAs.&nbsp;<\/p>\n\n\n\n<p><strong>Examples:<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data Grid virtualization&nbsp;\u2014 only visible rows render&nbsp;<\/li>\n\n\n\n<li>Efficient DOM structur<strong>e<\/strong>&nbsp;\u2014 fewer layout thrashes&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>These improvements help your React PWA feel like a truly native application.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"react-pwa-example-a-complete-starter-project-you-can-use-today\">React PWA Example: A Complete Starter Project You Can Use Today&nbsp;<\/h2>\n\n\n\n<p>Instead of building a demo from&nbsp;scratch, you can explore a fully working&nbsp;React PWA example&nbsp;that already integrates&nbsp;Ignite UI components, offline capabilities, and service worker&nbsp;caching.&nbsp;<\/p>\n\n\n\n<p>The sample project is available here:&nbsp;<\/p>\n\n\n\n<p><strong>GitHub Repository:<\/strong>&nbsp;<br><a href=\"https:\/\/github.com\/IgniteUI\/react-pwa-example\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/IgniteUI\/react-pwa-example<\/a>&nbsp;<\/p>\n\n\n\n<p><strong>Live Demo (Installable App):<\/strong>&nbsp;<br><a href=\"https:\/\/igniteui.github.io\/react-pwa-example\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/igniteui.github.io\/react-pwa-example\/<\/a>&nbsp;<\/p>\n\n\n\n<p>This example&nbsp;demonstrates&nbsp;everything covered in this article, including:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An installable React PWA with a configured manifest&nbsp;<\/li>\n\n\n\n<li>Navigation and layout built with Ignite UI components&nbsp;<\/li>\n\n\n\n<li>Real data displayed using the Ignite UI React Grid&nbsp;<\/li>\n\n\n\n<li>Charts and analytics&nbsp;<\/li>\n\n\n\n<li>Responsive design&nbsp;optimized&nbsp;for mobile use&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Although more of&nbsp;a&nbsp;toy demo than a&nbsp;real application, it gives you a practical starting point for building your own&nbsp;production-ready&nbsp;React progressive web app. You can clone the repo, inspect the service worker setup, customize the manifest, and reuse the UI patterns shown in the example.&nbsp;<\/p>\n\n\n\n<p>If&nbsp;you&#8217;re&nbsp;looking for a ready-made foundation to build on, this&nbsp;is&nbsp;a&nbsp;good&nbsp;place to start.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"wrap-up\">Wrap Up&#8230;&nbsp;<\/h2>\n\n\n\n<p>Building a&nbsp;React PWA&nbsp;doesn\u2019t&nbsp;have to be complicated. React provides the structure, Create React App handles the PWA setup, and Workbox manages&nbsp;caching&nbsp;and service workers automatically. Add Ignite UI for React on top, and you get:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A&nbsp;polished, native-feeling UI&nbsp;<\/li>\n\n\n\n<li>Fast rendering&nbsp;<\/li>\n\n\n\n<li>Mobile-friendly components&nbsp;<\/li>\n\n\n\n<li>Built-in virtualization&nbsp;<\/li>\n\n\n\n<li>Consistent design across pages&nbsp;<\/li>\n\n\n\n<li>Tools that speed up development&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Whether&nbsp;you\u2019re&nbsp;building dashboards, internal tools, analytics apps, or customer-facing software, a React PWA built with Ignite UI will deliver a highly responsive, installable, offline-ready experience&nbsp;with far less development effort.&nbsp;<\/p>\n\n\n\n<p>Start building your first React PWA today using Ignite UI for React and see how quickly you can deliver native-quality web apps.&nbsp;<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Whether\u00a0you\u2019re\u00a0building dashboards, internal tools, analytics apps, or customer-facing software, a React PWA built with Ignite UI will deliver a highly responsive, installable, offline-ready experience\u00a0with far less development effort.\u00a0<\/p>\n","protected":false},"author":172,"featured_media":3418,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,9],"tags":[],"class_list":["post-3352","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to","category-react"],"_links":{"self":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/users\/172"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/comments?post=3352"}],"version-history":[{"count":4,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3352\/revisions"}],"predecessor-version":[{"id":3359,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3352\/revisions\/3359"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media\/3418"}],"wp:attachment":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media?parent=3352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/categories?post=3352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/tags?post=3352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}