Lighthouse Mobile
· 0 checks — Mobile Lighthouse audit -- Performance, Accessibility, Best Practices, and SEO category breakdown.Detailed Report
Audit breakdown by category with detailed findings.
Performance
Insights
Remove large, duplicate JavaScript modules from bundles to reduce unnecessary bytes consumed by network activity.
Performance issues directly impact user engagement and conversion rates.
Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile Baseline features, unless you know you must support older browsers. Learn why most sites can deploy ES6+ code without transpiling
Performance issues directly impact user engagement and conversion rates.
3rd party code can significantly impact load performance. Reduce and defer loading of 3rd party code to prioritize your page's content.
Performance issues directly impact user engagement and conversion rates.
Avoid chaining critical requests by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.
Performance issues directly impact user engagement and conversion rates.
Requests are blocking the page's initial render, which may delay LCP. Deferring or inlining can move these network requests out of the critical path.
Performance issues directly impact user engagement and conversion rates.
| URL | Transfer Size | Duration |
|---|---|---|
| grocery-e-commerce-p-gd7t.bolt.host/assets/index-DQqN2eHr.css | 6.7 KiB | |
| /css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+... | 2.6 KiB | 872 ms |
These insights are also available in the Chrome DevTools Performance Panel - record a trace to view more detailed information.
Time to Interactive is the amount of time it takes for the page to become fully interactive. Learn more about the Time to Interactive metric.
Performance issues directly impact user engagement and conversion rates.
Diagnostics
Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. Learn how to reduce unused JavaScript.
Performance issues directly impact user engagement and conversion rates.
| URL | Transfer Size | Est Savings |
|---|---|---|
| grocery-e-commerce-p-gd7t.bolt.host/assets/index-DeUdAHUR.js | 233.5 KiB | 46.1 KiB |
More information about the performance of your application. These numbers don't directly affect the Performance score.
Accessibility
These checks highlight opportunities to improve the accessibility of your web app. Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so manual testing is also encouraged.
Names and labels
When a button doesn't have an accessible name, screen readers announce it as "button", making it unusable for users who rely on screen readers. Learn how to make buttons more accessible.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
header.sticky > div.mx-auto > div.flex > button.relative header.sticky > div.mx-auto > div.flex > button.relative |
header.sticky > div.mx-auto > div.flex > button.rounded-lg header.sticky > div.mx-auto > div.flex > button.rounded-lg |
div.mb-6 > div.flex > div.relative > button.flex div.mb-6 > div.flex > div.relative > button.flex |
aside.fixed > div.flex > div.flex > button.rounded-lg aside.fixed > div.flex > div.flex > button.rounded-lg |
These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader.
Contrast
Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
All section.border-b > div.mx-auto > div.flex > button.flex-shrink-0 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 30 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 45 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 60 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 50 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 30 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 45 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 60 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 50 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 40 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 55 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 60 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 80 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 25 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
/ kg div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 20 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
/ dozen div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 35 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
/ piece div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 20 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ piece div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 100 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
/ piece div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 80 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
★ Featured div.grid > div.group > div.relative > span.absolute |
/ L div.p-4 > div.flex > div.flex > span.text-xs |
In stock: 40 div.group > div.p-4 > div.flex > span.text-xs |
Add to cart div.grid > div.group > div.p-4 > button.mt-3 |
© 2026 Fresh Grocery. All rights reserved. div.min-h-screen > footer.bg-neutral-900 > div.mx-auto > div.mt-10 |
Add products to start shopping aside.fixed > div.flex > div.flex > p.text-sm |
Start shopping aside.fixed > div.flex > div.flex > button.btn-primary |
These are opportunities to improve the legibility of your content.
Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. Learn more about accessible names.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
EN div.mx-auto > div.flex > div.relative > button.flex |
Best Practices
General
Errors logged to the console indicate unresolved problems. They can come from network request failures and other browser concerns. Learn more about this errors in console diagnostic audit
Performance issues directly impact user engagement and conversion rates.
| Source | Description |
|---|---|
Loading the script 'https://bolt.new/badge.js?s=5044cfd4-c32a-4f4f-a1ca-736fd5f5ede9' violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback. The action has been blocked. | |
grocery-e-commerce-p-gd7t.bolt.host/ line 14, col 0 | The Content Security Policy directive 'frame-ancestors' is ignored when delivered via a <meta> element. |
grocery-e-commerce-p-gd7t.bolt.host/ line 11, col 0 | X-Frame-Options may only be set via an HTTP header sent along with a document. It may not be set inside <meta>. |
Issues logged to the `Issues` panel in Chrome Devtools indicate unresolved problems. They can come from network request failures, insufficient security controls, and other browser concerns. Open up the Issues panel in Chrome DevTools for more details on each issue.
Performance issues directly impact user engagement and conversion rates.
| Issue type |
|---|
| Content security policy |
Source maps translate minified code to the original source code. This helps developers debug in production. In addition, Lighthouse is able to provide further insights. Consider deploying source maps to take advantage of these benefits. Learn more about source maps.
Performance issues directly impact user engagement and conversion rates.
SEO
These checks ensure that your page is following basic search engine optimization advice. There are many additional factors Lighthouse does not score here that may affect your search ranking, including performance on Core Web Vitals. Learn more about Google Search Essentials.
Crawling and Indexing
If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed. Learn more about robots.txt.
Performance issues directly impact user engagement and conversion rates.
| Line # | Content | Error |
|---|---|---|
| 131 | <!doctype html> | Syntax not understood |
| 132 | <html lang="ar" dir="rtl"> | Syntax not understood |
| 133 | <head> | Syntax not understood |
| 134 | <meta charset="UTF-8" /> | Syntax not understood |
| 135 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | Syntax not understood |
| 136 | <title>متجر الخضار الطازجة | Fresh Grocery</title> | Syntax not understood |
| 137 | <meta name="description" content="منصة تجارة إلكترونية للخضار والفواكه - توصيل سريع وجودة مضمونة" /> | Syntax not understood |
| 139 | <!-- Security headers (meta-tag based; Bolt hosting adds HSTS and others at the edge) --> | Syntax not understood |
| 140 | <meta http-equiv="X-Content-Type-Options" content="nosniff" /> | Syntax not understood |
| 141 | <meta http-equiv="Referrer-Policy" content="strict-origin-when-cross-origin" /> | Syntax not understood |
| 142 | <meta http-equiv="X-Frame-Options" content="SAMEORIGIN" /> | Syntax not understood |
| 143 | <meta http-equiv="Permissions-Policy" content="camera=(), microphone=(), geolocation=(), payment=(), usb=(), magnetometer=(), gyroscope=(), accelerometer=()" /> | Syntax not understood |
| 144 | <meta http-equiv="X-DNS-Prefetch-Control" content="on" /> | Syntax not understood |
| 145 | <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: blob: https:; connect-src 'self' https://*.supabase.co https://accounts.google.com https://www.googleapis.com; frame-ancestors 'self'; base-uri 'self'; form-action 'self' https://accounts.google.com;" /> | Unknown directive |
| 146 | <script type="module" crossorigin src="/assets/index-DeUdAHUR.js"></script> | Syntax not understood |
| 147 | <link rel="stylesheet" crossorigin href="/assets/index-DQqN2eHr.css"> | Syntax not understood |
| 148 | <script async src="https://bolt.new/badge.js?s=5044cfd4-c32a-4f4f-a1ca-736fd5f5ede9"></script><script data-bolt-deployed-preview-loader="4-production"> | Unknown directive |
| 149 | function __boltLoadDeployedPreviewScript(){ | Syntax not understood |
| 150 | var param="__boltParentOrigin"; | Syntax not understood |
| 151 | function trusted(origin){ | Syntax not understood |
| 152 | try{var url=new URL(origin);}catch(e){return false;} | Syntax not understood |
| 153 | if(url.origin!==origin)return false; | Syntax not understood |
| 154 | var host=url.hostname; | Syntax not understood |
| 155 | if(url.protocol!=="https:")return false; | Unknown directive |
| 156 | return host==="bolt.new"||host==="www.bolt.new"; | Syntax not understood |
| 157 | } | Syntax not understood |
| 158 | function remember(origin){ | Syntax not understood |
| 159 | try{sessionStorage.setItem(param,origin);}catch(e){} | Syntax not understood |
| 160 | var attributes=location.protocol==="https:"?"; SameSite=None; Secure; Partitioned":"; SameSite=Lax"; | Unknown directive |
| 161 | document.cookie=param+"="+encodeURIComponent(origin)+"; Path=/; Max-Age=86400"+attributes; | Syntax not understood |
| 162 | } | Syntax not understood |
| 163 | function recall(){ | Syntax not understood |
| 164 | try{var stored=sessionStorage.getItem(param);if(stored)return stored;}catch(e){} | Syntax not understood |
| 165 | var match=document.cookie.match(new RegExp("(?:^|; )"+param+"=([^;]*)")); | Unknown directive |
| 166 | if(!match)return ""; | Syntax not understood |
| 167 | try{return decodeURIComponent(match[1]);}catch(e){return "";} | Syntax not understood |
| 168 | } | Syntax not understood |
| 169 | var url=new URL(location.href); | Syntax not understood |
| 170 | var origin=url.searchParams.get(param)||""; | Syntax not understood |
| 171 | if(origin&&trusted(origin)){ | Syntax not understood |
| 172 | remember(origin); | Syntax not understood |
| 173 | url.searchParams.delete(param); | Syntax not understood |
| 174 | try{history.replaceState(null,"",url.pathname+url.search+url.hash);}catch(e){} | Syntax not understood |
| 175 | }else{ | Syntax not understood |
| 176 | origin=recall(); | Syntax not understood |
| 177 | } | Syntax not understood |
| 178 | if(!origin||!trusted(origin))return; | Syntax not understood |
| 179 | window["__BOLT_DEPLOYED_PREVIEW_PARENT_ORIGIN"]=origin; | Syntax not understood |
| 180 | var script=document.createElement("script"); | Syntax not understood |
| 181 | script.async=true; | Syntax not understood |
| 182 | script.src=origin+"/deployed-preview-script.js?origin="+encodeURIComponent(origin); | Syntax not understood |
| 183 | (document.head||document.documentElement).appendChild(script); | Syntax not understood |
| 184 | } | Syntax not understood |
| 185 | __boltLoadDeployedPreviewScript(); | Syntax not understood |
| 186 | </script></head> | Syntax not understood |
| 187 | <body> | Syntax not understood |
| 188 | <div id="root"></div> | Syntax not understood |
| 189 | </body> | Syntax not understood |
| 190 | </html> | Syntax not understood |
To appear in search results, crawlers need access to your app.