Max Potential First Input Delay
250 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
Words
1162
Action candidates
10
Images
57
HTML
1301 KB
Primary
Start your project
Next.js / Tailwind
Simulated mobile · Performance
2026-09-05 · Lab data, not field data.
Simulated mobile · Lab data, not field data
2026-09-05T03:59:22.292Z · Lighthouse 13.4.1
Results vary by server, network and environment, independently of taste/conversion scores. Diagnostics retain Lighthouse wording.
250 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
15.2 s
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.
4.2 s
Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. Learn how to minimize main-thread work
{
"type": "table",
"items": [
{
"group": "scriptEvaluation",
"duration": 1435.6359999999602,
"groupLabel": "Script Evaluation"
},
{
"group": "other",
"duration": 1158.000000000074,
"groupLabel": "Other"
},
{
"group": "styleLayout",
"duration": 1023.2759999999982,
"groupLabel": "Style & Layout"
},
{
"group": "scriptParseCompile",
"duration": 253.88400000000004,
"groupLabel": "Script Parsing & Compilation"
},
{
"group": "paintCompositeRender",
"duration": 196.34000000000196,
"groupLabel": "Rendering"
},
{
"group": "parseHTML",
"duration": 85.85199999999998,
"groupLabel": "Parse HTML & CSS"
},
{
"group": "garbageCollection",
"duration": 37.29600000000002,
"groupLabel": "Garbage Collection"
}
],
"headings": [
{
"key": "groupLabel",
"label": "Category",
"valueType": "text"
},
{
"key": "duration",
"label": "Time Spent",
"valueType": "ms",
"granularity": 1
}
],
"sortedBy": [
"duration"
]
}1.4 s
Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. Learn how to reduce Javascript execution time.
{
"type": "table",
"items": [
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/2379-53c0641973837d68.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"total": 1002.3600000000001,
"scripting": 507.88400000000007,
"scriptParseCompile": 10.844
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3592-68b2373e3453ac5b.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"total": 864.9959999999983,
"scripting": 92.42399999999998,
"scriptParseCompile": 6.3999999999999995
},
{
"url": "https://supabase.com/",
"total": 815.3159999999993,
"scripting": 14.115999999999959,
"scriptParseCompile": 11.691999999999986
},
{
"url": "Unattributable",
"total": 387.12400000007807,
"scripting": 34.968,
"scriptParseCompile": 0
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/d0d393d5-cd06a51e85f11ccd.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"total": 188.7959999999992,
"scripting": 174.0159999999992,
"scriptParseCompile": 12.244
},
{
"url": "https://ss.supabase.com/4icgbaujh/7wnp?1c28fa44=L2d0YWcvanM%2FaWQ9Ry1YVzE4S0dLR05SJmN4PWMmZ3RtPTRlNjkyMWgx",
"total": 153.5720000000013,
"scripting": 124.0880000000013,
"scriptParseCompile": 25.999999999999996
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3927.76adfdefcb88e649.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"total": 144.9919999999997,
"scripting": 132.83999999999972,
"scriptParseCompile": 1.66
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/84ae39ca-db4a5ea287046f08.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"total": 108.40400000000007,
"scripting": 67.33200000000008,
"scriptParseCompile": 9.756
},
{
"url": "https://ss.supabase.com/4icgbaujh.js?60a389s=aWQ9R1RNLVdDVlJMTU43&page=2",
"total": 102.29999999999981,
"scripting": 71.92399999999981,
"scriptParseCompile": 23.336000000000002
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3167-484866ee3bef4898.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"total": 70.66799999999998,
"scripting": 47.91599999999998,
"scriptParseCompile": 21.132
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9147-faf0c6699201f2f3.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"total": 50.31599999999992,
"scripting": 33.055999999999926,
"scriptParseCompile": 14.843999999999998
}
],
"summary": {
"wastedMs": 1438.472
},
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url"
},
{
"key": "total",
"label": "Total CPU Time",
"valueType": "ms",
"granularity": 1
},
{
"key": "scripting",
"label": "Script Evaluation",
"valueType": "ms",
"granularity": 1
},
{
"key": "scriptParseCompile",
"label": "Script Parse",
"valueType": "ms",
"granularity": 1
}
],
"sortedBy": [
"total"
]
}Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-0-SPAN",
"path": "2,HTML,1,BODY,10,DIV,0,MAIN,4,HEADER,0,DIV,0,DIV,0,DIV,0,H1,1,SPAN",
"type": "node",
"snippet": "<span class=\"text-brand block\">",
"selector": "div.flex > div.grid > h1.text-foreground > span.text-brand",
"nodeLabel": "Scale to millions",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 1.96 (foreground color: #3fcf8e, background color: #fdfdfd, font size: 25.5pt (34px), font weight: normal). Expected contrast ratio of 3:1",
"boundingRect": {
"top": 207,
"left": 24,
"right": 388,
"width": 364,
"bottom": 245,
"height": 38
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-1-BODY",
"path": "2,HTML,1,BODY",
"type": "node",
"snippet": "<body style=\"overflow: auto;\">",
"selector": "body",
"nodeLabel": "body",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 9846,
"height": 9846
}
}
}
]
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT",
"RGAAv4",
"RGAA-3.2.1"
],
"type": "debugdata",
"impact": "serious"
}
}Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. Learn more about heading order.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-2-H6",
"path": "2,HTML,1,BODY,11,FOOTER,2,DIV,0,DIV,1,DIV,0,DIV,0,DIV,0,H6",
"type": "node",
"snippet": "<h6 class=\"text-foreground overwrite text-base\">",
"selector": "div.mt-12 > div.grid > div > h6.text-foreground",
"nodeLabel": "Product",
"explanation": "Fix any of the following:\n Heading order invalid",
"boundingRect": {
"top": 8309,
"left": 24,
"right": 198,
"width": 174,
"bottom": 8332,
"height": 23
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.semantics",
"best-practice"
],
"type": "debugdata",
"impact": "moderate"
}
}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.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-3-DIV",
"path": "2,HTML,1,BODY,10,DIV,0,MAIN,10,SECTION,0,DIV,1,DIV,0,DIV,0,DIV",
"type": "node",
"snippet": "<div role=\"button\" tabindex=\"0\" aria-expanded=\"true\" aria-label=\"Lovable\" class=\"text-left rounded-lg p-5 flex flex-col gap-4 overflow-hidden transition-op…\" style=\"\">",
"selector": "div.py-24 > div.section-container > div.flex > div.text-left",
"nodeLabel": "Lovable\n\nPowering millions of AI-generated apps with a complete Supabase backen…",
"explanation": "Fix any of the following:\n Text inside the element is not included in the accessible name",
"boundingRect": {
"top": 5137,
"left": 24,
"right": 388,
"width": 364,
"bottom": 5487,
"height": 350
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.semantics",
"wcag21a",
"wcag253",
"EN-301-549",
"EN-9.2.5.3",
"RGAAv4",
"RGAA-6.1.5",
"experimental"
],
"type": "debugdata",
"impact": "serious"
}
}Touch targets with sufficient size and spacing help users who may have difficulty targeting small controls to activate the targets. Learn more about touch targets.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-4-A",
"path": "2,HTML,1,BODY,10,DIV,0,MAIN,10,SECTION,0,DIV,1,DIV,0,DIV,0,DIV,1,DIV,3,A",
"type": "node",
"snippet": "<a class=\"text-xs underline\" style=\"color:rgba(255,255,255,0.7)\" href=\"/customers/lovable\">",
"selector": "div.flex > div.text-left > div.flex > a.text-xs",
"nodeLabel": "Read the story →",
"explanation": "Fix any of the following:\n Target has insufficient size (324px by 16px, should be at least 24px by 24px)\n Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 16px instead of at least 24px.",
"boundingRect": {
"top": 5451,
"left": 44,
"right": 368,
"width": 324,
"bottom": 5467,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-3-DIV",
"path": "2,HTML,1,BODY,10,DIV,0,MAIN,10,SECTION,0,DIV,1,DIV,0,DIV,0,DIV",
"type": "node",
"snippet": "<div role=\"button\" tabindex=\"0\" aria-expanded=\"true\" aria-label=\"Lovable\" class=\"text-left rounded-lg p-5 flex flex-col gap-4 overflow-hidden transition-op…\" style=\"\">",
"selector": "div.py-24 > div.section-container > div.flex > div.text-left",
"nodeLabel": "Lovable\n\nPowering millions of AI-generated apps with a complete Supabase backen…",
"boundingRect": {
"top": 5137,
"left": 24,
"right": 388,
"width": 364,
"bottom": 5487,
"height": 350
}
}
}
]
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.sensory-and-visual-cues",
"wcag22aa",
"wcag258"
],
"type": "debugdata",
"impact": "serious"
}
}Est savings of 194 KiB
Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. Learn how to reduce unused JavaScript.
{
"type": "opportunity",
"items": [
{
"url": "https://ss.supabase.com/4icgbaujh/7wnp?1c28fa44=L2d0YWcvanM%2FaWQ9Ry1YVzE4S0dLR05SJmN4PWMmZ3RtPTRlNjkyMWgx",
"totalBytes": 158543,
"wastedBytes": 69738,
"wastedPercent": 43.986639988798906
},
{
"url": "https://ss.supabase.com/4icgbaujh.js?60a389s=aWQ9R1RNLVdDVlJMTU43&page=2",
"totalBytes": 131493,
"wastedBytes": 67481,
"wastedPercent": 51.318954549248645
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/54b60c1a.6bbda1b675d00c95.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 70226,
"wastedBytes": 39279,
"wastedPercent": 55.933336954602865
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/2410-f7e4dfa294fdfa0f.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 40436,
"wastedBytes": 22253,
"wastedPercent": 55.03292412560802
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url",
"subItemsHeading": {
"key": "source",
"valueType": "code"
}
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes",
"subItemsHeading": {
"key": "sourceBytes"
}
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes",
"subItemsHeading": {
"key": "sourceWastedBytes"
}
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"metricSavings": {
"FCP": 0,
"LCP": 160
}
},
"overallSavingsMs": 160,
"overallSavingsBytes": 198751
}Est savings of 131 KiB
A long cache lifetime can speed up repeat visits to your page. Learn more about caching.
{
"type": "table",
"items": [
{
"url": "https://ph.supabase.com/static/surveys.js?v=1.391.2",
"totalBytes": 35187,
"wastedBytes": 23927.159999999996,
"cacheLifetimeMs": 14400000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3167-484866ee3bef4898.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 106619,
"wastedBytes": 10661.899999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9147-faf0c6699201f2f3.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 73502,
"wastedBytes": 7350.199999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/54b60c1a.6bbda1b675d00c95.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 70299,
"wastedBytes": 7029.899999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/d0d393d5-cd06a51e85f11ccd.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 68341,
"wastedBytes": 6834.0999999999985,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/css/8808287694c9496d.css?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 67089,
"wastedBytes": 6708.899999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/84ae39ca-db4a5ea287046f08.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 54775,
"wastedBytes": 5477.499999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/media/e4af272ccee01ff0-s.p.woff2",
"totalBytes": 49007,
"wastedBytes": 4900.699999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/2379-53c0641973837d68.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 47739,
"wastedBytes": 4773.899999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/6509-ef965035d6596bd8.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 44460,
"wastedBytes": 4445.999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/2410-f7e4dfa294fdfa0f.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 40785,
"wastedBytes": 4078.499999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3592-68b2373e3453ac5b.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 30872,
"wastedBytes": 3087.1999999999994,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/2328-096bd7e7df9dd530.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 27931,
"wastedBytes": 2793.0999999999995,
"cacheLifetimeMs": 604800000
},
{
"url": "https://ph.supabase.com/array/phc_q2wUqNSr9AsKvH56PBbg9RX5dGKypQZi1gxk3cuSXJ5/config.js",
"totalBytes": 3755,
"wastedBytes": 2553.3999999999996,
"cacheLifetimeMs": 14400000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/media/4c9affa5bc8f420e-s.p.woff2",
"totalBytes": 24946,
"wastedBytes": 2494.5999999999995,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/media/443896d591e4f761-s.p.woff2",
"totalBytes": 22319,
"wastedBytes": 2231.8999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/media/DepartureMonoSuperbase-Regular.f37ac6dd.woff2",
"totalBytes": 21369,
"wastedBytes": 2136.8999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/5900-8bd446aaa009cb24.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 18992,
"wastedBytes": 1899.1999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3689.09100fd8e49c62d2.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 18239,
"wastedBytes": 1823.8999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9813.7bf16bdb62d2144c.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 16080,
"wastedBytes": 1607.9999999999995,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/912-f4e12d8e13c6edfe.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 15899,
"wastedBytes": 1589.8999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9e43655a-1ca1fdf7baa25330.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 14582,
"wastedBytes": 1458.1999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/(products)/database/page-849b3dbb1b2c7caf.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 14159,
"wastedBytes": 1415.8999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/8071-3f35e8b60f126ac7.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 13923,
"wastedBytes": 1392.2999999999997,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/(products)/auth/page-f4e32864e038faab.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 12393,
"wastedBytes": 1239.2999999999997,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/8124-96d2dcdf9c3a3c74.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 12329,
"wastedBytes": 1232.8999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/8081-5cc4b385c9d22ed4.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 10685,
"wastedBytes": 1068.4999999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/layout-da5b5d4718f35af6.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 10681,
"wastedBytes": 1068.0999999999997,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9066-6d90408c9ab30632.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 10615,
"wastedBytes": 1061.4999999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/8883-5a94f7791b534ab2.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 10009,
"wastedBytes": 1000.8999999999997,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/(products)/edge-functions/page-35ba8e52cd68ad14.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 9119,
"wastedBytes": 911.8999999999997,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9955-ea6d888312af3252.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 8863,
"wastedBytes": 886.2999999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://app.usercentrics.eu/session/1px.png?settingsId=650dpbAjfyAypn",
"totalBytes": 1026,
"wastedBytes": 884.9250000000001,
"cacheLifetimeMs": 1800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/(products)/storage/page-4f63b8c12f46d6c7.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 8749,
"wastedBytes": 874.8999999999997,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/(home)/page-f12cbe26d07f6723.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 8568,
"wastedBytes": 856.7999999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3607-8b080a4c46d10792.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 8060,
"wastedBytes": 805.9999999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/8075-f89406600877fbef.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 6765,
"wastedBytes": 676.4999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/(products)/realtime/page-0a6b95467784d0d9.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 6574,
"wastedBytes": 657.3999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/webpack-a5daa55b77231cb5.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 6455,
"wastedBytes": 645.4999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/5234-d05c0c700bcc9b15.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 6433,
"wastedBytes": 643.2999999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/4511-fb86cf0e6306f626.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 6376,
"wastedBytes": 637.5999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3064-20b6290885a0b296.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 5695,
"wastedBytes": 569.4999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/2034.73f91b9f547469e6.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 4932,
"wastedBytes": 493.1999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/8112-1ffc260e8706d66e.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 4577,
"wastedBytes": 457.6999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/css/440c143c26a742d1.css?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 4032,
"wastedBytes": 403.19999999999993,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9855-505d0c28d86693f8.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 3891,
"wastedBytes": 389.0999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/8304-25fc48de99ea754a.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 3854,
"wastedBytes": 385.3999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/4406.21c000fa4e4012a8.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 3461,
"wastedBytes": 346.0999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/6150-3caef68df9832281.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 3420,
"wastedBytes": 341.99999999999994,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9218-3b7e269d5d401d5f.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 3377,
"wastedBytes": 337.69999999999993,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/not-found-286bfe4c161983b7.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 3337,
"wastedBytes": 333.69999999999993,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/(products)/layout-efea3f26940f7937.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 3044,
"wastedBytes": 304.3999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/2423-0a67ef0ed2301c36.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 2953,
"wastedBytes": 295.29999999999995,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/css/da5dd57b3fb05c7f.css?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 2847,
"wastedBytes": 284.69999999999993,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9906.b191d111e899d529.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 2127,
"wastedBytes": 212.69999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3927.76adfdefcb88e649.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 2088,
"wastedBytes": 208.79999999999995,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9479.76652812bd7cec75.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 1890,
"wastedBytes": 188.99999999999997,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/css/4152cb829a1054a7.css?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 1882,
"wastedBytes": 188.19999999999996,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/app/(home)/layout-dc448a80136ab8b9.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 1334,
"wastedBytes": 133.39999999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/3205.52eb9e316447ce9d.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 1237,
"wastedBytes": 123.69999999999997,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/1297.d9cfda3e4cc68b41.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 1104,
"wastedBytes": 110.39999999999998,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/main-app-94029e68171c6454.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 765,
"wastedBytes": 76.49999999999999,
"cacheLifetimeMs": 604800000
},
{
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/4638.b67a4bbac86cdb1a.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"totalBytes": 475,
"wastedBytes": 47.49999999999999,
"cacheLifetimeMs": 604800000
}
],
"headings": [
{
"key": "url",
"label": "Request",
"valueType": "url"
},
{
"key": "cacheLifetimeMs",
"label": "Cache TTL",
"valueType": "ms",
"displayUnit": "duration"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes",
"displayUnit": "kb",
"granularity": 1
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"wastedBytes": 134057.78499999992
},
"skipSumming": [
"cacheLifetimeMs"
]
}A forced reflow occurs when JavaScript queries geometric properties (such as offsetWidth) after styles have been invalidated by a change to the DOM state. This can result in poor performance. Learn more about forced reflows and possible mitigations.
{
"type": "list",
"items": [
{
"type": "table",
"items": [
{
"source": {
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/2379-53c0641973837d68.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"line": 1,
"type": "source-location",
"column": 37731,
"urlProvider": "network"
},
"reflowTime": 113.043
}
],
"headings": [
{
"key": "source",
"label": "Top function call",
"valueType": "source-location"
},
{
"key": "reflowTime",
"label": "Total reflow time",
"valueType": "ms",
"granularity": 1
}
]
},
{
"type": "table",
"items": [
{
"source": {
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/8124-96d2dcdf9c3a3c74.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"line": 0,
"type": "source-location",
"column": 27438,
"urlProvider": "network"
},
"reflowTime": 0.049
},
{
"source": {
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/5900-8bd446aaa009cb24.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"line": 0,
"type": "source-location",
"column": 8381,
"urlProvider": "network"
},
"reflowTime": 0.519
},
{
"source": {
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/9147-faf0c6699201f2f3.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"line": 0,
"type": "source-location",
"column": 11327,
"urlProvider": "network"
},
"reflowTime": 112.475
},
{
"source": {
"url": "https://frontend-assets.supabase.com/www/c6cdf4bd5343/_next/static/chunks/2410-f7e4dfa294fdfa0f.js?dpl=dpl_FYe6Hd7m4FrHmHWzyVBGHePPeBXe",
"line": 0,
"type": "source-location",
"column": 65080,
"urlProvider": "network"
},
"reflowTime": 3.939
}
],
"headings": [
{
"key": "source",
"label": "Source",
"valueType": "source-location"
},
{
"key": "reflowTime",
"label": "Total reflow time",
"valueType": "ms",
"granularity": 1
}
]
}
]
}Est savings of 122 KiB
Reducing the download time of images can improve the perceived load time of the page and LCP. Learn more about optimizing image size
{
"type": "table",
"items": [
{
"url": "https://supabase.com/images/blog/avatars/bryan-byrne-lovable.jpeg",
"node": {
"lhId": "page-4-IMG",
"path": "2,HTML,1,BODY,10,DIV,0,MAIN,10,SECTION,0,DIV,1,DIV,0,DIV,0,DIV,1,DIV,2,DIV,0,IMG",
"type": "node",
"snippet": "<img src=\"/images/blog/avatars/bryan-byrne-lovable.jpeg\" alt=\"Bryan Byrne, Product Manager, Lovable\" class=\"h-6 w-6 rounded-full object-cover shrink-0 ring-1 ring-white/30\">",
"selector": "div.text-left > div.flex > div.flex > img.h-6",
"nodeLabel": "Bryan Byrne, Product Manager, Lovable",
"boundingRect": {
"top": 5399,
"left": 44,
"right": 68,
"width": 24,
"bottom": 5423,
"height": 24
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
"wastedBytes": 18376
},
{
"reason": "This image file is larger than it needs to be (800x800) for its displayed dimensions (24x24). Use responsive images to reduce the image download size.",
"wastedBytes": 124930
}
]
},
"totalBytes": 125043,
"wastedBytes": 124947
}
],
"headings": [
{
"key": "node",
"label": "",
"valueType": "node"
},
{
"key": "url",
"label": "URL",
"valueType": "url",
"subItemsHeading": {
"key": "reason",
"valueType": "text"
}
},
{
"key": "totalBytes",
"label": "Resource Size",
"valueType": "bytes"
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes",
"subItemsHeading": {
"key": "wastedBytes",
"valueType": "bytes"
}
}
],
"debugData": {
"type": "debugdata",
"wastedBytes": 124947
}
}{
"finalUrl": "https://supabase.com/",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
"formFactor": "mobile",
"throttlingMethod": "simulate",
"throttling": {
"rttMs": 150,
"throughputKbps": 1638.4,
"requestLatencyMs": 562.5,
"uploadThroughputKbps": 675,
"cpuSlowdownMultiplier": 4,
"downloadThroughputKbps": 1474.5600000000002
},
"metrics": [
{
"id": "largest-contentful-paint",
"unit": "millisecond",
"value": 8501.454999999998
},
{
"id": "cumulative-layout-shift",
"unit": "unitless",
"value": 0.06266969227657461
},
{
"id": "total-blocking-time",
"unit": "millisecond",
"value": 505.9999999999991
},
{
"id": "first-contentful-paint",
"unit": "millisecond",
"value": 3100.8050000000003
},
{
"id": "speed-index",
"unit": "millisecond",
"value": 5240.8823853278545
}
]
}01 / WHAT WORKS
The Postgres Database panel is wider than Authentication and Edge Functions, emphasizing the core instead of assigning identical weight to every feature.
The green Start your project action sits beside an outlined Request a demo, differentiating intent as well as visual weight.
02 / NEXT STEPS
The event banner wraps onto two mobile lines above the brand navigation, pushing the product introduction downward.
Keep the event and dismiss action but tighten the date and link layout. Ensure dismissal leaves no gap and verify stable headline and primary-action positions.
03 / DESIGN LANGUAGE
Background
#fdfdfdText
#030303Accent
#72e3adParameters are element samples. Empty values are unknown, and individual samples are not site-wide rules.
04 / EVIDENCE
Values come from one capture. Fonts, radii and spacing are element samples, not a universal site-wide specification. Empty values are unknown. HTML bytes are source size, not compressed transfer size; script counts are DOM tags, not network requests.
The event banner wraps onto two mobile lines above the brand navigation, pushing the product introduction downward.
Keep the event and dismiss action but tighten the date and link layout. Ensure dismissal leaves no gap and verify stable headline and primary-action positions.
mobile.png: two-line event banner above navigation
A CSP is the standard way to limit script sources. Vibe-coded pages often load anything, including injected scripts.
Start with a report-only CSP, then default-src 'self' and an explicit script-src.
content-security-policy missing
Without nosniff, browsers may interpret a file as a different type than you sent. It is a one-line header.
Set X-Content-Type-Options: nosniff.
x-content-type-options missing
The default referrer can leak internal paths and query strings to third parties.
Set Referrer-Policy: strict-origin-when-cross-origin.
referrer-policy missing

Build production-grade applications with a Postgres database, Authentication, instant APIs, Realtime, Functions, Storage and Vector embeddings. Start for free.
05 / MAKE IT HAPPEN
Use the improvement prompt for this page, or the design prompt to borrow its visual language. “Recreate” includes references and implementation steps. Paste either into your coding assistant.
Improve the current project using the 2026-09-05T02:31:53.014Z snapshot of https://supabase.com. First identify changes since capture; do not revert newer behavior to the old snapshot.
Design baseline
Pair the promise and technical explanation in desktop columns, then emphasize the database panel alongside supporting auth and function panels. Stack the sequence and simplify illustrations on mobile.
{
"colors": [
{
"role": "bg",
"hex": "#fdfdfd"
},
{
"role": "ink",
"hex": "#030303"
},
{
"role": "accent",
"hex": "#72e3ad"
}
],
"fonts": {
"body": "Inter",
"display": "Manrope",
"stack": [
"Inter",
"Manrope",
"Departure Mono Superbase"
]
},
"radius": {
"button": "6px",
"card": "",
"field": ""
},
"space": {
"section": "0px",
"card": ""
},
"type": {
"h1": "46px",
"body": "16px",
"weight": "500",
"lineHeight": "24px",
"letterSpacing": "normal"
}
}
Values come from one capture. Fonts, radii and spacing are element samples, not a universal site-wide specification. Empty values are unknown. HTML bytes are source size, not compressed transfer size; script counts are DOM tags, not network requests.
Actions
1. Reduce the mobile event banner footprint
Keep the event and dismiss action but tighten the date and link layout. Ensure dismissal leaves no gap and verify stable headline and primary-action positions.
Evidence: mobile.png: two-line event banner above navigation
2. No Content-Security-Policy
Start with a report-only CSP, then default-src 'self' and an explicit script-src.
Evidence: content-security-policy missing
3. No X-Content-Type-Options
Set X-Content-Type-Options: nosniff.
Evidence: x-content-type-options missing
4. No Referrer-Policy
Set Referrer-Policy: strict-origin-when-cross-origin.
Evidence: referrer-policy missing
Acceptance
- Check text, layout and the main action “Start your project” at 1440×900 and 390×844.
- Preserve branding, authentication and business behavior. A screenshot does not prove broken interaction.
- Change only evidence-backed issues. Validate security headers against existing resources and authentication in report-only mode where supported.
- Compare before/after screenshots and run relevant functional tests. Do not claim untested behavior passed.