[{"data":1,"prerenderedAt":1070},["ShallowReactive",2],{"blog-uk-is-supabase-down-or-your-app":3,"blog-index-uk":716},{"id":4,"title":5,"body":6,"category":671,"cover":672,"coverAlt":673,"description":674,"draft":675,"extension":676,"faq":677,"image":694,"keywords":695,"meta":705,"navigation":706,"ogTitle":26,"path":707,"published":708,"seo":709,"stem":710,"tldr":711,"updated":708,"__hash__":715},"blog_uk\u002Fblog\u002Fis-supabase-down-or-your-app.md","Supabase не працює чи проблема у вашому застосунку? Як розрізнити",{"type":7,"value":8,"toc":653},"minimark",[9,13,16,19,22,27,30,59,62,68,71,75,80,91,103,109,112,117,120,123,127,135,139,142,163,169,172,186,189,193,196,211,238,251,372,378,382,385,450,464,468,471,474,477,481,484,487,492,495,521,530,534,537,570,574,579,605,617,621,647],[10,11,12],"p",{},"Ваш застосунок відкривається, а потім нічого не завантажується. Список, де мали\nб бути замовлення ваших клієнтів, порожній, кнопка входу крутиться, або сторінка\nтак і лишається білою. Вам уже хтось про це написав. Тож ви шукаєте «supabase не\nпрацює», бо ваш застосунок зроблено в Lovable чи Bolt на проєкті Supabase, а\nSupabase є єдиною частиною механізму, яку ви знаєте на ім’я.",[10,14,15],{},"Ось де звична порада помиляється. Вона каже: подивіться на сторінку статусу\nSupabase. Це правильний перший крок, і він відповідає на одне питання з\nчотирьох. Ваш проєкт перестає відповідати застосунку, коли в Supabase збій, а ще\nколи Supabase поставив його на паузу, коли він уперся в ліміт і коли зламався\nваш власний застосунок, хоча Supabase правильно відповідає на кожен запит. Ваші\nклієнти бачать той самий порожній екран в усіх чотирьох випадках, а сторінка\nстатусу знає лише про перший.",[10,17,18],{},"Уявіть, що вдома зникло світло. Перше, що робить кожен: визирає у вікно, чи в\nсусідів теж темно. Це і є сторінка статусу, і вона розповідає про вулицю. Про\nлист під дверима, електрощиток у коридорі чи лампочку вона не каже нічого.",[10,20,21],{},"Кожну сторінку Supabase, кожен інцидент і кожне число в цій статті прочитано 30\nвересня 2026 року.",[23,24,26],"h2",{"id":25},"supabase-не-працює-чи-проблема-у-вашому-застосунку","Supabase не працює чи проблема у вашому застосунку?",[10,28,29],{},"З екрана цього не видно, і саме тому пошук заводить у глухий кут. Чотири різні\nзбої дають той самий результат:",[31,32,33,41,47,53],"ol",{},[34,35,36,40],"li",{},[37,38,39],"strong",{},"Supabase не працює."," Щось зламалося на боці Supabase, зазвичай в одному\nрегіоні чи в одному сервісі. Світла немає на всій вулиці.",[34,42,43,46],{},[37,44,45],{},"Ваш проєкт на паузі."," Supabase зупиняє безкоштовні проєкти, у яких близько\nтижня не було активності. Постачальник відключив саме вашу квартиру, і більше\nнікого на вулиці це не зачепило.",[34,48,49,52],{},[37,50,51],{},"Ваш проєкт уперся в ліміт."," Він заповнив своє місце і перейшов у режим\nлише для читання, або йому забракло потужності і він сповільнювався, доки\nзапити не почали лишатися без відповіді, або ваша організація перевищила\nквоту й отримала обмеження. Вибило автомат.",[34,54,55,58],{},[37,56,57],{},"Зламався ваш застосунок."," Supabase відповідає, а щось на вашому боці,\nключ, правила доступу до таблиці чи шматок коду, перетворює цю відповідь на\nпорожній екран. Струм є. Це лампочка.",[10,60,61],{},"Тут і далі ваш проєкт означає базу даних Supabase, у якій ваш застосунок\nзберігає дані, разом із входом користувачів, файловим сховищем та API навколо\nнеї.",[63,64],"diagram",{"alt":65,"caption":66,"src":67},"Чотири плитки ліворуч, усі намальовані бурштиновим: хмара, знак паузи, автомат, що спрацював, і редактор коду. Їхні лінії сходяться й ведуть в одне порожнє вікно браузера з колом завантаження всередині.","Чотири різні збої, один екран. Ваші клієнти не можуть їх розрізнити, і ви теж, доки не перевірите.","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Ffour-causes-one-screen-1600x620.png",[10,69,70],{},"Перевірки нижче проходять їх по черзі, від найдешевшої, і кожна підтверджує або\nвідкидає один збій.",[23,72,74],{"id":73},"чотири-перевірки-від-найдешевшої","Чотири перевірки, від найдешевшої",[76,77,79],"h3",{"id":78},"крок-1-supabase-не-працює-для-всіх","Крок 1: Supabase не працює для всіх?",[10,81,82,83,90],{},"Відкрийте ",[84,85,89],"a",{"href":86,"rel":87},"https:\u002F\u002Fstatus.supabase.com\u002F",[88],"nofollow","status.supabase.com",". Якщо відкритий\nінцидент згадує ваш регіон або сервіс, яким користується ваш застосунок,\nвідповідь у вас є, а розділ про збої нижче підкаже, що з нею робити.",[10,92,93,94,98,99,102],{},"Сторінка перелічує сервіси Supabase по одному: базу даних і API, через яке\nзастосунок її читає, Auth для входу, Storage для завантажених файлів, Realtime,\nEdge Functions, панель і ще кілька. Під ними список регіонів. Регіоном називають\nчастину світу, де працює ваш проєкт, і ваш регіон видно на сторінці\nInfrastructure в налаштуваннях проєкту, з кодом на кшталт ",[95,96,97],"code",{},"eu-west-1",". Інцидент\nу ",[95,100,101],{},"us-east-1"," не має нічого спільного з проєктом в Ірландії, тож знайдіть свій\nкод, перш ніж читати щось інше.",[10,104,105,106,108],{},"Чого на сторінці немає, так це рядка для вашого проєкту. Вона повідомляє про\nпроблеми, які зачіпають достатньо проєктів, щоб їх оголосити, а справжні\nінциденти часто вузькі. П’ятдесят найсвіжіших, що сягають назад до 15 липня 2026\nроку, включають один, який поклав лише проєкти на певному наборі обладнання в\n",[95,107,97],{},", другий, через який проєкти найменшого, безкоштовного розміру\nпереставали відповідати після кількох годин роботи, і третій про помилки 401 у\nчастини нових проєктів, що лишався відкритим 46 днів.",[10,110,111],{},"Отже, зелена сторінка каже вам, що Supabase не оголошував проблем. Ваш проєкт\nможе лежати під нею, і саме про це наступні три перевірки.",[63,113],{"alt":114,"caption":115,"src":116},"Табло статусу, де кожен рядок світиться зеленим. Під ним ряд проєктів, усі освітлені, крім одного, темного й обведеного колом.","Сторінка статусу звітує про Supabase загалом. Рядка для вашого проєкту на ній немає.","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fgreen-page-dark-project-1600x620.png",[10,118,119],{},"Панель має власний рядок і власні інциденти. 1 вересня 2026 року в неї взагалі\nне можна було увійти, а застосунок цілком може працювати далі під час такого\nінциденту.",[10,121,122],{},"Поки ви на сторінці, підпишіться на оновлення. Достатньо адреси електронної\nпошти, а ще Supabase публікує історію інцидентів як RSS-стрічку.",[76,124,126],{"id":125},"крок-2-ваш-проєкт-на-паузі","Крок 2: ваш проєкт на паузі?",[10,128,129,130,134],{},"Відкрийте панель Supabase і подивіться на список своїх проєктів. Проєкт зі\nсловом Paused поруч із назвою зупинив Supabase, найчастіше безкоштовний проєкт,\nу якому близько тижня не було активності, і він стоятиме, доки ви його не\nвідновите. Усе інше про паузу, зокрема строк в один рік і що робити, коли\nможливість відновлення зникла, є в статті ",[84,131,133],{"href":132},"\u002Fblog\u002Fsupabase-project-paused-recover","що робити, коли ваш проєкт Supabase\nна паузі",".",[76,136,138],{"id":137},"крок-3-ваш-проєкт-уперся-в-ліміт","Крок 3: ваш проєкт уперся в ліміт?",[10,140,141],{},"Подивіться, що ще працює. Кожен ліміт ламає щось своє, і за цим візерунком\nвидно, який автомат вибило.",[10,143,144,147,148,151,152,156,157,162],{},[37,145,146],{},"Сторінки завантажуються, а нічого не зберігається."," Це режим лише для\nчитання. Безкоштовний проєкт переходить у нього, коли база даних перевищує 500\nМБ, а платний, коли диск заповнюється швидше, ніж Supabase дозволено його\nзбільшувати. Читання й далі працює, тож застосунок виглядає нормально, доки\nхтось не спробує зареєструватися, зробити замовлення чи зберегти форму, і кожен\nзапис повертається з ",[95,149,150],{},"cannot execute INSERT in a read-only transaction",". Вихід\nодин: більше місця, через перехід на вищий тариф або видалення даних. ",[84,153,155],{"href":154},"\u002Fblog\u002Fsupabase-free-plan-limits","Що\nвимикає кожен ліміт безкоштовного тарифу","\nописує обидва шляхи, а ",[84,158,161],{"href":159,"rel":160},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fdatabase-size",[88],"посібник Supabase про розмір\nбази"," містить SQL.",[10,164,165,168],{},[37,166,167],{},"Усе сповільнюється, а потім перестає відповідати."," У проєкту закінчився\nзапас. Його розмір обчислень визначає, скільки в нього пам’яті і наскільки\nсильно він може навантажувати диск, а менші розміри отримують щоденну квоту, щоб\nненадовго виходити за цю межу, яку Supabase називає Disk IO Budget. Коли її\nвичерпано, власний перелік Supabase можливих наслідків включає помітне зростання\nчасу відповіді й екземпляр, що перестає відповідати. Квота відновлюється\nнаступного дня, а сторінка Database Health у розділі Observability показує, де\nви зараз.",[10,170,171],{},"Можливо, вам прийде лист про те, що проєкт «is running out of Disk IO Budget»,\nабо ви побачите в панелі попередження, що він unhealthy, з кнопкою Restart\nproject під ним. Сприймайте лист як підказку. Після інциденту 10 вересня 2026\nроку Supabase повідомив власникам, яких він зачепив, що отриманий ними лист про\nDisk IO більше не чинний: його спричинив сам інцидент.",[10,173,174,177,178,181,182,185],{},[37,175,176],{},"Кожен запит падає з кодом 402."," Вашу організацію обмежено за Fair Use Policy\nSupabase, бо вона лишалася понад квотою після пільгового періоду або має\nнеоплачений рахунок, і обмеження зазвичай поширюється на всі проєкти\nорганізації. Код 402 називає причину кодом на кшталт ",[95,179,180],{},"exceed_db_size_quota"," чи\n",[95,183,184],{},"overdue_payment",", а Supabase пише, що поки обмеження діє, ви й далі можете\nдістатися своїх даних через панель. Перехід на вищий тариф одразу знімає\nобмеження за використання, інакше воно знімається на початку наступного\nрозрахункового періоду.",[10,187,188],{},"Це і є електрощиток. Усі три випадки стаються всередині вашого власного проєкту,\nтож сторінка статусу не показує жодного з них.",[76,190,192],{"id":191},"крок-4-запитайте-свій-проєкт-напряму","Крок 4: запитайте свій проєкт напряму",[10,194,195],{},"Надішліть йому один запит і прочитайте відповідь. Якщо Supabase відповідає\nнормально, проблема на вашому боці з’єднання.",[10,197,198,199,202,203,206,207,210],{},"Найшвидший варіант не потребує жодних інструментів. Адреса вашого проєкту має\nвигляд ",[95,200,201],{},"https:\u002F\u002Fabcdefghijklmnopqrst.supabase.co",", а послідовність літер перед\n",[95,204,205],{},".supabase.co"," видно в адресному рядку браузера щоразу, коли проєкт відкрито в\nпанелі. Допишіть у кінці ",[95,208,209],{},"\u002Frest\u002Fv1\u002F",", вставте це в нову вкладку й подивіться, що\nповернеться.",[212,213,214,220,232],"ul",{},[34,215,216,219],{},[37,217,218],{},"Рядок тексту у фігурних дужках про те, що ключ API не знайдено."," Supabase\nвідповідає за адресою вашого проєкту. Він вам відмовив, бо вкладка не\nнадіслала ключа, і це правильно. Проєкт існує і не стоїть на паузі.",[34,221,222,225,226,231],{},[37,223,224],{},"«Не вдається отримати доступ до сайту» або «Сервер не знайдено»."," Адреса не\nрозпізнається. ",[84,227,230],{"href":228,"rel":229},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Fnxdomain-error-connecting-to-a-supabase-project",[88],"Сторінка довідки Supabase про цю\nпомилку","\nназиває звичні причини: проєкт на паузі, видалений проєкт або адреса з\nодруківкою.",[34,233,234,237],{},[37,235,236],{},"Сторінка помилки з числом із п’ятисотих, або нічого після довгого\nочікування."," Адреса існує, а проєкт за нею не справляється. Поверніться до\nкроку 3 і ще раз подивіться на сторінку статусу.",[10,239,240,241,244,245,250],{},"Повніший варіант дає вкладка ",[37,242,243],{},"Network"," у вашому браузері, яка показує\nвідповіді, що їх отримує ваш застосунок зі своїм ключем. Відкрийте застосунок,\nнатисніть F12, виберіть Network, перезавантажте сторінку й наберіть у полі\nфільтра літери з адреси вашого проєкту. Кожен запит до проєкту з’явиться з кодом\nстатусу, а код уже становить більшу частину діагнозу. Значення нижче взято зі\n",[84,246,249],{"href":247,"rel":248},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Fhttp-status-codes",[88],"списку кодів\nстатусу","\nSupabase і з API бази даних, яке там працює:",[252,253,254,270],"table",{},[255,256,257],"thead",{},[258,259,260,264,267],"tr",{},[261,262,263],"th",{},"Статус",[261,265,266],{},"Що він означає",[261,268,269],{},"Куди далі",[271,272,273,287,304,317,330,343,361],"tbody",{},[258,274,275,281,284],{},[276,277,278],"td",{},[95,279,280],{},"200",[276,282,283],{},"Supabase відповів і щось повернув",[276,285,286],{},"Ваш застосунок, нижче",[258,288,289,298,301],{},[276,290,291,294,295],{},[95,292,293],{},"401"," або ",[95,296,297],{},"403",[276,299,300],{},"Supabase відповів і відхилив ключ, таблицю чи сесію",[276,302,303],{},"Наступний розділ",[258,305,306,311,314],{},[276,307,308],{},[95,309,310],{},"402",[276,312,313],{},"Вашу організацію обмежено",[276,315,316],{},"Крок 3",[258,318,319,325,328],{},[276,320,321,324],{},[95,322,323],{},"405"," під час збереження, коли читання отримує 200",[276,326,327],{},"База даних у режимі лише для читання",[276,329,316],{},[258,331,332,337,340],{},[276,333,334],{},[95,335,336],{},"540",[276,338,339],{},"Проєкт на паузі",[276,341,342],{},"Крок 2",[258,344,345,355,358],{},[276,346,347,350,351,354],{},[95,348,349],{},"503",", ",[95,352,353],{},"544"," або жодної відповіді",[276,356,357],{},"Проєкт працює, але не встигає",[276,359,360],{},"Крок 3, потім перезапуск",[258,362,363,366,369],{},[276,364,365],{},"помилка з «name not resolved»",[276,367,368],{},"Адреси зараз не існує",[276,370,371],{},"Крок 2, потім перевірте адресу",[10,373,374,375,377],{},"Шукати варто насамперед рядок ",[95,376,280],{},". Якщо запити вашого застосунку до Supabase\nповертаються з 200, а екран і далі порожній, Supabase свою частину зробив, і\nлампочка ваша. Можливо, правила таблиці не показують цьому відвідувачу жодного\nрядка, і це приходить як 200 з порожнім списком. Можливо, застосунок дивиться на\nінший проєкт, ніж той, який відкрили ви. Або код, що малює сторінку, зламався на\nтому, що отримав, і це питання до вашого білдера, із запитом і відповіддю на\nруках.",[23,379,381],{"id":380},"чому-supabase-раптом-видає-помилки-401","Чому Supabase раптом видає помилки 401?",[10,383,384],{},"Бо Supabase відповів і відмовив тому, хто питав. Код 401 означає, що запит\nдістався вашого проєкту, отже платформа працює. Відхилено одне з трьох, і\nповідомлення каже, що саме: клацніть запит у вкладці Network і відкрийте його\nResponse.",[212,386,387,424,438],{},[34,388,389,392,393,396,397,400,401,404,405,408,409,414,415,418,419,423],{},[37,390,391],{},"Ключ."," Повідомлення каже ",[95,394,395],{},"Invalid API key"," або\n",[95,398,399],{},"Legacy API keys are disabled",". Ваш застосунок надсилає ключ, який проєкт\nбільше не приймає. Старий ключ ",[95,402,403],{},"anon",", довгий рядок, що починається з ",[95,406,407],{},"eyJ",",\nперестає працювати, коли хтось вимикає застарілі ключі в налаштуваннях\nпроєкту, а Supabase попереджав, що проєкт на паузі, відновлений після 1\nлистопада 2025 року, повертається без нього. ",[84,410,413],{"href":411,"rel":412},"https:\u002F\u002Fgithub.com\u002Forgs\u002Fsupabase\u002Fdiscussions\u002F29260",[88],"За словами самого\nSupabase",", відновлені\nпроєкти з паузи ризикують зламатися, бо в них не буде застарілих ключів.\nРозв’язок у тому, щоб прописати поточний публічний ключ проєкту, той, що\nпочинається з ",[95,416,417],{},"sb_publishable_",", у налаштуваннях середовища вашого білдера.\n",[84,420,422],{"href":421},"\u002Fblog\u002Fsupabase-new-api-keys","Два формати ключів"," порівняно поруч.",[34,425,426,392,429,432,433,437],{},[37,427,428],{},"Таблиця.",[95,430,431],{},"permission denied for table",". З ключем усе\nгаразд, а таблицю просто не відкрито для такого типу відвідувачів. Від 30\nжовтня 2026 року нова таблиця Supabase починає саме так, і ",[84,434,436],{"href":435},"\u002Fblog\u002Fsupabase-permission-denied-for-table","безпечний спосіб\nїї відкрити"," має окрему статтю.",[34,439,440,443,444,449],{},[37,441,442],{},"Сесія."," Сторінки без входу працюють, а люди, які увійшли, отримують помилки\n401, що то з’являються, то зникають, і повідомлення зазвичай згадує JWT,\nпідписаний токен, який ваш застосунок тримає для кожної людини, що увійшла. З\n14 серпня до 29 вересня 2026 року на сторінці статусу Supabase висів інцидент\nпід назвою ",[84,445,448],{"href":446,"rel":447},"https:\u002F\u002Fstatus.supabase.com\u002Fincidents\u002F6q5902p2xd9f",[88],"«401 errors due to JWT\nrejections»",": частина\nнових проєктів відхиляла сесії, які щойно оновилися. Supabase розв’язав це\nновою версією проєкту, випущеною 29 вересня, яку ви встановлюєте самі кнопкою\nUpgrade project на сторінці General у налаштуваннях проєкту.",[10,451,452,453,458,459,463],{},"Це оновлення переводить проєкт в офлайн, поки триває, а панель перед\nпідтвердженням показує, скільки це приблизно займе. ",[84,454,457],{"href":455,"rel":456},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fupgrading",[88],"Посібник з\nоновлення"," від Supabase\nрадить спершу зробити копію даних. На безкоштовному тарифі її більше ніхто не\nробить, а ",[84,460,462],{"href":461},"\u002Fblog\u002Fback-up-supabase-free-tier","зробити копію з панелі"," можна без\nтермінала.",[23,465,467],{"id":466},"як-перезапустити-проєкт-supabase","Як перезапустити проєкт Supabase?",[10,469,470],{},"У панелі: відкрийте проєкт, перейдіть у Project Settings, потім у General, і\nнатисніть Restart project у розділі Project availability. Стрілка поруч із\nкнопкою пропонує Fast database reboot, що перезапускає лише базу даних і\nскорочує простій. В обох випадках Supabase попереджає про кілька хвилин офлайну.",[10,472,473],{},"Перезапуск стане правильним інструментом для проєкту, який перевантажено або\nпозначено як unhealthy, і саме про це Supabase просив власників, яких зачепив\nінцидент 10 вересня. Якщо проєкт замалий для своєї роботи, проблема повернеться,\nа довгострокове рішення полягає в більшому розмірі обчислень або легших запитах.\nПроєкту на паузі потрібна кнопка Resume project, яка розташована там само. Повна\nбаза лишається повною після перезапуску, а відхилений ключ і далі відхиляється.",[10,475,476],{},"Не чіпайте кнопку, поки триває інцидент, що згадує дії з проєктами. 4 вересня\n2026 року перезапуски, відновлення й зміни розміру обчислень давали помилки в\nусіх регіонах, Supabase просив їх не пробувати, а на якийсь час і зовсім їх\nвимкнув.",[23,478,480],{"id":479},"що-можна-зробити-під-час-збою-supabase","Що можна зробити під час збою Supabase?",[10,482,483],{},"Дуже мало, і чекати тут правильно. Збій має усунути Supabase, і ваш проєкт\nповернеться без вашої участі.",[10,485,486],{},"Тож збій виявляється єдиним випадком у цій статті, який розв’язується\nочікуванням, і саме тому крок 2 іде перед усім, що ви робитимете тут.\nВідключення світла на всій вулиці ви перечікуєте. Відключення вашої квартири\nтриває, доки ви не зателефонуєте постачальнику, а проєкт на паузі стоїть, доки\nви його не відновите, і годинник відраховує рік від дня, коли він зупинився.",[63,488],{"alt":489,"caption":490,"src":491},"Дві часові лінії. На верхній лінія падає і сама піднімається назад. На нижній лінія падає і лишається внизу. Кнопка живлення на ній відкриває пунктирний шлях угору, а нижня лінія тягнеться далі до перекресленої позначки.","Збій минає сам. Проєкт на паузі повертається, коли ви його відновлюєте, і лише протягом року.","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fwait-or-act-1600x560.png",[10,493,494],{},"Що варто зробити, поки чекаєте:",[212,496,497,503,509,515],{},[34,498,499,502],{},[37,500,501],{},"Переконайтеся, що це стосується вас."," Перевірте, чи згадує інцидент ваш\nрегіон або сервіс, яким користується ваш застосунок.",[34,504,505,508],{},[37,506,507],{},"Підпишіться на цей інцидент",", щоб до вас дійшло оновлення про його\nзавершення.",[34,510,511,514],{},[37,512,513],{},"Попередьте користувачів."," Один рядок там, де вас шукають: застосунок\nзачепив збій у його постачальника бази даних, і він повернеться.",[34,516,517,520],{},[37,518,519],{},"Не чіпайте проєкт."," Під час інциденту 4 вересня Supabase радив не\nстворювати проєкти, не змінювати конфігурацію, не перезапускати й не змінювати\nрозмір обчислень, доки інцидент не закриють. Робочі проєкти й далі працювали,\nпоки ці дії давали збій.",[10,522,523,524,529],{},"До того ж вимагати компенсації за простій можна лише на Enterprise.\n",[84,525,528],{"href":526,"rel":527},"https:\u002F\u002Fsupabase.com\u002Fsla",[88],"Зобов’язання щодо доступності"," від Supabase, з\nкредитами за місяць нижче 99,9 %, написане тільки для клієнтів Enterprise.",[23,531,533],{"id":532},"що-підготувати-до-наступного-разу","Що підготувати до наступного разу",[10,535,536],{},"Чотири речі, і всі вони простіші в день, коли нічого не зламано:",[212,538,539,545,558,564],{},[34,540,541,544],{},[37,542,543],{},"Ваш регіон, записаний"," поруч з адресою проєкту, і підписка на сторінку\nстатусу.",[34,546,547,550,551,553,554,557],{},[37,548,549],{},"Ваш застосунок на публічному ключі."," Supabase прибирає старі ключі ",[95,552,403],{}," і\n",[95,555,556],{},"service_role"," до кінця 2026 року, і застосунок, який досі надсилає один із\nних, почне збирати помилки 401, щойно їх не стане.",[34,559,560,563],{},[37,561,562],{},"Копія вашої бази даних поза вашим обліковим записом Supabase."," Збій, пауза\nй обмеження стаються всередині Supabase, а копія, що лежить деінде, їм\nнедосяжна. На безкоштовному тарифі Supabase не зберігає для вас жодної копії.",[34,565,566,569],{},[37,567,568],{},"Щось, що помітить, коли ваш застосунок перестане відповідати",", і скаже вам\nраніше, ніж це доведеться зробити клієнтові.",[23,571,573],{"id":572},"де-тут-reeve","Де тут Reeve",[10,575,576],{},[37,577,578],{},"Reeve Monitor стежить за адресою, яку завантажують ваші відвідувачі. Reeve\nCare ще й підключається до бази даних Supabase за нею і тримає її копію поза\nвашим обліковим записом Supabase.",[212,580,581,587,593,599],{},[34,582,583,586],{},[37,584,585],{},"Monitor перевіряє адресу вашого застосунку кожні 60 секунд"," ззовні і\nнадсилає вам лист, коли вона перестає відповідати, і ще один, коли вона\nповертається. Також він щогодини повторює всі дев’ять наших перевірок безпеки,\nдля трьох застосунків щонайбільше.",[34,588,589,592],{},[37,590,591],{},"Care сам підключається до вашої бази даних Supabase",", щоб зробити копію,\nщодня на Care і частіше на тарифах вище. Ніч, коли база не відповідає, означає\nкопію, яку не вдалося зробити, і ви отримуєте лист про те, що сталося.",[34,594,595,598],{},[37,596,597],{},"Копія лежить поза вашим обліковим записом Supabase",", зашифрована, і її\nперечитують, перш ніж зарахувати, тож пауза чи обмеження лишають вашу останню\nдобру копію там, де ви до неї дістанетеся.",[34,600,601,604],{},[37,602,603],{},"Відновлення робиться однією кнопкою",", а перед ним робиться знімок поточного\nстану, тож відновлення має власне скасування.",[10,606,607,608,612,613,134],{},"Що покриває кожен тариф, видно на ",[84,609,611],{"href":610},"\u002Fpricing","сторінці цін",", а копію, перевірку й\nвідновлення крок за кроком намальовано на ",[84,614,616],{"href":615},"\u002Fsupabase-backups","сторінці про резервні копії\nSupabase",[23,618,620],{"id":619},"що-зробити-зараз","Що зробити зараз",[622,623,624],"key-takeaways",{},[212,625,626,629,632,635,638,641],{},[34,627,628],{},"Знайдіть регіон свого проєкту на сторінці Infrastructure в його налаштуваннях і підпишіться на сторінку статусу Supabase.",[34,630,631],{},"Коли застосунок показує порожній екран, перевіряйте по черзі: сторінку статусу, слово Paused у списку проєктів, чи завантажуються сторінки, коли збереження не працює, і коди статусу у вкладці Network браузера.",[34,633,634],{},"Якщо проєкт на паузі, відновіть його сьогодні. Очікування лише витрачає ваш рік.",[34,636,637],{},"Якщо запити повертаються з кодом 401, прочитайте повідомлення, перш ніж щось змінювати. Ключ, таблиця й сесія мають кожен свій розв’язок.",[34,639,640],{},"Під час справжнього збою не чіпайте проєкт: жодних перезапусків, відновлень чи оновлень, доки інцидент не закриють.",[34,642,643,644,646],{},"Переведіть застосунок на ключ ",[95,645,417],{}," і тримайте копію бази даних поза Supabase, поки нічого не зламано.",[10,648,649,650,134],{},"Перш ніж закрити цю вкладку, відкрийте налаштування Infrastructure свого\nпроєкту, запишіть код регіону поруч з його адресою і підпишіться на сторінку\nстатусу. Якщо сьогоднішній порожній екран виявився паузою, ",[84,651,652],{"href":132},"ось що робити\nдалі",{"title":654,"searchDepth":655,"depth":655,"links":656},"",3,[657,659,665,666,667,668,669,670],{"id":25,"depth":658,"text":26},2,{"id":73,"depth":658,"text":74,"children":660},[661,662,663,664],{"id":78,"depth":655,"text":79},{"id":125,"depth":655,"text":126},{"id":137,"depth":655,"text":138},{"id":191,"depth":655,"text":192},{"id":380,"depth":658,"text":381},{"id":466,"depth":658,"text":467},{"id":479,"depth":658,"text":480},{"id":532,"depth":658,"text":533},{"id":572,"depth":658,"text":573},{"id":619,"depth":658,"text":620},"Основи безпеки","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcover-1200x630.png","Нічна вулиця з освітленими будинками, а перед ними будинок, у якому не світиться жодне вікно.","Supabase не працює чи зламався ваш застосунок? Пауза, повна база й ваша власна помилка виглядають однаково. Чотири перевірки їх розрізняють.",false,"md",[678,681,684,687,689,691],{"q":679,"a":680},"Supabase зараз не працює?","Перевірте status.supabase.com: там Supabase публікує власні інциденти, сервіс за сервісом і регіон за регіоном. Спершу з’ясуйте регіон свого проєкту: його видно на сторінці Infrastructure в налаштуваннях проєкту, з кодом на кшталт eu-west-1. Якщо на сторінці статусу ніщо не згадує цей регіон чи сервіс, яким користується ваш застосунок, Supabase не оголошував жодної проблеми, і далі варто дивитися на ваш власний проєкт.",{"q":682,"a":683},"Мій застосунок не працює, а сторінка статусу Supabase зелена. Що тепер?","Подивіться на свій проєкт. Перевірте у списку проєктів у панелі Supabase, чи немає поруч слова Paused, а потім чи не позначено проєкт як unhealthy, чи не перейшов він у режим лише для читання і чи не обмежений він. Якщо все це виглядає нормально, відкрийте свій застосунок, натисніть F12, виберіть вкладку Network і перезавантажте сторінку. Запит до вашого проєкту, що повертається з кодом 200, означає, що Supabase відповів, а проблема з вашого боку.",{"q":685,"a":686},"Проєкт Supabase на паузі й збій означають одне й те саме?","Ні, і вони потребують протилежних дій. Збій на боці Supabase і минає, коли вони його усунуть, тож чекати правильно. Пауза означає, що Supabase зупинив ваш проєкт, найчастіше безкоштовний, у якому тиждень не було активності, і нічого не зміниться, доки ви не відновите його з панелі. На це у вас є рік. Після нього панель пропонує натомість завантаження, а повернутися в мережу можна лише з новим проєктом за новою адресою.",{"q":381,"a":688},"Код 401 означає, що Supabase відповів і відмовив тому, хто питав. Можливо, ваш застосунок надсилає ключ, який проєкт більше не приймає: так буває, коли старий ключ anon вимкнули або коли проєкт на паузі відновили вже без нього. Таблиця може відмовити з повідомленням permission denied. Або відхиляються сесії: з 14 серпня до 29 вересня 2026 року саме це траплялося з частиною нових проєктів, а розв’язує це Upgrade project на сторінці General.",{"q":467,"a":690},"Відкрийте проєкт у панелі Supabase і перейдіть у Project Settings, потім у General. У розділі Project availability кнопка Restart project перезапускає все, а стрілка поруч пропонує Fast database reboot, що перезапускає лише базу даних і скорочує простій. В обох випадках розраховуйте на кілька хвилин офлайну. Перезапуск допомагає перевантаженому проєкту або проєкту з позначкою unhealthy. Проєкту на паузі потрібна кнопка Resume на тій самій сторінці, а повній базі потрібне місце.",{"q":692,"a":693},"Чи можна щось зробити під час збою Supabase?","Дуже мало, і чекати тут правильно. Переконайтеся, що інцидент згадує ваш регіон, підпишіться на його оновлення і скажіть користувачам, що саме вони бачать. Відкладіть перезапуски, відновлення, оновлення й зміни розміру обчислень, доки інцидент не закриють: під час інциденту на всій платформі 4 вересня 2026 року Supabase радив утриматися саме від цього. Гарантія доступності з компенсацією кредитами поширюється лише на клієнтів Enterprise.","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",[696,697,698,699,700,701,702,703,704],"supabase не працює","supabase лежить","supabase down","статус supabase","supabase status","збій supabase","supabase помилка 401","перезапустити проєкт supabase","застосунок не підключається до supabase",{},true,"\u002Fblog\u002Fis-supabase-down-or-your-app","2026-10-01",{"title":5,"description":674},"blog\u002Fis-supabase-down-or-your-app",[712,713,714],"Supabase не працює? Можливо. Проєкт на паузі, проєкт, що вперся в ліміт, і помилка у вашому власному застосунку дають той самий порожній екран.","Сторінка статусу Supabase відповідає лише на перше питання. Ваш список проєктів і сторінки самого проєкту відповідають на наступні два, а коди статусу у вашому браузері закривають останнє.","Збій минає без вас. Проєкт на паузі стоїть, доки ви його не відновите, а через рік такої можливості вже немає.","7fdMzpHa7OeuT7XNRzEkHiUf8epvZebU6Evo07E9HZk",[717,723,729,735,741,747,753,759,765,771,777,778,784,789,796,802,808,812,818,824,830,836,842,848,854,860,866,872,878,884,890,895,901,907,913,919,925,931,937,943,949,955,961,967,972,978,984,990,996,1002,1008,1014,1020,1026,1032,1037,1042,1048,1054,1059,1065],{"path":718,"title":719,"description":720,"published":721,"category":671,"image":722,"draft":675},"\u002Fblog\u002Fstorage-upload-violates-row-level-security","\"Row-level security policy for table objects\" при вивантаженні","\"New row violates row-level security policy for table objects\" означає, що вашому вивантаженню бракує правила insert. Публічний бакет його не додає.","2026-10-11","\u002Fblog\u002Fstorage-upload-violates-row-level-security\u002Fcard-800x500.png",{"path":724,"title":725,"description":726,"published":727,"category":671,"image":728,"draft":675},"\u002Fblog\u002Fbase44-security-scan","Сканування безпеки Base44: те, що бачить лише воно","Сканування безпеки Base44 перевіряє сім видів проблем зсередини. Ось половина, яку читає тільки воно, і половина, на яку воно ніколи не дивиться.","2026-10-10","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":730,"title":731,"description":732,"published":733,"category":671,"image":734,"draft":675},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Ваш API-ключ витік. Порядок дій","API-ключ витік, і ви не знаєте, що робити першим. Не кожен ключ у вашому фронтенді є витоком, а порядок важить більше за швидкість.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":736,"title":737,"description":738,"published":739,"category":671,"image":740,"draft":675},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" без вимкнення RLS","\"Infinite recursion detected in policy for relation\" означає, що ваша policy запитала таблицю, яку вона захищає. Ось як розірвати коло.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":742,"title":743,"description":744,"published":745,"category":671,"image":746,"draft":675},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" у Supabase, і хибне виправлення","\"No API key found in request\" означає, що запит дійшов до Supabase без ключа. Більшість відповідей натомість вказують на правила вашої бази.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":748,"title":749,"description":750,"published":751,"category":671,"image":752,"draft":675},"\u002Fblog\u002Fis-base44-safe","Чи безпечний Base44? Дані 5 442 застосунків","Чи безпечний Base44? Ми прогнали дев’ять перевірок на 5 442 робочих застосунках Base44. Майже всі отримали B з причин, яких власник ніколи не обирав.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":754,"title":755,"description":756,"published":757,"category":671,"image":758,"draft":675},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Сховати ключ API: перенесіть його в Supabase Edge Function","Сховати ключ API означає прибрати його з браузера, а Supabase Edge Function це найменше місце, куди його покласти. Два кроки поруч важать більше.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":760,"title":761,"description":762,"published":763,"category":671,"image":764,"draft":675},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Чи відкритий ваш файл .env? Дванадцять шляхів для перевірки","Чи відкритий ваш файл .env на вашому власному вебсервері? Дванадцять адрес скажуть це за хвилину, а влучання означає, що все в ньому вже публічне.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":766,"title":767,"description":768,"published":769,"category":671,"image":770,"draft":675},"\u002Fblog\u002Fis-v0-safe","Безпека v0: усі 1 790 просканованих застосунків v0 отримали A","Безпека v0 на 1 790 живих застосунках v0: усі отримали A. Лише 17 згадували базу даних, і саме це здебільшого вимірює оцінка A.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":772,"title":773,"description":774,"published":775,"category":671,"image":776,"draft":675},"\u002Fblog\u002Fis-bolt-safe","Чи безпечний Bolt? Що показали 1 123 застосунки Bolt","Чи безпечний Bolt? Ми прогнали 1 123 живі застосунки Bolt через дев’ять перевірок. Хостинг був чистим. Знахідки: ключі й відкриті таблиці в самих застосунках.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":707,"title":5,"description":674,"published":708,"category":671,"image":694,"draft":675},{"path":779,"title":780,"description":781,"published":782,"category":671,"image":783,"draft":675},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","Чи шифрує Supabase мої дані? Так. Ось від чого це захищає","Чи шифрує Supabase дані? Так: AES-256 у стані спокою, TLS під час передавання, SOC 2 та ISO 27001. Що покриває кожне і який витік не зупиняє жодне.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":154,"title":785,"description":786,"published":787,"category":671,"image":788,"draft":675},"Ліміти безкоштовного тарифу Supabase і що стається на кожному","Ліміти безкоштовного тарифу Supabase: 500 МБ бази, 5 ГБ egress і жодних резервних копій. Що стається на кожній межі і що змінює Pro за $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":790,"title":791,"description":792,"published":793,"category":794,"image":795,"draft":675},"\u002Fblog\u002Ftest-your-supabase-backup","Перевірте резервну копію Supabase до того, як вона знадобиться","Як перевірити резервну копію Supabase: відновити в тестовий проєкт, порахувати рядки, увійти й знайти рядок, якого бракує обрізаному файлу.","2026-09-28","Backups","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":797,"title":798,"description":799,"published":800,"category":794,"image":801,"draft":675},"\u002Fblog\u002Fsupabase-backup-github-action","Безкоштовна резервна копія Supabase через GitHub Action і підступ","Резервна копія Supabase через GitHub Action безкоштовна й годиться багатьом застосункам. Робочий процес, потрібний рядок підключення та egress.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":803,"title":804,"description":805,"published":806,"category":794,"image":807,"draft":675},"\u002Fblog\u002Fdownload-your-supabase-backup","Чому ви не можете завантажити резервну копію Supabase","Завантажити резервну копію Supabase на сучасному проєкті не вийде: щоденна копія там фізична. Як це перевірити і як тримати власну копію.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":435,"title":809,"description":810,"published":806,"category":671,"image":811,"draft":675},"Supabase \"permission denied for table\": бракує GRANT","З 30 жовтня нова таблиця в Supabase відповідає \"permission denied for table\", доки ви не дасте доступ. Лист показує лише половину виправлення.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":813,"title":814,"description":815,"published":816,"category":671,"image":817,"draft":675},"\u002Fblog\u002Fopen-api-endpoint-exposed","Чи є відкритий API-ендпоінт проблемою безпеки? Читайте JSON","Ваше сканування позначило відкритий API-ендпоінт. Чи це важливо, залежить від того, що повернулося, і більшість знайдених належали платформі.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":819,"title":820,"description":821,"published":822,"category":671,"image":823,"draft":675},"\u002Fblog\u002Flovable-security-scan","Сканування безпеки Lovable: чого воно не доведе","Сканування безпеки Lovable: що перевіряють Quick scan і Deep scan, коли запускається кожне, і єдине, чого не доведе жодне сканування зсередини.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":825,"title":826,"description":827,"published":828,"category":794,"image":829,"draft":675},"\u002Fblog\u002Fsupabase-backup-auth-users","Чому у вашому дампі Supabase немає користувачів","Запустіть supabase db dump окремо і отримаєте форму вашої бази та жодного її рядка, без схеми auth, у якій живуть ваші користувачі.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":831,"title":832,"description":833,"published":834,"category":671,"image":835,"draft":675},"\u002Fblog\u002Fdomain-and-certificate-expiry","Домен закінчився, сайт лежить: що буде далі","Ваш домен закінчився і сайт лежить. Ось який годинник уже пішов, чому прострочений сертифікат це менша з двох бід, і як перевірити обидва.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":837,"title":838,"description":839,"published":840,"category":671,"image":841,"draft":675},"\u002Fblog\u002Fis-lovable-safe","Чи безпечний Lovable? Що показали 18 554 застосунки Lovable","Чи безпечний Lovable? Ми прогнали 18 554 живі застосунки Lovable через дев’ять перевірок. Платформа виявилася найчистішою з п’яти. Знахідки були в застосунках.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":843,"title":844,"description":845,"published":846,"category":671,"image":847,"draft":675},"\u002Fblog\u002Fvibe-coded-app-security-checklist","Чек-лист безпеки для vibe coding, у девʼяти перевірках","Чек-лист безпеки для vibe coding із девʼяти пунктів, кожен з яких будь-хто може перевірити у вашому живому застосунку ззовні, і кожен має тест на один рядок.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":849,"title":850,"description":851,"published":852,"category":671,"image":853,"draft":675},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Секретний ключ Stripe у фронтенді може рухати гроші","Секретний ключ Stripe, відкритий у вашому фронтенді, може повертати кошти, списувати й читати кожну картку клієнта. А ключ pk_live_ там і має бути.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":855,"title":856,"description":857,"published":858,"category":671,"image":859,"draft":675},"\u002Fblog\u002Fvite-and-next-public-env-vars","Змінні оточення Vite відкриті: префікс означає опублікувати це","Змінні оточення Vite відкриті у вашому застосунку, бо так просив префікс. VITE_ і NEXT_PUBLIC_ означають опублікувати це, а ШІ, який їх додав, не знав ціни.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":861,"title":862,"description":863,"published":864,"category":671,"image":865,"draft":675},"\u002Fblog\u002Fbase44-source-maps","Безпека Base44: що позначає скан і що з цього виправляти вам","Безпека Base44 на 5 438 просканованих застосунках: три знахідки майже на кожному належать платформі, source map є бейджем Base44, а ваша частина коротка.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":867,"title":868,"description":869,"published":870,"category":671,"image":871,"draft":675},"\u002Fblog\u002Fis-cursor-ai-safe","Чи безпечний Cursor AI? Редактор, код і опублікований застосунок","Чи безпечний Cursor AI? Три запитання в одному пошуку: що Cursor зберігає, у чому помиляється його код і чи відкритий застосунок, який ви опублікували.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":873,"title":874,"description":875,"published":876,"category":671,"image":877,"draft":675},"\u002Fblog\u002Fis-replit-safe","Чи безпечний Replit? Що ми знайшли в 3 042 живих застосунках Replit","Чи безпечний Replit? Ми прогнали 3 042 живі застосунки Replit через дев’ять зовнішніх перевірок. Знахідки були в опублікованому застосунку, а не в хостингу.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":879,"title":880,"description":881,"published":882,"category":794,"image":883,"draft":675},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: у копії бази даних немає жодного файлу","Supabase storage backup це окрема робота. Копії бази даних зберігають список ваших файлів і жодного з них, тож після відновлення кожне завантаження зламане.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":885,"title":886,"description":887,"published":888,"category":794,"image":889,"draft":675},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Point-in-time recovery у Supabase: ціна та межі","Point-in-time recovery у Supabase відмотує базу на будь-яку секунду за останній тиждень. Коштує $100 на місяць понад Pro і покриває лише базу даних.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":132,"title":891,"description":892,"published":893,"category":794,"image":894,"draft":675},"Проєкт Supabase на паузі? Ваші дані нікуди не зникли","Supabase поставив ваш проєкт на паузу після тижня без активності. Нічого не видалено, кнопка Restore стоїть поруч із назвою, і у вас є рік, щоб натиснути.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":896,"title":897,"description":898,"published":899,"category":671,"image":900,"draft":675},"\u002Fblog\u002Fsafest-ai-app-builder","Який білдер застосунків з ШІ найбезпечніший? 30 998 тестів","Який білдер застосунків з ШІ найбезпечніший? Ми просканували 30 998 живих застосунків з Lovable, Base44, Replit, v0 і Bolt. Оцінку вирішує не білдер.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":902,"title":903,"description":904,"published":905,"category":671,"image":906,"draft":675},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Увімкніть Row Level Security на кожній таблиці Supabase і перевірте","Row Level Security у Supabase без політики закриває таблицю повністю. Політика без увімкненого перемикача не робить нічого. Ось SQL, і ось перевірка.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":908,"title":909,"description":910,"published":911,"category":671,"image":912,"draft":675},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": чого не бачить попередження","Supabase позначає \"RLS disabled in public\" як помилку. Про політику читання, яка лишає вашу таблицю так само відкритою, він не каже нічого.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":914,"title":915,"description":916,"published":917,"category":671,"image":918,"draft":675},"\u002Fblog\u002Frotate-supabase-service-role-key","Як замінити злитий ключ service_role у Supabase","Supabase каже спершу закрити витік. Інші посібники кажуть міняти негайно. Що правильно, залежить від того, куди саме потрапив ваш ключ service_role.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":920,"title":921,"description":922,"published":923,"category":671,"image":924,"draft":675},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Сканери безпеки для vibe coding у порівнянні, наш теж","Найкращий сканер безпеки для vibe coding залежить від трьох питань, на які не відповідає жоден перелік функцій. Десять інструментів і ціни.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":926,"title":927,"description":928,"published":929,"category":671,"image":930,"draft":675},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: п’ять перевірок, які зробите самі","Supabase security checker читає ваш опублікований застосунок, а не налаштування проєкту. Ось п’ять перевірок і як виконати кожну самостійно.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":932,"title":933,"description":934,"published":935,"category":671,"image":936,"draft":675},"\u002Fblog\u002Fvibe-coding-security-scanner","Сканер безпеки для vibe coding: чого не бачить скан URL","Сканер безпеки для vibe coding читає ваш робочий застосунок ззовні. Що це охоплює, чотири речі, яких він не бачить, і як читати результат.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":938,"title":939,"description":940,"published":941,"category":671,"image":942,"draft":675},"\u002Fblog\u002Fmissing-security-headers","Відсутні заголовки безпеки: коли це справді важливо","Відсутні заголовки безпеки трапляються в наших звітах найчастіше. Від чого вони захищають і коли це найменш терміновий рядок вашого звіту.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":944,"title":945,"description":946,"published":947,"category":671,"image":948,"draft":675},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Ваш ключ API OpenAI відкритий у фронтенді. Замініть його.","Ключ API OpenAI, відкритий у фронтенді, не можна прив'язати до домену. Замініть його сьогодні, перенесіть виклик на свій сервер і обмежте витрати.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":950,"title":951,"description":952,"published":953,"category":671,"image":954,"draft":675},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Ключ API у фронтенді: що насправді віддають 30 998 застосунків","Ключ API, відкритий у вашому фронтенді, зазвичай є ключем Google Maps. Ми просканували 30 998 vibe-coded застосунків і порахували, що витікає насправді.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":956,"title":957,"description":958,"published":959,"category":794,"image":960,"draft":675},"\u002Fblog\u002Fsupabase-backup-tools-compared","Інструменти резервного копіювання Supabase, і наш серед них","Чотири види інструментів резервного копіювання Supabase, що копіює кожен і коли безкоштовна GitHub Action виграє в будь-якої оплати, нашої теж.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":962,"title":963,"description":964,"published":965,"category":671,"image":966,"draft":675},"\u002Fblog\u002Freplit-secrets-explained","Як користуватися секретами в Replit і що все одно публікується","Як користуватися секретами в Replit: додати, прочитати і усунути дві причини undefined. А ще ключі, які цей інструмент не здатен зберегти в таємниці.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":461,"title":968,"description":969,"published":970,"category":794,"image":971,"draft":675},"Резервні копії на безкоштовному тарифі Supabase без терміналу","На безкоштовному тарифі Supabase резервних копій немає: копію робите ви. Як зробити її з панелі та що втрачає шлях через CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":973,"title":974,"description":975,"published":976,"category":671,"image":977,"draft":675},"\u002Fblog\u002Fis-supabase-secure","Чи безпечний Supabase? Так. Ваш проєкт це інше питання","Чи безпечний Supabase? Платформа проходить аудити, шифрує дані й тримає пентести. Їхня документація каже, де це закінчується і починаються ваші налаштування.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":979,"title":980,"description":981,"published":982,"category":671,"image":983,"draft":675},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Де знайти API-ключі Supabase: anon, service_role і URL","URL проєкту, ключ anon і ключ service_role лежать на одній сторінці панелі. Ось де вона, і яке з чотирьох значень має бути у вашому застосунку.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":985,"title":986,"description":987,"published":988,"category":671,"image":989,"draft":675},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy в Supabase. Що далі?","\"New row violates row-level security policy\" означає, що Supabase відмовив у записі. Швидке виправлення знову відкриває таблицю для всіх.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":991,"title":992,"description":993,"published":994,"category":671,"image":995,"draft":675},"\u002Fblog\u002Fcors-wildcard-security-risk","Чи є вайлдкард CORS ризиком для безпеки? Майже ніколи.","Чи є вайлдкард CORS ризиком для безпеки? Зазвичай це типове налаштування вашого білдера, і воно не видає нічого, що ваш сервер і так віддавав кожному.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":997,"title":998,"description":999,"published":1000,"category":794,"image":1001,"draft":675},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Branching у Supabase це не бекап. Він іде тільки вперед.","Чому branching у Supabase це не бекап: гілка стартує без ваших даних, а мердж переносить саму лише схему. Для чого він потрібен і що брати замість нього.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":1003,"title":1004,"description":1005,"published":1006,"category":794,"image":1007,"draft":675},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Як відновити резервну копію Supabase, і що ламається потім","Як відновити резервну копію Supabase з панелі або з файлу дампа, що саме замінює відновлення і чому ваш застосунок може лишитися зламаним після нього.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":1009,"title":1010,"description":1011,"published":1012,"category":671,"image":1013,"draft":675},"\u002Fblog\u002Fsupabase-storage-bucket-public","Ваш бакет Supabase Storage публічний. Чи це проблема?","Публічний бакет Supabase Storage означає, що той, хто має URL файлу, може його відкрити. Він не означає, що хтось може переглянути список вмісту.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":1015,"title":1016,"description":1017,"published":1018,"category":671,"image":1019,"draft":675},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","Чи є проблемою ключ API Google у вашому браузері?","Ключ API Google у відкритому коді сторінки наш сканер знаходить найчастіше, і зазвичай усе гаразд. Вирішує це одне безкоштовне налаштування.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":1021,"title":1022,"description":1023,"published":1024,"category":794,"image":1025,"draft":675},"\u002Fblog\u002Fai-agent-deleted-my-database","ШІ-агент видалив мої дані в Supabase. Що можна відновити?","ШІ-агент видалив дані з вашої бази. Те, що ви зможете відновити, вирішилося раніше, а наступні хвилини вирішують, скільки з цього вціліє.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":1027,"title":1028,"description":1029,"published":1030,"category":671,"image":1031,"draft":675},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Чи може будь-хто прочитати вашу базу Supabase? 3 680 застосунків","Чи може будь-хто прочитати вашу базу даних Supabase без входу? Ми просканували 30 998 живих застосунків, зроблених ШІ-білдерами, і виміряли, як часто так.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":1033,"title":1034,"description":1035,"published":1030,"category":671,"image":1036,"draft":675},"\u002Fblog\u002Fsource-maps-exposed-in-production","Відкриті source maps: ваш застосунок публікує свій вихідний код","Відкрита source map дає будь-кому прочитати оригінальний код вашого застосунку, разом із коментарями. Перевірка за 30 секунд, і що важить насправді.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":421,"title":1038,"description":1039,"published":1040,"category":671,"image":1041,"draft":675},"Нові API-ключі Supabase: який із них безпечний у застосунку?","Supabase замінив anon і service_role публічними та секретними ключами. Який із них має бути у вашому застосунку, а який не має бути ніколи?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":1043,"title":1044,"description":1045,"published":1046,"category":794,"image":1047,"draft":675},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Чи робить Supabase резервні копії моєї бази? Залежить від тарифу.","Чи робить Supabase резервні копії вашої бази даних? На платних тарифах щодня, на безкоштовному жодної. Як дізнатися, що у вас насправді є.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":1049,"title":1050,"description":1051,"published":1052,"category":671,"image":1053,"draft":675},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security увімкнено. Таблиця досі публічна.","Увімкнути Supabase Row Level Security не означає захистити таблицю. Захищають політики, а та, що полагодила застосунок, часто впускає всіх.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":1055,"title":1056,"description":1057,"published":1052,"category":794,"image":1058,"draft":675},"\u002Fblog\u002Fversion-history-is-not-a-backup","Історія версій не є резервною копією. Вона не поверне таблицю.","Lovable і Bolt ведуть історію версій вашого коду. Ваша база даних працює як окремий сервіс, тож відкат назад не поверне ваші дані.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":1060,"title":1061,"description":1062,"published":1063,"category":794,"image":1064,"draft":675},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Три способи зробити резервну копію бази Supabase, і чого бракує","Панель, pg_dump і керований сервіс. Що насправді зберігає кожен спосіб, що тихо лишає осторонь і який із них переживе втрату акаунта.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":1066,"title":1067,"description":1068,"published":1063,"category":671,"image":1069,"draft":675},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Які API-ключі безпечні у браузері, а які ні","Ваш ключ anon у Supabase створений, щоб бути публічним. Ключ service_role для цього не створений, і він ігнорує всі правила, які ви задали. Як їх розрізнити.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791705966121]