[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fFzyRXgs45LnqeZ6mzhIBvzn9I72YhsmDUT4rA9Frczs":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":27,"vuln_count":28,"unpatched_count":29,"last_vuln_date":30,"fetched_at":31,"vulnerabilities":32,"developer":102,"crawl_stats":38,"alternatives":109,"analysis":209,"fingerprints":1314},"pwa-for-wp","PWA for WP – Progressive Web Apps Made Simple","1.7.84","Magazine3","https:\u002F\u002Fprofiles.wordpress.org\u002Fmagazine3\u002F","\u003Cp>PWA plugin is bringing the power of the Progressive Web Apps to the WP & AMP to take the user experience to the next level!\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002F\" rel=\"nofollow ugc\">Home\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fcontact-us\u002F\" rel=\"nofollow ugc\">Help & Tech Support\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fdocs\u002F\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa>  | \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fpricing\u002F\" rel=\"nofollow ugc\">Pro version Features\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>You can give the APP-like experience to your audience which will get your website to their home screen and works instantly like an APP with offline support.\u003C\u002Fp>\n\u003Ch4>Features:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Swipe Navigation in PWA :\u003C\u002Fstrong> Adds swipe left \u002F right feature to load next and previous articles.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WP Hide & Security Enhancer Compatibility \u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Disable Scrollbar\u003C\u002Fstrong>: Hide scrollbar in PWA app.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AMP Support\u003C\u002Fstrong>: Full PWA compatibility for AMP.  It works well with AMPforWP & AMP for WordPress by Automattic.\u003C\u002Fli>\n\u003Cli>NEW: Multi site support\u003C\u002Fli>\n\u003Cli>NEW: UTM Tracking\u003C\u002Fli>\n\u003Cli>NEW: OneSignal support with multisite\u003C\u002Fli>\n\u003Cli>NEW: Easily change start URL\u003C\u002Fli>\n\u003Cli>NEW: Caching Strategy for PWA enabled assets\u003C\u002Fli>\n\u003Cli>NEW: Added Support with PWA By PWA Plugin Contributors\u003C\u002Fli>\n\u003Cli>Cache Expire option added\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Service Worker \u003C\u002Fstrong>: We have developed a service worker which automatically gets installed in the background and performs the necessary actions such as caching the external objects to reduce the requests and more.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>APP Banners in Home-screen\u003C\u002Fstrong>: Automatically notifies your visitor to get the APP version of the website which directly gets added with the list of Apps and Home-screen. You can customize the icons for this as well.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Web App Manifest\u003C\u002Fstrong>: The Manifest file is necessary to get this functionality rolled out and we have made this automatic and connected with the PWA options.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Offline Support\u003C\u002Fstrong>: The PWA version of your site will load blazing fast even when the user is offline. Once the user is online, it will update the content again. It will also count the analytics as well and updates it when the user goes online again.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Full Screen & Splash Screen\u003C\u002Fstrong>: When you open the PWA version from the mobile, it will load in full screen without any browser toolbar, which gives it a native app like feel in PWA version. There’s also a welcome splash screen which is totally customizable.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Continuous Development\u003C\u002Fstrong>: We will be working hard to continuously develop this PWA solution and release updates constantly so that your forms can continue to work flawlessly.\u003C\u002Fli>\n\u003Cli>Dashboard System Status which helps you understand the setup status of the PWA.\u003C\u002Fli>\n\u003Cli>Application Icon Uploading\u003C\u002Fli>\n\u003Cli>Background color options for Splash screen\u003C\u002Fli>\n\u003Cli>Add your own Application and short name.\u003C\u002Fli>\n\u003Cli>Easily set the start page from options.\u003C\u002Fli>\n\u003Cli>Set Device Orientation easily.\u003C\u002Fli>\n\u003Cli>Tested with Google Lighthouse\u003C\u002Fli>\n\u003Cli>More PWA Features Coming soon.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>[Premium]\u003C\u002Fstrong> the ability to expand PWA for WP with \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fcall-to-action-for-pwa\u002F\" rel=\"nofollow ugc\">Call to Action\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Floading-icon-library-for-pwa\u002F\" rel=\"nofollow ugc\">Loading Icon Library\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fdata-analytics-for-pwa\u002F\" rel=\"nofollow ugc\">Data Analytics\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fpull-to-refresh-for-pwa\u002F\" rel=\"nofollow ugc\">Pull to Refresh\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fscroll-progress-bar-for-pwa\u002F\" rel=\"nofollow ugc\">Scroll Progress Bar\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fpwa-to-apk-plugin\u002F\" rel=\"nofollow ugc\">PWA to APK Plugin\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Foffline-forms-for-pwa-for-wp\u002F\" rel=\"nofollow ugc\">Offline Forms for PWA for WP\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fnavigation-bar-for-pwa\u002F\" rel=\"nofollow ugc\">Navigation Bar for PWA\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fquick-action-for-pwa\u002F\" rel=\"nofollow ugc\">Quick Action for PWA\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fmultilingual-compatibility-for-pwa\u002F\" rel=\"nofollow ugc\">Multilingual Compatibility for PWA\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fbuddypress-for-pwa-for-wp\u002F\" rel=\"nofollow ugc\">BuddyPress for PWA for WP\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Frewards-on-pwa-install\u002F\" rel=\"nofollow ugc\">Rewards on PWA Install\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fqr-code-for-pwa\u002F\" rel=\"nofollow ugc\">QR Code for PWA\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fpwa-to-ios-plugin\u002F\" rel=\"nofollow ugc\">PWA to iOS Plugin\u003C\u002Fa>, and \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fextensions\u002Fpwaforwp-white-label\u002F\" rel=\"nofollow ugc\">Whitelabel for PWA \u003C\u002Fa> extensions\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>We Act Fast on Feedback!\u003C\u002Fstrong>\u003Cbr \u002F>\nWe are actively developing this plugin and our aim is to make this plugin into the #1 solution for PWA in the world. You can \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fahmedkaludi\u002Fpwa-for-wp\u002Fissues\" rel=\"nofollow ugc\">Request a Feature\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fcontact-us\u002F\" rel=\"nofollow ugc\">Report a Bug\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Technical Support\u003C\u002Fstrong>\u003Cbr \u002F>\nSupport is provided in \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fpwa-for-wp\" rel=\"ugc\">Forum\u003C\u002Fa>. You can also \u003Ca href=\"https:\u002F\u002Fpwa-for-wp.com\u002Fcontact-us\u002F\" rel=\"nofollow ugc\">Contact us\u003C\u002Fa>, our turn around time on email is around 12 hours.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Would you like to contribute?\u003C\u002Fstrong>\u003Cbr \u002F>\nYou may now contribute to this PWA plugin on Github: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fahmedkaludi\u002Fpwa-for-wp\" rel=\"nofollow ugc\">View repository\u003C\u002Fa> on Github\u003C\u002Fp>\n","PWA plugin is bringing the power of the Progressive Web Apps to the WP & AMP to take the user experience to the next level.",20000,1525645,92,229,"2026-02-21T14:03:00.000Z","6.9.4","3.0","",[20,21,22,23,24],"cache","manifest","offline","progressive-web-apps","pwa","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpwa-for-wp\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpwa-for-wp.1.7.84.zip",95,5,0,"2024-09-25 00:00:00","2026-03-15T15:16:48.613Z",[33,49,64,80,89],{"id":34,"url_slug":35,"title":36,"description":37,"plugin_slug":4,"theme_slug":38,"affected_versions":39,"patched_in_version":40,"severity":41,"cvss_score":42,"cvss_vector":43,"vuln_type":44,"published_date":30,"updated_date":45,"references":46,"days_to_patch":48},"CVE-2024-47318","pwa-for-wp-amp-missing-authorization","PWA for WP & AMP \u003C= 1.7.72 - Missing Authorization","The PWA for WP & AMP plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on a function in all versions up to, and including, 1.7.72. This makes it possible for authenticated attackers, with Subscriber-level access and above, to perform an unauthorized action.",null,"\u003C=1.7.72","1.7.73","medium",4.3,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:U\u002FC:N\u002FI:L\u002FA:N","Missing Authorization","2024-10-02 20:51:18",[47],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F75413c3f-7880-4b10-bf1a-fcfdab877ff5?source=api-prod",8,{"id":50,"url_slug":51,"title":52,"description":53,"plugin_slug":4,"theme_slug":38,"affected_versions":54,"patched_in_version":55,"severity":41,"cvss_score":56,"cvss_vector":57,"vuln_type":58,"published_date":59,"updated_date":60,"references":61,"days_to_patch":63},"CVE-2024-7759","pwa-for-wp-progressive-web-apps-made-simple-authenticated-admin-stored-cross-site-scripting","PWA for WP – Progressive Web Apps Made Simple \u003C= 1.7.71 - Authenticated (Admin+) Stored Cross-Site Scripting","The PWA for WP – Progressive Web Apps Made Simple plugin for WordPress is vulnerable to Stored Cross-Site Scripting via admin settings in all versions up to, and including, 1.7.71 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with administrator-level permissions and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This only affects multi-site installations and installations where unfiltered_html has been disabled.","\u003C=1.7.71","1.7.72",4.4,"CVSS:3.1\u002FAV:N\u002FAC:H\u002FPR:H\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","2024-08-20 00:00:00","2025-05-30 18:26:48",[62],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F718dc94c-1f4f-4b5a-969b-d98cabbbe6d8?source=api-prod",284,{"id":65,"url_slug":66,"title":67,"description":68,"plugin_slug":4,"theme_slug":38,"affected_versions":69,"patched_in_version":70,"severity":71,"cvss_score":72,"cvss_vector":73,"vuln_type":74,"published_date":75,"updated_date":76,"references":77,"days_to_patch":79},"CVE-2021-4354","pwa-for-wp-amp-arbitrary-file-upload","PWA for WP & AMP \u003C= 1.7.32 - Arbitrary File Upload","The PWA for WP & AMP for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the pwaforwp_splashscreen_uploader function in versions up to, and including, 1.7.32. This makes it possible for authenticated attackers to upload arbitrary files on the affected sites server which may make remote code execution possible.","\u003C=1.7.32","1.7.33","high",8.8,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:U\u002FC:H\u002FI:H\u002FA:H","Unrestricted Upload of File with Dangerous Type","2021-07-01 00:00:00","2024-01-22 19:56:02",[78],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F6082791e-feac-41f7-b565-9d98624ddf50?source=api-prod",936,{"id":81,"url_slug":82,"title":83,"description":84,"plugin_slug":4,"theme_slug":38,"affected_versions":69,"patched_in_version":70,"severity":41,"cvss_score":85,"cvss_vector":86,"vuln_type":44,"published_date":75,"updated_date":76,"references":87,"days_to_patch":79},"CVE-2021-4366","pwa-for-wp-amp-missing-authorization-2","PWA for WP & AMP \u003C = 1.7.32 - Missing Authorization","The PWA for WP & AMP plugin for WordPress is vulnerable to authorization bypass due to a missing capability check on the  pwaforwp_update_features_options function in versions up to, and including, 1.7.32. This makes it possible for authenticated attackers to change the otherwise restricted settings within the plugin.",6.3,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:U\u002FC:L\u002FI:L\u002FA:L",[88],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fa9892dd1-3939-41a9-a828-fa1bf7d96eb8?source=api-prod",{"id":90,"url_slug":91,"title":92,"description":93,"plugin_slug":4,"theme_slug":38,"affected_versions":94,"patched_in_version":95,"severity":71,"cvss_score":96,"cvss_vector":97,"vuln_type":58,"published_date":98,"updated_date":76,"references":99,"days_to_patch":101},"WF-934545ff-8886-47c7-ad50-0e5ff513a26c-pwa-for-wp","pwa-for-wp-amp-plugin-cross-site-scripting","PWA for WP & AMP Plugin \u003C= 1.0.8 - Cross-Site Scripting","The PWA for WP & AMP plugin for WordPress is vulnerable to Cross-Site Scripting via several parameters in versions up to, and including, 1.0.8 due to insufficient input sanitization and output escaping. This makes it possible for attackers to inject arbitrary web scripts in pages.","\u003C1.0.9","1.0.9",7.2,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:N\u002FS:C\u002FC:L\u002FI:L\u002FA:N","2019-03-25 00:00:00",[100],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F934545ff-8886-47c7-ad50-0e5ff513a26c?source=api-prod",1765,{"slug":103,"display_name":7,"profile_url":8,"plugin_count":104,"total_installs":105,"avg_security_score":27,"avg_patch_time_days":106,"trust_score":107,"computed_at":108},"magazine3",13,739390,327,76,"2026-04-04T10:38:33.592Z",[110,130,153,172,190],{"slug":24,"name":111,"version":112,"author":113,"author_profile":114,"description":115,"short_description":116,"active_installs":11,"downloaded":117,"rating":118,"num_ratings":119,"last_updated":120,"tested_up_to":121,"requires_at_least":122,"requires_php":123,"tags":124,"homepage":127,"download_link":128,"security_score":129,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"PWA","0.8.2","Weston Ruter","https:\u002F\u002Fprofiles.wordpress.org\u002Fwestonruter\u002F","\u003Cblockquote cite=\"https:\u002F\u002Fdevelopers.google.com\u002Fweb\u002Fprogressive-web-apps\u002F\">\u003Cp>\nProgressive Web Apps are user experiences that have the reach of the web, and are:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdevelopers.google.com\u002Fweb\u002Fprogressive-web-apps\u002F#reliable\" rel=\"nofollow ugc\">Reliable\u003C\u002Fa> – Load instantly and never show the downasaur, even in uncertain network conditions.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdevelopers.google.com\u002Fweb\u002Fprogressive-web-apps\u002F#fast\" rel=\"nofollow ugc\">Fast\u003C\u002Fa> – Respond quickly to user interactions with silky smooth animations and no janky scrolling.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdevelopers.google.com\u002Fweb\u002Fprogressive-web-apps\u002F#engaging\" rel=\"nofollow ugc\">Engaging\u003C\u002Fa> – Feel like a natural app on the device, with an immersive user experience.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.\n\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Cp>Continue reading more about \u003Ca href=\"https:\u002F\u002Fweb.dev\u002Fprogressive-web-apps\u002F\" rel=\"nofollow ugc\">Progressive Web Apps\u003C\u002Fa> (PWA) from Google.\u003C\u002Fp>\n\u003Cp>In general a PWA depends on the following technologies to be available:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FService_Worker_API\" rel=\"nofollow ugc\">Service Workers\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FManifest\" rel=\"nofollow ugc\">Web App Manifest\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHTTPS\" rel=\"nofollow ugc\">HTTPS\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This plugin serves as a place to implement support for these in WordPress with the intention of being proposed for core merge, piece by piece. Case in point, the HTTPS functionality from this plugin has largely been made part of Core: \u003Ca href=\"https:\u002F\u002Fmake.wordpress.org\u002Fcore\u002F2021\u002F02\u002F22\u002Fimproved-https-detection-and-migration-in-wordpress-5-7\u002F\" rel=\"nofollow ugc\">Improved HTTPS detection and migration in WordPress 5.7\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>This feature plugin is \u003Cem>not\u003C\u002Fem> intended to obsolete the other plugins and themes which turn WordPress sites into PWAs. Rather, this plugin is intended to provide the PWA building blocks and coordination mechanism for these themes and plugins to not reinvent the wheel and also to not conflict with each other. For example, a theme that implements the app shell model should be able to extend the core service worker while a plugin that provides push notifications should be able to do the same. Themes and plugins no longer should have to each create a service worker on their own, something which is inherently problematic because only one service worker can be active at a time: only one service worker can win. If you are developing a plugin or theme that includes a service worker, consider relying on this PWA plugin, or at least only use the built-in implementation as a fallback for when the PWA plugin is not available.\u003C\u002Fp>\n\u003Cp>In versions prior to 0.6, no caching strategies were added by default. The only service worker behavior was to serve an offline template when the client’s connection is down or the site is down, and also to serve an error page when the server returns with 500 Internal Server Error. As of 0.6, there is a new “Offline browsing” toggle on the Reading Settings screen in the admin. It is disabled by default, but when enabled a \u003Ca href=\"https:\u002F\u002Fweb.dev\u002Foffline-cookbook\u002F#network-falling-back-to-cache\" rel=\"nofollow ugc\">network-first\u003C\u002Fa> caching strategy is registered for navigations so that the offline page won’t be shown when accessing previously-accessed pages. The network-first strategy is also used for assets from themes, plugins, and WordPress core. In addition, uploaded images get served with a \u003Ca href=\"https:\u002F\u002Fweb.dev\u002Foffline-cookbook\u002F#stale-while-revalidate\" rel=\"nofollow ugc\">stale-while-revalidate\u003C\u002Fa> strategy. For all the details on these changes, see the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGoogleChromeLabs\u002Fpwa-wp\u002Fpull\u002F338\" rel=\"nofollow ugc\">pull request\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Documentation for the plugin can be found on the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGoogleChromeLabs\u002Fpwa-wp\u002Fwiki\" rel=\"nofollow ugc\">GitHub project Wiki\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Development of this plugin is done \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGoogleChromeLabs\u002Fpwa-wp\" rel=\"nofollow ugc\">on GitHub\u003C\u002Fa>. Pull requests welcome. Please see \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGoogleChromeLabs\u002Fpwa-wp\u002Fissues\" rel=\"nofollow ugc\">issues\u003C\u002Fa> reported there before going to the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fpwa\" rel=\"ugc\">plugin forum\u003C\u002Fa>.\u003C\u002Fstrong>\u003C\u002Fp>\n","WordPress feature plugin to bring Progressive Web App (PWA) capabilities to Core",594997,86,27,"2025-04-10T16:55:00.000Z","6.8.5","6.6","7.2",[23,24,125,126],"service-workers","web-app-manifest","https:\u002F\u002Fgithub.com\u002FGoogleChromeLabs\u002Fpwa-wp","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpwa.0.8.2.zip",100,{"slug":131,"name":132,"version":133,"author":134,"author_profile":135,"description":136,"short_description":137,"active_installs":138,"downloaded":139,"rating":140,"num_ratings":141,"last_updated":142,"tested_up_to":121,"requires_at_least":143,"requires_php":144,"tags":145,"homepage":148,"download_link":149,"security_score":150,"vuln_count":151,"unpatched_count":29,"last_vuln_date":152,"fetched_at":31},"iworks-pwa","PWA — easy way to Progressive Web App","1.7.8","Marcin Pietrzak","https:\u002F\u002Fprofiles.wordpress.org\u002Fiworks\u002F","\u003Cp>Progressive Web Apps (PWA) is a technology that combines the best of mobile web and the best of mobile apps to create a superior mobile web experience. They are installed on the phone like a normal app (web app) and can be accessed from the home screen.\u003C\u002Fp>\n\u003Cp>Users can come back to your website by launching the app from their home screen and interact with your website through an app-like interface. Your return visitors will experience almost-instant loading times and enjoy the great performance benefits of your PWA!\u003C\u002Fp>\n\u003Cp>iWorks PWA makes it easy for you to convert your WordPress website into a Progressive Web App instantly!\u003C\u002Fp>\n\u003Cp>Once this plugin is installed, users browsing your website from a supported mobile device will see a “Add To Home Screen” notice (from the bottom of the screen) and will be able to ‘install your website’ on the home screen of their device.\u003C\u002Fp>\n\u003Cp>iWorks PWA allow to add shortcuts for context menu to be displayed by the operating system when a user engages with the web app’s icon.\u003C\u002Fp>\n\u003Cp>iWorks PWA is easy to configure, it takes less than a minute to set-up your Progressive Web App!\u003C\u002Fp>\n\u003Ch4>See room for improvement?\u003C\u002Fh4>\n\u003Cp>Great! There are several ways you can get involved to help make PWA — easy way to Progressive Web App better:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Report Bugs:\u003C\u002Fstrong> If you find a bug, error or other problem, please report it! You can do this by \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fiworks-pwa\u002F\" rel=\"ugc\">creating a new topic\u003C\u002Fa> in the plugin forum. Once a developer can verify the bug by reproducing it, they will create an official bug report in GitHub where the bug will be worked on.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Suggest New Features:\u003C\u002Fstrong> Have an awesome idea? Please share it! Simply \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fiworks-pwa\u002F\" rel=\"ugc\">create a new topic\u003C\u002Fa> in the plugin forum to express your thoughts on why the feature should be included and get a discussion going around your idea.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Issue Pull Requests:\u003C\u002Fstrong> If you’re a developer, the easiest way to get involved is to help out on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fiworks\u002Fiworks-pwa\u002Fissues\" rel=\"nofollow ugc\">issues already reported\u003C\u002Fa> in GitHub. Be sure to check out the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fiworks\u002Fiworks-pwa\u002Fblob\u002Fmaster\u002Fcontributing.md\" rel=\"nofollow ugc\">contributing guide\u003C\u002Fa> for developers.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Thank you for wanting to make PWA — easy way to Progressive Web App better for everyone!\u003C\u002Fp>\n\u003Cp>The “PWA — easy way to Progressive Web App” plugin is available also on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fiworks\u002Fiworks-pwa\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>.\u003C\u002Fp>\n","Your easy way to Progressive Web Application.",2000,56336,96,26,"2025-09-01T09:45:00.000Z","6.0","8.0",[146,22,147,24],"manifest-json","progressive-web-application","https:\u002F\u002Fgithub.com\u002Fiworks\u002Fiworks-pwa","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fiworks-pwa.1.7.8.zip",99,1,"2024-10-01 19:03:40",{"slug":154,"name":155,"version":156,"author":157,"author_profile":158,"description":159,"short_description":160,"active_installs":161,"downloaded":162,"rating":163,"num_ratings":48,"last_updated":164,"tested_up_to":165,"requires_at_least":166,"requires_php":123,"tags":167,"homepage":170,"download_link":171,"security_score":13,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"hyper-pwa","Hyper PWA","4.3.0","rickey29","https:\u002F\u002Fprofiles.wordpress.org\u002Frickey29\u002F","\u003Cp>Hyper PWA plugin is developed based on web.dev and Workbox, provides Manifest and Service Worker — it converts WordPress into Progressive Web Apps (PWA).  Users can add a website as an App icon to their mobile deveice Home Screen, can even use it during Offline Mode.  It is compatible with OneSignal and Firebase, website owner can send Push Notifications to the App.\u003C\u002Fp>\n\u003Cp>Features:\u003Cbr \u002F>\n* Provide Manifest\u003Cbr \u002F>\n* Provide Service Worker\u003Cbr \u002F>\n* Provide Add to Home Screen\u003Cbr \u002F>\n* Provide Offline Mode\u003Cbr \u002F>\n* Support Push Notifications\u003Cbr \u002F>\n* Compatible with OneSignal\u003Cbr \u002F>\n* Compatible with Firebase\u003C\u002Fp>\n\u003Ch3>Highlight\u003C\u002Fh3>\n\u003Cp>This plugin is relying on a 3rd party Software as a Service — FlexPlat: https:\u002F\u002Fflexplat.com to generate Manifest and Service Workers related files.  The Terms and Conditions is located at: https:\u002F\u002Fwww.termsfeed.com\u002Flive\u002Ff1e8d2bc-1615-4aa9-bddb-24dcde10b50b\u003C\u002Fp>\n\u003Cp>In detail, to make PWA working, end users will ask your website to provide Manifest and Service Workers related files:\u003Cbr \u002F>\n* hyper-pwa-register.js\u003Cbr \u002F>\n* hyper-pwa-service-worker.js\u003Cbr \u002F>\n* hyper-pwa-manifest.json\u003Cbr \u002F>\n* hyper-pwa-offline.html\u003Cbr \u002F>\n* hyper-pwa-unregister.js\u003Cbr \u002F>\n* hyper-pwa-a2hs.js\u003Cbr \u002F>\nInside of producing these files within my plugin, my plugin will send necessary parameters to FlexPlat, FlexPlat will build the Service Workers related files based on the received parameters, and return these files to your website.  Then my plugin forwards these files to end users.\u003C\u002Fp>\n\u003Ch3>Open Issue\u003C\u002Fh3>\n\u003Cp>None.\u003C\u002Fp>\n\u003Ch3>Demo\u003C\u002Fh3>\n\u003Col>\n\u003Cli>https:\u002F\u002Fflexplat.com\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Download\u003C\u002Fh3>\n\u003Col>\n\u003Cli>WordPress Plugins Libraries: https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fhyper-pwa\u002F\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Configuration\u003C\u002Fh3>\n\u003Cp>Go to your website Dashboard Hyper PWA section for detail.\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>Author: Rickey Gu\u003Cbr \u002F>\nWeb: https:\u002F\u002Fflexplat.com\u003Cbr \u002F>\nEmail: rickey29@gmail.com\u003C\u002Fp>\n","Provide Manifest and Service Worker, convert WordPress into Progressive Web Apps (PWA).",300,16019,90,"2024-11-12T17:09:00.000Z","6.6.5","5.1",[168,169,22,23,24],"a2hs","add-to-home-screen","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fhyper-pwa\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fhyper-pwa.4.3.0.zip",{"slug":173,"name":174,"version":175,"author":176,"author_profile":177,"description":178,"short_description":179,"active_installs":180,"downloaded":181,"rating":29,"num_ratings":29,"last_updated":182,"tested_up_to":16,"requires_at_least":183,"requires_php":184,"tags":185,"homepage":188,"download_link":189,"security_score":129,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"iflair-pwa-app","SiteEase Progressive Web App","1.1.5","iflairwebtechnologies","https:\u002F\u002Fprofiles.wordpress.org\u002Fiflairwebtechnologies\u002F","\u003Cp>\u003Cstrong>SiteEase Progressive Web App\u003C\u002Fstrong> allows you to transform your WordPress website into a fully functional Progressive Web App (PWA). It provides app-like capabilities such as offline access, faster loading through caching strategies, and the ability for users to install your site on their device’s home screen.\u003C\u002Fp>\n\u003Cp>The plugin offers an intuitive admin interface where you can configure application details, appearance, caching behavior, and advanced PWA options without writing code.\u003C\u002Fp>\n\u003Cp>This plugin does \u003Cstrong>not collect personal data\u003C\u002Fstrong> and focuses entirely on performance, usability, and offline availability.\u003C\u002Fp>\n\u003Ch3>Core Features\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>1) App Name\u003C\u002Fstrong>\u003Cbr \u002F>\nDefines the name displayed on the home screen, app launcher, and task switcher.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>2) App Short Name\u003C\u002Fstrong>\u003Cbr \u002F>\nA shortened version of the app name used where space is limited.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>3) App Icon\u003C\u002Fstrong>\u003Cbr \u002F>\nIcon displayed when the PWA is installed on mobile devices.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>4) Splash Screen Icon\u003C\u002Fstrong>\u003Cbr \u002F>\nIcon shown on the splash screen during app launch, primarily on desktop devices.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>5) Background Color\u003C\u002Fstrong>\u003Cbr \u002F>\nSets the background color used while the application loads.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>6) Theme Color\u003C\u002Fstrong>\u003Cbr \u002F>\nDefines the primary UI color for browser and OS elements.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>7) Start Page\u003C\u002Fstrong>\u003Cbr \u002F>\nSelect the page users land on when opening the installed PWA.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>8) Offline Page\u003C\u002Fstrong>\u003Cbr \u002F>\nSpecify a custom page shown when users are offline and content is unavailable.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>9) Orientation\u003C\u002Fstrong>\u003Cbr \u002F>\nControl whether the app displays in portrait, landscape, or auto mode.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>10) Display Mode\u003C\u002Fstrong>\u003Cbr \u002F>\nChoose how the PWA appears (standalone, fullscreen, minimal UI, or browser).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>11) Text Direction\u003C\u002Fstrong>\u003Cbr \u002F>\nSupports both LTR and RTL languages.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>12) Caching Strategy Type\u003C\u002Fstrong>\u003Cbr \u002F>\nConfigure caching strategies for assets, pages, and requests using service workers.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>13) Manual Pre-Caching\u003C\u002Fstrong>\u003Cbr \u002F>\nDefine URLs that should be cached in advance for faster load times and offline use.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>14) Cache External Origin URLs\u003C\u002Fstrong>\u003Cbr \u002F>\nEnable caching of external resources such as fonts, scripts, or images.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>15) Exclude URLs from Cache\u003C\u002Fstrong>\u003Cbr \u002F>\nExclude specific URLs from caching (comma-separated).\u003C\u002Fp>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin uses \u003Cstrong>Google Workbox\u003C\u002Fstrong> via CDN for service worker and caching functionality.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Service:\u003C\u002Fstrong> Google Workbox\u003Cbr \u002F>\n\u003Cstrong>Purpose:\u003C\u002Fstrong> Enables service workers and caching strategies\u003Cbr \u002F>\n\u003Cstrong>Data Sent:\u003C\u002Fstrong> None\u003Cbr \u002F>\n\u003Cstrong>Privacy Policy:\u003C\u002Fstrong> https:\u002F\u002Fpolicies.google.com\u002Fprivacy\u003C\u002Fp>\n","SiteEase Progressive Web App converts your WordPress website into a Progressive Web App (PWA) with offline support, caching strategies, and installabl &hellip;",70,2111,"2026-01-13T09:17:00.000Z","4.7","5.6",[20,22,186,24,187],"progressive-web-app","service-worker","https:\u002F\u002Fprofiles.wordpress.org\u002Fiflairwebtechnologies","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fiflair-pwa-app.1.1.5.zip",{"slug":191,"name":192,"version":193,"author":194,"author_profile":195,"description":196,"short_description":197,"active_installs":198,"downloaded":199,"rating":129,"num_ratings":200,"last_updated":201,"tested_up_to":202,"requires_at_least":203,"requires_php":18,"tags":204,"homepage":206,"download_link":207,"security_score":208,"vuln_count":29,"unpatched_count":29,"last_vuln_date":38,"fetched_at":31},"smart-pwa","Smart PWA","0.1.6","Toro_Unit (Hiroshi Urabe)","https:\u002F\u002Fprofiles.wordpress.org\u002Ftoro_unit\u002F","\u003Cp>Convert your site to Progressive Web Apps.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Add manifest.\u003C\u002Fli>\n\u003Cli>Offline support.\u003C\u002Fli>\n\u003C\u002Ful>\n","Progressive Web Apps for Your Site.",10,2240,2,"2018-05-22T08:28:00.000Z","4.9.29","4.9",[21,23,24,205],"web-manifest","https:\u002F\u002Fgithub.com\u002Ftorounit\u002Fsmart-pwa","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsmart-pwa.0.1.6.zip",85,{"attackSurface":210,"codeSignals":619,"taintFlows":1198,"riskAssessment":1300,"analyzedAt":1313},{"hooks":211,"ajaxHandlers":540,"restRoutes":614,"shortcodes":615,"cronEvents":616,"entryPointCount":272,"unprotectedCount":200},[212,218,223,227,231,235,239,243,246,250,254,258,261,264,267,270,273,278,282,286,289,292,295,298,302,307,311,315,319,322,326,330,333,338,342,345,349,353,357,361,365,370,374,378,381,385,389,392,396,400,404,408,412,415,419,423,426,430,434,437,440,443,447,449,451,454,456,460,463,465,468,471,474,477,481,484,488,491,494,496,499,502,505,508,511,514,516,518,520,522,524,526,528,530,532,535,538],{"type":213,"name":214,"callback":215,"file":216,"line":217},"action","plugins_loaded","gravitec_init","3rd-party\\class-pwaforwp-gravitec.php",23,{"type":219,"name":220,"callback":221,"file":216,"line":222},"filter","pwaforwp_sw_js_template","add_gravitec",34,{"type":219,"name":224,"callback":225,"file":226,"line":104},"pwaforwp_manifest","pushnami_insert_gcm_sender_id","3rd-party\\class-pwaforwp-pushnami.php",{"type":219,"name":228,"callback":229,"file":226,"line":230},"pwaforwp_sw_name_modify","pwaforwp_pushnami_change_sw_name",14,{"type":213,"name":232,"callback":233,"file":226,"line":234},"wp","pushnami_for_multisite",15,{"type":213,"name":236,"callback":237,"file":226,"line":238},"wp_head","pwaforwp_pushnami_init_pushnami_head",112,{"type":213,"name":214,"callback":240,"file":241,"line":242},"web_init","3rd-party\\class-pwaforwp-webpushr.php",22,{"type":219,"name":220,"callback":244,"file":241,"line":245},"add_webpushr",32,{"type":213,"name":247,"callback":248,"file":249,"line":234},"amp_post_template_head","manifest_link_and_meta","3rd-party\\class-pwaforwp-wpwa.php",{"type":219,"name":251,"callback":252,"priority":198,"file":249,"line":253},"web_app_manifest","manifest_submit",16,{"type":213,"name":255,"callback":256,"file":249,"line":257},"wp_front_service_worker","add_cdn_script_caching",17,{"type":213,"name":232,"callback":259,"file":249,"line":260},"remove_all_pwa_wp_actions",18,{"type":219,"name":262,"callback":263,"file":249,"line":242},"query_vars","add_query_var",{"type":213,"name":265,"callback":266,"file":249,"line":217},"parse_request","handle_service_worker_iframe_install",{"type":213,"name":232,"callback":268,"file":249,"line":269},"add_install_hooks",24,{"type":213,"name":255,"callback":271,"file":249,"line":272},"add_amp_cdn_script_caching",25,{"type":219,"name":274,"callback":275,"priority":276,"file":249,"line":277},"wp_print_scripts","wp_print_service_workers",9,38,{"type":213,"name":279,"callback":280,"file":249,"line":281},"amp_post_template_footer","install_service_worker",47,{"type":219,"name":283,"callback":284,"file":249,"line":285},"amp_post_template_data","closure",48,{"type":219,"name":287,"callback":284,"priority":151,"file":249,"line":288},"wp_die_handler",113,{"type":219,"name":220,"callback":290,"priority":198,"file":291,"line":276},"pwaforwp_add_sw_to_onesignal_sw","3rd-party\\onesignal.php",{"type":219,"name":224,"callback":293,"file":291,"line":294},"pwaforwp_onesignal_insert_gcm_sender_id",64,{"type":219,"name":228,"callback":296,"file":291,"line":297},"pwaforwp_onesignal_change_sw_name",79,{"type":219,"name":299,"callback":300,"priority":198,"file":301,"line":276},"pwaforwp_localize_filter","pwaforwp_add_localize_footer_data","admin\\class-pwaforwp-newsletter.php",{"type":213,"name":303,"callback":304,"file":305,"line":306},"after_switch_theme","schedule_tracking","admin\\class-pwaforwp-plugin-usage-tracker.php",72,{"type":213,"name":308,"callback":309,"file":305,"line":310},"switch_theme","deactivate_this_plugin",73,{"type":213,"name":312,"callback":313,"file":305,"line":314},"put_do_weekly_action","do_tracking",98,{"type":213,"name":316,"callback":317,"file":305,"line":318},"admin_notices","optin_notice",103,{"type":213,"name":316,"callback":320,"file":305,"line":321},"marketing_notice",104,{"type":213,"name":323,"callback":324,"file":305,"line":325},"admin_footer-plugins.php","goodbye_ajax",107,{"type":213,"name":327,"callback":328,"file":329,"line":217},"wp_footer","pwaforwp_loading_icon","admin\\common-function.php",{"type":213,"name":214,"callback":331,"file":329,"line":332},"pwaforwp_load_plugin_textdomain",60,{"type":213,"name":334,"callback":335,"priority":336,"file":329,"line":337},"wp_enqueue_scripts","pwaforwp_frontend_enqueue",35,285,{"type":219,"name":339,"callback":340,"priority":198,"file":329,"line":341},"pwaforwp_file_creation_path","pwaforwp_check_root_writable",787,{"type":219,"name":343,"callback":343,"priority":198,"file":329,"line":344},"pwaforwp_manifest_images_src",1017,{"type":219,"name":346,"callback":347,"priority":198,"file":329,"line":348},"pre_update_option_pwaforwp_settings","pwaforwp_fix_empty_option_update",1361,{"type":219,"name":350,"callback":351,"priority":198,"file":329,"line":352},"pwaforwp_sw_register_template","pwaforwp_sw_register_apk_detect",1424,{"type":219,"name":354,"callback":355,"file":329,"line":356},"pwaforwp_whitelabel_title","pwaforwp_whitelabel_title_cb",1453,{"type":219,"name":358,"callback":359,"file":329,"line":360},"pwaforwp_whitelabel_logo","pwaforwp_whitelabel_logo_cb",1465,{"type":219,"name":362,"callback":363,"file":329,"line":364},"pwaforwp_whitelabel_longtext","pwaforwp_whitelabel_longtext_cb",1477,{"type":213,"name":366,"callback":367,"file":368,"line":369},"admin_menu","pwaforwp_add_menu_links","admin\\settings.php",54,{"type":213,"name":371,"callback":372,"file":368,"line":373},"admin_head","pwaforwp_add_menu_styles",55,{"type":213,"name":375,"callback":376,"file":368,"line":377},"admin_init","pwaforwp_settings_init",429,{"type":213,"name":379,"callback":328,"file":368,"line":380},"admin_footer",434,{"type":213,"name":382,"callback":383,"file":368,"line":384},"admin_print_footer_scripts","pwaforwp_loading_icon_scripts",435,{"type":213,"name":386,"callback":387,"file":368,"line":388},"admin_print_styles","pwaforwp_loading_icon_styles",436,{"type":213,"name":386,"callback":390,"file":368,"line":391},"pwaforwp_loading_select2_styles",438,{"type":213,"name":393,"callback":394,"file":368,"line":395},"admin_enqueue_scripts","pwaforwp_enqueue_style_js",3187,{"type":213,"name":397,"callback":398,"priority":198,"file":368,"line":399},"pwaforwp_loading_icon_libraries","pwaforwp_show_premium_options",3791,{"type":213,"name":401,"callback":402,"file":368,"line":403},"activated_plugin","pwaforwp_active_update_transient",4508,{"type":213,"name":405,"callback":406,"file":368,"line":407},"deactivated_plugin","pwaforwp_deactivate_update_transient",4512,{"type":213,"name":409,"callback":410,"priority":198,"file":368,"line":411},"update_option_pwaforwp_settings","pwaforwp_resize_images",4700,{"type":219,"name":346,"callback":413,"priority":198,"file":368,"line":414},"pwaforwp_update_force_update",4887,{"type":213,"name":393,"callback":416,"priority":417,"file":368,"line":418},"pwaforwp_enqueue_select2_js",9999,5159,{"type":213,"name":214,"callback":420,"file":421,"line":422},"pwaforwp_init_plugin","pwa-for-wp.php",65,{"type":213,"name":316,"callback":424,"file":421,"line":425},"pwaforwp_admin_notice",159,{"type":219,"name":427,"callback":428,"priority":198,"file":421,"line":429},"plugin_row_meta","pwaforwp_add_plugin_meta_links",245,{"type":213,"name":431,"callback":432,"file":421,"line":433},"init","pwaforwp_add_rewrite_rules",310,{"type":213,"name":265,"callback":435,"file":421,"line":436},"pwaforwp_generate_sw_and_manifest_on_fly",311,{"type":213,"name":214,"callback":438,"file":421,"line":439},"pwaforwp_setup_hooks",316,{"type":219,"name":262,"callback":441,"file":421,"line":442},"pwaforwp_manifest_query_vars",318,{"type":213,"name":444,"callback":445,"priority":198,"file":446,"line":104},"transition_post_status","pwaforwp_send_notification_on_post_save","service-work\\class-pwaforwp-push-notification.php",{"type":219,"name":224,"callback":448,"priority":336,"file":446,"line":230},"pwaforwp_load_pn_manifest",{"type":213,"name":334,"callback":450,"priority":222,"file":446,"line":234},"pwaforwp_load_pn_script_add",{"type":213,"name":232,"callback":452,"priority":151,"file":453,"line":242},"pwaforwp_service_worker_init","service-work\\class-pwaforwp-service-worker.php",{"type":213,"name":327,"callback":455,"file":453,"line":269},"pwaforwp_custom_add_to_home_screen",{"type":213,"name":457,"callback":458,"file":453,"line":459},"pre_amp_render_post","pwaforwp_amp_entry_point",28,{"type":213,"name":232,"callback":461,"file":453,"line":462},"pwaforwp_automattic_amp_entry_point",30,{"type":213,"name":232,"callback":464,"file":453,"line":245},"pixelative_amp_entry_point",{"type":213,"name":466,"callback":467,"priority":198,"file":453,"line":336},"publish_post","pwaforwp_store_latest_post_ids",{"type":213,"name":469,"callback":467,"priority":198,"file":453,"line":470},"publish_page",36,{"type":213,"name":431,"callback":472,"file":453,"line":473},"pwaforwp_onesignal_rewrite",39,{"type":213,"name":431,"callback":475,"file":453,"line":476},"pwaforwp_pushnami_rewrite",42,{"type":213,"name":478,"callback":479,"file":453,"line":480},"rest_api_init","register_manifest_rest_route",49,{"type":213,"name":431,"callback":482,"file":453,"line":483},"pwa_add_error_template_query_var",50,{"type":213,"name":485,"callback":486,"file":453,"line":487},"parse_query","pwaforwp_load_service_worker",51,{"type":213,"name":489,"callback":490,"file":453,"line":373},"wp_login","on_user_logged_in",{"type":219,"name":492,"callback":493,"file":453,"line":332},"site_icon_meta_tags","site_icon_apple_touch_remove",{"type":213,"name":431,"callback":495,"file":453,"line":422},"load_scripts",{"type":213,"name":327,"callback":497,"file":453,"line":498},"pwaforwp_service_worker",302,{"type":219,"name":283,"callback":500,"priority":336,"file":453,"line":501},"pwaforwp_service_worker_script",303,{"type":213,"name":236,"callback":503,"priority":151,"file":453,"line":504},"pwaforwp_paginated_post_add_homescreen_amp",304,{"type":213,"name":236,"callback":506,"priority":150,"file":453,"line":507},"apple_icons_support",305,{"type":213,"name":334,"callback":509,"priority":336,"file":453,"line":510},"pwaforwp_service_worker_non_amp",312,{"type":213,"name":236,"callback":512,"priority":151,"file":453,"line":513},"pwaforwp_paginated_post_add_homescreen",313,{"type":213,"name":236,"callback":506,"priority":150,"file":453,"line":515},314,{"type":213,"name":279,"callback":497,"priority":234,"file":453,"line":517},441,{"type":219,"name":283,"callback":500,"priority":336,"file":453,"line":519},442,{"type":213,"name":247,"callback":503,"priority":151,"file":453,"line":521},443,{"type":213,"name":247,"callback":506,"priority":150,"file":453,"line":523},444,{"type":213,"name":327,"callback":497,"file":453,"line":525},449,{"type":219,"name":283,"callback":500,"priority":336,"file":453,"line":527},450,{"type":213,"name":236,"callback":503,"priority":151,"file":453,"line":529},451,{"type":213,"name":236,"callback":506,"priority":150,"file":453,"line":531},452,{"type":213,"name":533,"callback":497,"priority":234,"file":453,"line":534},"amp_wp_template_footer",458,{"type":213,"name":536,"callback":503,"priority":151,"file":453,"line":537},"amp_wp_template_head",460,{"type":213,"name":536,"callback":506,"priority":150,"file":453,"line":539},461,[541,547,551,554,556,559,561,564,567,570,573,576,579,582,585,588,591,594,598,600,601,603,606,609,613],{"action":542,"nopriv":543,"callback":544,"hasNonce":545,"hasCapCheck":543,"file":305,"line":546},"goodbye_form",false,"goodbye_form_callback",true,108,{"action":548,"nopriv":543,"callback":549,"hasNonce":545,"hasCapCheck":545,"file":550,"line":276},"pwafowp_enable_modules_upgread","enable_modules","admin\\class-pwaforwp-utility.php",{"action":552,"nopriv":543,"callback":553,"hasNonce":545,"hasCapCheck":545,"file":550,"line":198},"pwafowp_enable_modules_active","enable_modules_active_dashboard",{"action":555,"nopriv":543,"callback":555,"hasNonce":545,"hasCapCheck":545,"file":329,"line":373},"pwaforwp_reset_all_settings",{"action":557,"nopriv":543,"callback":557,"hasNonce":545,"hasCapCheck":545,"file":329,"line":558},"pwaforwp_review_notice_close",83,{"action":560,"nopriv":543,"callback":560,"hasNonce":545,"hasCapCheck":545,"file":329,"line":325},"pwaforwp_review_notice_remindme",{"action":562,"nopriv":543,"callback":562,"hasNonce":545,"hasCapCheck":545,"file":368,"line":563},"pwaforwp_send_query_message",3242,{"action":565,"nopriv":543,"callback":565,"hasNonce":545,"hasCapCheck":545,"file":368,"line":566},"pwaforwp_license_transient",3245,{"action":568,"nopriv":543,"callback":568,"hasNonce":545,"hasCapCheck":545,"file":368,"line":569},"pwaforwp_license_transient_zto7",3263,{"action":571,"nopriv":543,"callback":571,"hasNonce":545,"hasCapCheck":545,"file":368,"line":572},"pwaforwp_license_status_check",3485,{"action":574,"nopriv":543,"callback":574,"hasNonce":545,"hasCapCheck":545,"file":368,"line":575},"pwaforwp_update_features_options",4212,{"action":577,"nopriv":543,"callback":577,"hasNonce":545,"hasCapCheck":545,"file":368,"line":578},"pwaforwp_include_visibility_setting_callback",4517,{"action":580,"nopriv":543,"callback":580,"hasNonce":545,"hasCapCheck":545,"file":368,"line":581},"pwaforwp_include_visibility_condition_callback",4622,{"action":583,"nopriv":543,"callback":583,"hasNonce":545,"hasCapCheck":545,"file":368,"line":584},"pwaforwp_exclude_visibility_condition_callback",4654,{"action":586,"nopriv":543,"callback":586,"hasNonce":545,"hasCapCheck":545,"file":368,"line":587},"pwaforwp_subscribe_newsletter",4764,{"action":589,"nopriv":543,"callback":589,"hasNonce":545,"hasCapCheck":545,"file":368,"line":590},"pwaforwp_splashscreen_uploader",4811,{"action":592,"nopriv":543,"callback":592,"hasNonce":545,"hasCapCheck":545,"file":368,"line":593},"pwaforwp_get_select2_data",5133,{"action":595,"nopriv":543,"callback":595,"hasNonce":545,"hasCapCheck":545,"file":596,"line":597},"pwaforwp_download_setup_files","service-work\\class-pwaforwp-file-creation-init.php",120,{"action":599,"nopriv":545,"callback":599,"hasNonce":545,"hasCapCheck":543,"file":446,"line":253},"pwaforwp_store_token",{"action":599,"nopriv":543,"callback":599,"hasNonce":545,"hasCapCheck":543,"file":446,"line":257},{"action":602,"nopriv":543,"callback":602,"hasNonce":545,"hasCapCheck":545,"file":446,"line":260},"pwaforwp_send_notification_manually",{"action":604,"nopriv":543,"callback":604,"hasNonce":545,"hasCapCheck":545,"file":446,"line":605},"pwaforwp_upload_fcm_json",19,{"action":607,"nopriv":543,"callback":607,"hasNonce":545,"hasCapCheck":545,"file":453,"line":608},"pwaforwp_update_pre_caching_urls",37,{"action":610,"nopriv":543,"callback":611,"hasNonce":543,"hasCapCheck":543,"file":453,"line":612},"pwaforwp_sw_files","pwaforwp_load_service_worker_ajax",75,{"action":610,"nopriv":545,"callback":611,"hasNonce":543,"hasCapCheck":543,"file":453,"line":107},[],[],[617],{"hook":312,"callback":312,"file":305,"line":618},125,{"dangerousFunctions":620,"sqlUsage":621,"outputEscaping":623,"fileOperations":1193,"externalRequests":276,"nonceChecks":242,"capabilityChecks":272,"bundledLibraries":1194},[],{"prepared":29,"raw":29,"locations":622},[],{"escaped":624,"rawEcho":625,"locations":626},570,294,[627,630,632,634,636,638,640,642,644,646,647,648,650,651,653,655,657,659,660,662,663,664,666,667,669,671,673,675,677,679,681,683,685,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,739,740,742,743,744,746,748,750,752,754,756,758,759,761,763,765,767,769,771,773,775,777,779,781,783,785,787,789,791,793,795,797,799,801,803,805,807,809,811,813,815,817,819,821,823,825,827,829,831,833,835,837,839,841,843,845,847,849,851,853,855,857,859,861,863,865,867,869,871,873,875,877,879,881,882,883,885,887,889,891,893,895,897,899,901,903,905,907,909,911,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,947,949,951,953,955,957,959,961,962,964,966,968,970,972,974,976,978,980,982,984,986,988,990,992,994,996,998,1000,1002,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156,1157,1159,1160,1162,1164,1165,1167,1168,1170,1172,1174,1175,1177,1179,1181,1183,1185,1187,1189,1191],{"file":226,"line":628,"context":629},132,"raw output",{"file":249,"line":631,"context":629},573,{"file":249,"line":633,"context":629},574,{"file":249,"line":635,"context":629},577,{"file":305,"line":637,"context":629},695,{"file":305,"line":639,"context":629},696,{"file":305,"line":641,"context":629},698,{"file":305,"line":643,"context":629},699,{"file":305,"line":645,"context":629},899,{"file":550,"line":260,"context":629},{"file":550,"line":269,"context":629},{"file":550,"line":649,"context":629},58,{"file":550,"line":332,"context":629},{"file":550,"line":652,"context":629},69,{"file":550,"line":654,"context":629},74,{"file":550,"line":656,"context":629},89,{"file":550,"line":658,"context":629},91,{"file":329,"line":260,"context":629},{"file":329,"line":661,"context":629},45,{"file":329,"line":480,"context":629},{"file":329,"line":107,"context":629},{"file":329,"line":665,"context":629},78,{"file":329,"line":129,"context":629},{"file":329,"line":668,"context":629},102,{"file":368,"line":670,"context":629},248,{"file":368,"line":672,"context":629},261,{"file":368,"line":674,"context":629},263,{"file":368,"line":676,"context":629},265,{"file":368,"line":678,"context":629},267,{"file":368,"line":680,"context":629},269,{"file":368,"line":682,"context":629},286,{"file":368,"line":684,"context":629},288,{"file":368,"line":507,"context":629},{"file":368,"line":687,"context":629},335,{"file":368,"line":689,"context":629},367,{"file":368,"line":691,"context":629},370,{"file":368,"line":693,"context":629},371,{"file":368,"line":695,"context":629},373,{"file":368,"line":697,"context":629},375,{"file":368,"line":699,"context":629},376,{"file":368,"line":701,"context":629},377,{"file":368,"line":703,"context":629},380,{"file":368,"line":705,"context":629},383,{"file":368,"line":707,"context":629},384,{"file":368,"line":709,"context":629},386,{"file":368,"line":711,"context":629},411,{"file":368,"line":713,"context":629},413,{"file":368,"line":715,"context":629},414,{"file":368,"line":717,"context":629},415,{"file":368,"line":719,"context":629},417,{"file":368,"line":721,"context":629},1271,{"file":368,"line":723,"context":629},1277,{"file":368,"line":725,"context":629},1289,{"file":368,"line":727,"context":629},1312,{"file":368,"line":729,"context":629},1327,{"file":368,"line":731,"context":629},1332,{"file":368,"line":733,"context":629},1345,{"file":368,"line":735,"context":629},1358,{"file":368,"line":737,"context":629},1377,{"file":368,"line":737,"context":629},{"file":368,"line":737,"context":629},{"file":368,"line":741,"context":629},1379,{"file":368,"line":741,"context":629},{"file":368,"line":741,"context":629},{"file":368,"line":745,"context":629},1393,{"file":368,"line":747,"context":629},1406,{"file":368,"line":749,"context":629},1417,{"file":368,"line":751,"context":629},1426,{"file":368,"line":753,"context":629},1435,{"file":368,"line":755,"context":629},1456,{"file":368,"line":757,"context":629},1488,{"file":368,"line":757,"context":629},{"file":368,"line":760,"context":629},1497,{"file":368,"line":762,"context":629},1498,{"file":368,"line":764,"context":629},1506,{"file":368,"line":766,"context":629},1522,{"file":368,"line":768,"context":629},1523,{"file":368,"line":770,"context":629},1542,{"file":368,"line":772,"context":629},1544,{"file":368,"line":774,"context":629},1557,{"file":368,"line":776,"context":629},1563,{"file":368,"line":778,"context":629},1569,{"file":368,"line":780,"context":629},1580,{"file":368,"line":782,"context":629},1586,{"file":368,"line":784,"context":629},1588,{"file":368,"line":786,"context":629},1596,{"file":368,"line":788,"context":629},1599,{"file":368,"line":790,"context":629},1600,{"file":368,"line":792,"context":629},1630,{"file":368,"line":794,"context":629},1634,{"file":368,"line":796,"context":629},1661,{"file":368,"line":798,"context":629},1672,{"file":368,"line":800,"context":629},1677,{"file":368,"line":802,"context":629},1682,{"file":368,"line":804,"context":629},1710,{"file":368,"line":806,"context":629},1725,{"file":368,"line":808,"context":629},1731,{"file":368,"line":810,"context":629},1734,{"file":368,"line":812,"context":629},1735,{"file":368,"line":814,"context":629},1777,{"file":368,"line":816,"context":629},1778,{"file":368,"line":818,"context":629},1781,{"file":368,"line":820,"context":629},1785,{"file":368,"line":822,"context":629},1789,{"file":368,"line":824,"context":629},1793,{"file":368,"line":826,"context":629},1797,{"file":368,"line":828,"context":629},1801,{"file":368,"line":830,"context":629},1805,{"file":368,"line":832,"context":629},1819,{"file":368,"line":834,"context":629},1832,{"file":368,"line":836,"context":629},1845,{"file":368,"line":838,"context":629},1859,{"file":368,"line":840,"context":629},1868,{"file":368,"line":842,"context":629},1885,{"file":368,"line":844,"context":629},1886,{"file":368,"line":846,"context":629},1895,{"file":368,"line":848,"context":629},1902,{"file":368,"line":850,"context":629},1913,{"file":368,"line":852,"context":629},1924,{"file":368,"line":854,"context":629},1931,{"file":368,"line":856,"context":629},1936,{"file":368,"line":858,"context":629},1941,{"file":368,"line":860,"context":629},1956,{"file":368,"line":862,"context":629},1957,{"file":368,"line":864,"context":629},1958,{"file":368,"line":866,"context":629},1967,{"file":368,"line":868,"context":629},2019,{"file":368,"line":870,"context":629},2022,{"file":368,"line":872,"context":629},2023,{"file":368,"line":874,"context":629},2024,{"file":368,"line":876,"context":629},2031,{"file":368,"line":878,"context":629},2035,{"file":368,"line":880,"context":629},2037,{"file":368,"line":880,"context":629},{"file":368,"line":880,"context":629},{"file":368,"line":884,"context":629},2040,{"file":368,"line":886,"context":629},2045,{"file":368,"line":888,"context":629},2049,{"file":368,"line":890,"context":629},2051,{"file":368,"line":892,"context":629},2052,{"file":368,"line":894,"context":629},2056,{"file":368,"line":896,"context":629},2060,{"file":368,"line":898,"context":629},2062,{"file":368,"line":900,"context":629},2066,{"file":368,"line":902,"context":629},2070,{"file":368,"line":904,"context":629},2072,{"file":368,"line":906,"context":629},2079,{"file":368,"line":908,"context":629},2084,{"file":368,"line":910,"context":629},2086,{"file":368,"line":181,"context":629},{"file":368,"line":913,"context":629},2116,{"file":368,"line":915,"context":629},2127,{"file":368,"line":917,"context":629},2129,{"file":368,"line":919,"context":629},2133,{"file":368,"line":921,"context":629},2138,{"file":368,"line":923,"context":629},2140,{"file":368,"line":925,"context":629},2147,{"file":368,"line":927,"context":629},2151,{"file":368,"line":929,"context":629},2153,{"file":368,"line":931,"context":629},2159,{"file":368,"line":933,"context":629},2164,{"file":368,"line":935,"context":629},2166,{"file":368,"line":937,"context":629},2173,{"file":368,"line":939,"context":629},2177,{"file":368,"line":941,"context":629},2179,{"file":368,"line":943,"context":629},2188,{"file":368,"line":945,"context":629},2193,{"file":368,"line":945,"context":629},{"file":368,"line":948,"context":629},2201,{"file":368,"line":950,"context":629},2202,{"file":368,"line":952,"context":629},2210,{"file":368,"line":954,"context":629},2211,{"file":368,"line":956,"context":629},2218,{"file":368,"line":958,"context":629},2219,{"file":368,"line":960,"context":629},2238,{"file":368,"line":199,"context":629},{"file":368,"line":963,"context":629},2241,{"file":368,"line":965,"context":629},2242,{"file":368,"line":967,"context":629},2243,{"file":368,"line":969,"context":629},2244,{"file":368,"line":971,"context":629},2245,{"file":368,"line":973,"context":629},2290,{"file":368,"line":975,"context":629},2294,{"file":368,"line":977,"context":629},2311,{"file":368,"line":979,"context":629},2313,{"file":368,"line":981,"context":629},2316,{"file":368,"line":983,"context":629},2333,{"file":368,"line":985,"context":629},2337,{"file":368,"line":987,"context":629},2354,{"file":368,"line":989,"context":629},2358,{"file":368,"line":991,"context":629},2365,{"file":368,"line":993,"context":629},2368,{"file":368,"line":995,"context":629},2370,{"file":368,"line":997,"context":629},2371,{"file":368,"line":999,"context":629},2372,{"file":368,"line":1001,"context":629},2384,{"file":368,"line":1003,"context":629},2409,{"file":368,"line":1005,"context":629},2427,{"file":368,"line":1007,"context":629},2429,{"file":368,"line":1009,"context":629},2432,{"file":368,"line":1011,"context":629},2448,{"file":368,"line":1013,"context":629},2460,{"file":368,"line":1015,"context":629},2461,{"file":368,"line":1017,"context":629},2471,{"file":368,"line":1019,"context":629},2483,{"file":368,"line":1021,"context":629},2491,{"file":368,"line":1023,"context":629},2522,{"file":368,"line":1025,"context":629},2526,{"file":368,"line":1027,"context":629},2560,{"file":368,"line":1029,"context":629},2563,{"file":368,"line":1031,"context":629},2604,{"file":368,"line":1033,"context":629},2607,{"file":368,"line":1035,"context":629},2613,{"file":368,"line":1037,"context":629},2629,{"file":368,"line":1039,"context":629},2632,{"file":368,"line":1041,"context":629},2635,{"file":368,"line":1043,"context":629},2638,{"file":368,"line":1045,"context":629},2641,{"file":368,"line":1047,"context":629},2644,{"file":368,"line":1049,"context":629},2647,{"file":368,"line":1051,"context":629},2650,{"file":368,"line":1053,"context":629},2671,{"file":368,"line":1055,"context":629},2674,{"file":368,"line":1057,"context":629},2677,{"file":368,"line":1059,"context":629},2680,{"file":368,"line":1061,"context":629},2683,{"file":368,"line":1063,"context":629},2701,{"file":368,"line":1065,"context":629},2704,{"file":368,"line":1067,"context":629},2707,{"file":368,"line":1069,"context":629},2730,{"file":368,"line":1071,"context":629},2731,{"file":368,"line":1073,"context":629},2734,{"file":368,"line":1075,"context":629},2735,{"file":368,"line":1077,"context":629},2803,{"file":368,"line":1079,"context":629},2806,{"file":368,"line":1081,"context":629},2807,{"file":368,"line":1083,"context":629},2810,{"file":368,"line":1085,"context":629},2811,{"file":368,"line":1087,"context":629},2818,{"file":368,"line":1089,"context":629},2819,{"file":368,"line":1091,"context":629},2831,{"file":368,"line":1093,"context":629},2832,{"file":368,"line":1095,"context":629},2833,{"file":368,"line":1097,"context":629},2922,{"file":368,"line":1099,"context":629},2923,{"file":368,"line":1101,"context":629},2927,{"file":368,"line":1103,"context":629},2930,{"file":368,"line":1105,"context":629},2934,{"file":368,"line":1107,"context":629},2939,{"file":368,"line":1109,"context":629},2957,{"file":368,"line":1111,"context":629},2987,{"file":368,"line":1113,"context":629},3019,{"file":368,"line":1115,"context":629},3026,{"file":368,"line":1117,"context":629},3232,{"file":368,"line":1119,"context":629},3234,{"file":368,"line":1121,"context":629},3478,{"file":368,"line":1123,"context":629},3802,{"file":368,"line":1125,"context":629},4055,{"file":368,"line":1127,"context":629},4123,{"file":368,"line":1129,"context":629},4216,{"file":368,"line":1131,"context":629},4220,{"file":368,"line":1133,"context":629},4224,{"file":368,"line":1135,"context":629},4500,{"file":368,"line":1137,"context":629},4503,{"file":368,"line":1139,"context":629},4618,{"file":368,"line":1141,"context":629},4651,{"file":368,"line":1143,"context":629},4684,{"file":368,"line":1145,"context":629},4805,{"file":368,"line":1147,"context":629},4815,{"file":368,"line":1149,"context":629},4820,{"file":368,"line":1151,"context":629},4824,{"file":368,"line":1153,"context":629},4882,{"file":421,"line":1155,"context":629},180,{"file":421,"line":1155,"context":629},{"file":421,"line":1158,"context":629},190,{"file":421,"line":1158,"context":629},{"file":421,"line":1161,"context":629},221,{"file":421,"line":1163,"context":629},279,{"file":596,"line":425,"context":629},{"file":596,"line":1166,"context":629},161,{"file":446,"line":373,"context":629},{"file":446,"line":1169,"context":629},59,{"file":446,"line":1171,"context":629},213,{"file":446,"line":1173,"context":629},215,{"file":453,"line":628,"context":629},{"file":453,"line":1176,"context":629},187,{"file":453,"line":1178,"context":629},223,{"file":453,"line":1180,"context":629},280,{"file":453,"line":1182,"context":629},352,{"file":453,"line":1184,"context":629},484,{"file":453,"line":1186,"context":629},485,{"file":453,"line":1188,"context":629},589,{"file":453,"line":1190,"context":629},697,{"file":453,"line":1192,"context":629},713,3,[1195],{"name":1196,"version":38,"knownCves":1197},"Select2",[],[1199,1221,1235,1248,1258,1266,1279,1287],{"entryPoint":1200,"graph":1201,"unsanitizedCount":200,"severity":41},"pwaforwp_load_service_worker_ajax (service-work\\class-pwaforwp-service-worker.php:95)",{"nodes":1202,"edges":1218},[1203,1208,1213,1216],{"id":1204,"type":1205,"label":1206,"file":453,"line":1207},"n0","source","$_GET",117,{"id":1209,"type":1210,"label":1211,"file":453,"line":628,"wp_function":1212},"n1","sink","echo() [XSS]","echo",{"id":1214,"type":1205,"label":1215,"file":453,"line":318},"n2","$_GET[?]",{"id":1217,"type":1210,"label":1211,"file":453,"line":1176,"wp_function":1212},"n3",[1219,1220],{"from":1204,"to":1209,"sanitized":543},{"from":1214,"to":1217,"sanitized":543},{"entryPoint":1222,"graph":1223,"unsanitizedCount":29,"severity":1234},"goodbye_form_callback (admin\\class-pwaforwp-plugin-usage-tracker.php:943)",{"nodes":1224,"edges":1232},[1225,1228],{"id":1204,"type":1205,"label":1226,"file":305,"line":1227},"$_POST (x2)",946,{"id":1209,"type":1210,"label":1229,"file":305,"line":1230,"wp_function":1231},"update_option() [Settings Manipulation]",947,"update_option",[1233],{"from":1204,"to":1209,"sanitized":545},"low",{"entryPoint":1236,"graph":1237,"unsanitizedCount":29,"severity":1234},"\u003Cclass-pwaforwp-plugin-usage-tracker> (admin\\class-pwaforwp-plugin-usage-tracker.php:0)",{"nodes":1238,"edges":1245},[1239,1241,1243,1244],{"id":1204,"type":1205,"label":1206,"file":305,"line":1240},624,{"id":1209,"type":1210,"label":1211,"file":305,"line":1242,"wp_function":1212},751,{"id":1214,"type":1205,"label":1226,"file":305,"line":1227},{"id":1217,"type":1210,"label":1229,"file":305,"line":1230,"wp_function":1231},[1246,1247],{"from":1204,"to":1209,"sanitized":545},{"from":1214,"to":1217,"sanitized":545},{"entryPoint":1249,"graph":1250,"unsanitizedCount":29,"severity":1234},"pwaforwp_license_status_check (admin\\settings.php:3455)",{"nodes":1251,"edges":1256},[1252,1255],{"id":1204,"type":1205,"label":1253,"file":368,"line":1254},"$_POST",3468,{"id":1209,"type":1210,"label":1211,"file":368,"line":1121,"wp_function":1212},[1257],{"from":1204,"to":1209,"sanitized":545},{"entryPoint":1259,"graph":1260,"unsanitizedCount":29,"severity":1234},"\u003Csettings> (admin\\settings.php:0)",{"nodes":1261,"edges":1264},[1262,1263],{"id":1204,"type":1205,"label":1253,"file":368,"line":1254},{"id":1209,"type":1210,"label":1211,"file":368,"line":1121,"wp_function":1212},[1265],{"from":1204,"to":1209,"sanitized":545},{"entryPoint":1267,"graph":1268,"unsanitizedCount":29,"severity":1234},"pwaforwp_upload_fcm_json (service-work\\class-pwaforwp-push-notification.php:458)",{"nodes":1269,"edges":1277},[1270,1273],{"id":1204,"type":1205,"label":1271,"file":446,"line":1272},"$_FILES",464,{"id":1209,"type":1210,"label":1274,"file":446,"line":1275,"wp_function":1276},"file_get_contents() [SSRF\u002FLFI]",486,"file_get_contents",[1278],{"from":1204,"to":1209,"sanitized":545},{"entryPoint":1280,"graph":1281,"unsanitizedCount":29,"severity":1234},"\u003Cclass-pwaforwp-push-notification> (service-work\\class-pwaforwp-push-notification.php:0)",{"nodes":1282,"edges":1285},[1283,1284],{"id":1204,"type":1205,"label":1271,"file":446,"line":1272},{"id":1209,"type":1210,"label":1274,"file":446,"line":1275,"wp_function":1276},[1286],{"from":1204,"to":1209,"sanitized":545},{"entryPoint":1288,"graph":1289,"unsanitizedCount":29,"severity":1234},"\u003Cclass-pwaforwp-service-worker> (service-work\\class-pwaforwp-service-worker.php:0)",{"nodes":1290,"edges":1297},[1291,1293,1294,1296],{"id":1204,"type":1205,"label":1292,"file":453,"line":1207},"$_GET (x2)",{"id":1209,"type":1210,"label":1211,"file":453,"line":628,"wp_function":1212},{"id":1214,"type":1205,"label":1295,"file":453,"line":318},"$_GET[?] (x3)",{"id":1217,"type":1210,"label":1211,"file":453,"line":1176,"wp_function":1212},[1298,1299],{"from":1204,"to":1209,"sanitized":545},{"from":1214,"to":1217,"sanitized":545},{"summary":1301,"deductions":1302},"The pwa-for-wp plugin v1.7.84 exhibits a mixed security posture. While it demonstrates good practices in some areas, such as using prepared statements for all SQL queries and implementing nonces and capability checks for most entry points, significant concerns remain. The presence of two AJAX handlers without proper authentication checks presents a direct attack vector for unauthorized actions.  Furthermore, the taint analysis revealing one flow with unsanitized paths, although not critical or high severity in this instance, highlights potential for input validation weaknesses that could be exploited.\n\nThe vulnerability history of this plugin is a major red flag. With 5 known CVEs, including 2 high and 3 medium severity vulnerabilities, it indicates a recurring pattern of security flaws. The common vulnerability types like Missing Authorization and Cross-site Scripting suggest a lack of robust input validation and authorization controls in previous versions, which might still be present in subtle forms. The fact that the last vulnerability was very recent (September 2024) and that none are currently unpatched is positive, but the overall history points to a plugin that has historically struggled with secure development.\n\nIn conclusion, while the plugin has strengths like prepared SQL statements and a good number of security checks, the unauthenticated AJAX handlers and the concerning vulnerability history necessitate caution. The potential for exploitation of the unsanitized path flow, combined with the plugin's track record, elevates the overall risk. Organizations should carefully consider the implications of these findings and ensure robust security measures are in place.",[1303,1305,1307,1309,1311],{"reason":1304,"points":198},"AJAX handlers without auth checks",{"reason":1306,"points":48},"Flow with unsanitized paths found",{"reason":1308,"points":260},"2 High severity CVEs",{"reason":1310,"points":234},"3 Medium severity CVEs",{"reason":1312,"points":28},"66% output escaping (864 total)","2026-03-16T17:31:56.583Z",{"wat":1315,"direct":1333},{"assetPaths":1316,"generatorPatterns":1324,"scriptPaths":1325,"versionParams":1326},[1317,1318,1319,1320,1321,1322,1323],"\u002Fwp-content\u002Fplugins\u002Fpwa-for-wp\u002Fadmin\u002Fjs\u002Fpwa-for-wp-admin.js","\u002Fwp-content\u002Fplugins\u002Fpwa-for-wp\u002Fadmin\u002Fcss\u002Fpwa-for-wp-admin.css","\u002Fwp-content\u002Fplugins\u002Fpwa-for-wp\u002Fassets\u002Fcss\u002Fpwa-for-wp.css","\u002Fwp-content\u002Fplugins\u002Fpwa-for-wp\u002Fassets\u002Fjs\u002Fpwa-for-wp.js","\u002Fwp-content\u002Fplugins\u002Fpwa-for-wp\u002Fservice-work\u002Fpwa-register-sw.js","\u002Fwp-content\u002Fplugins\u002Fpwa-for-wp\u002Fservice-work\u002Fpwa-amp-sw.js","\u002Fwp-content\u002Fplugins\u002Fpwa-for-wp\u002Fservice-work\u002Fpwa-amp-manifest.json",[],[1317,1320,1321,1322],[1327,1328,1329,1330,1331,1332],"pwa-for-wp\u002Fadmin\u002Fjs\u002Fpwa-for-wp-admin.js?ver=","pwa-for-wp\u002Fadmin\u002Fcss\u002Fpwa-for-wp-admin.css?ver=","pwa-for-wp\u002Fassets\u002Fcss\u002Fpwa-for-wp.css?ver=","pwa-for-wp\u002Fassets\u002Fjs\u002Fpwa-for-wp.js?ver=","pwa-for-wp\u002Fservice-work\u002Fpwa-register-sw.js?ver=","pwa-for-wp\u002Fservice-work\u002Fpwa-amp-sw.js?ver=",{"cssClasses":1334,"htmlComments":1336,"htmlAttributes":1337,"restEndpoints":1339,"jsGlobals":1340,"shortcodeOutput":1343},[1335],"pwa-for-wp-update-pre-caching-urls",[],[1338],"data-iframe-src",[],[1341,1342],"PWAFORWP_PLUGIN_VERSION","pwaforwp_settings",[]]