[{"data":1,"prerenderedAt":799},["ShallowReactive",2],{"blog-uk-supabase-project-paused-recover":3,"blog-index-uk":452},{"id":4,"title":5,"body":6,"category":405,"cover":406,"coverAlt":407,"description":408,"draft":409,"extension":410,"faq":411,"image":429,"keywords":430,"meta":438,"navigation":439,"ogTitle":440,"path":441,"published":442,"seo":443,"stem":444,"tldr":445,"updated":450,"__hash__":451},"blog_uk\u002Fblog\u002Fsupabase-project-paused-recover.md","Проєкт Supabase на паузі? Ваші дані нікуди не зникли",{"type":7,"value":8,"toc":391},"minimark",[9,13,16,19,24,27,30,41,45,48,51,54,58,61,64,98,101,109,113,116,125,131,134,138,141,144,153,220,223,228,231,235,238,246,249,262,266,269,272,283,291,295,320,324,327,332,364,371,383],[10,11,12],"p",{},"Ваш застосунок перестав відповідати. Кожен запит повертається помилкою, а коли\nви відкриваєте панель Supabase, поряд з назвою проєкту стоїть слово Paused і\nкнопка Restore там, де зазвичай були панелі. Нічого з того, що ви публікували,\nцього не спричинило, і ніщо вас не попередило.",[10,14,15],{},"Ось де помиляються обидві звичні відповіді. Перша каже, що вашої бази даних\nбільше немає, і це ніколи не було правдою. Друга каже розслабитись, бо проєкт\nSupabase на паузі через неактивність досі тримає всі свої дані, тож натисніть\nRestore і живіть далі. Ця друга правдива сьогодні і тихо перестає бути\nправдивою в дату, якої ніхто не називає.",[10,17,18],{},"Уявіть проєкт як бокс на складі. Орендна плата припинилась, тому світло\nвимкнене, а двері зачинені. Ваші коробки всередині, точно такі, якими ви їх\nзалишили. Саме там зараз стоїть ваш проєкт, і існує дата, після якої бокс\nзвільняють.",[20,21,23],"h2",{"id":22},"чи-означає-пауза-що-проєкт-supabase-видалено","Чи означає пауза, що проєкт Supabase видалено?",[10,25,26],{},"Ні. Проєкт зупинено, а зупинити не означає прибрати. Ваші таблиці, ваші рядки,\nваші правила Row Level Security і файли, які завантажили ваші користувачі, далі\nлежать на диску. Вимкнули базу даних перед ними, і тому ваш застосунок отримує\nпомилку на кожен запит.",[10,28,29],{},"Саме цей розрив робить паніку зрозумілою. Ззовні застосунок зламаний так, як\nламається застосунок, коли зникла його база даних: порожні списки, завантаження,\nякі ніколи не завершуються, помилка на кожному збереженні. З панелі це проєкт із\nкнопкою на ньому.",[10,31,32,33,40],{},"Supabase ставить на паузу проєкти на безкоштовному тарифі і лише на ньому. За\nїхньою власною документацією, застосунки безкоштовного тарифу, які показують\nнизьку активність протягом семи днів, можуть бути поставлені на паузу заради\nекономії серверних ресурсів, а платні проєкти не ставлять на паузу через\nнеактивність узагалі. Їхня\n",[34,35,39],"a",{"href":36,"rel":37},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Ffree-project-pausing",[38],"nofollow","сторінка про паузу","\nсаме та, яку варто прочитати, бо все нижче тут залежить від чисел, які належать\nїм.",[20,42,44],{"id":43},"чому-supabase-поставив-мій-проєкт-на-паузу","Чому Supabase поставив мій проєкт на паузу?",[10,46,47],{},"Бо з ним приблизно тиждень ніхто не розмовляв.",[10,49,50],{},"Активність означає запити. Відкриття проєкту в панелі рахується. Ваш застосунок,\nякий звертається до бази, рахується. Не рахується те, що ваш застосунок просто\nіснує, тож проєкт, який запустився минулого місяця і ще не знайшов відвідувачів,\nмає саме ту форму, яку ставлять на паузу. З відвідуваними застосунками це\nтрапляється майже ніколи.",[10,52,53],{},"Безкоштовний тариф до того ж дозволяє два активні проєкти одночасно, і\nпоставлені на паузу перестають рахуватися проти цього ліміту. Тож проєкт, який\nви відклали навмисне, і проєкт, який зупинився сам, виглядають у панелі\nоднаково, і обидва вже біжать проти того самого річного годинника.",[20,55,57],{"id":56},"як-відновити-проєкт-supabase-з-паузи","Як відновити проєкт Supabase з паузи?",[10,59,60],{},"Відкрийте панель, виберіть проєкт і натисніть Restore. Усередині вікна це вся\nпроцедура, і це кілька хвилин очікування замість міграції.",[10,62,63],{},"Повертається той проєкт, який у вас був. Той самий ідентифікатор проєкту, отже\nта сама URL API. Ті самі таблиці, ті самі правила, ті самі бакети Storage.\nSupabase піднімає безкоштовні проєкти на найновішій мінорній версії Postgres у\nмежах відновлення, і ви цього не помітите.",[10,65,66,67,71,72,75,76,81,82,84,85,88,89,92,93,97],{},"Ключі можуть повернутися не такими, якими були. Supabase попереджав, що проєкти,\nвідновлені після 1 листопада 2025 року, більше не отримують застарілих ключів\n",[68,69,70],"code",{},"anon"," і ",[68,73,74],{},"service_role",". ",[34,77,80],{"href":78,"rel":79},"https:\u002F\u002Fgithub.com\u002Forgs\u002Fsupabase\u002Fdiscussions\u002F29260",[38],"За словами самого\nSupabase",", відновлені\nпроєкти з паузи ризикують зламатися, бо в них не буде застарілих ключів. Якщо\nваш застосунок досі надсилає старий ключ ",[68,83,70],{},", довгий рядок, що починається з\n",[68,86,87],{},"eyJ",", будьте готові, що його запити відхилятимуть, щойно проєкт повернеться.\nРозв’язок у тому, щоб прописати публічний ключ проєкту, той, що починається з\n",[68,90,91],{},"sb_publishable_",", у налаштуваннях середовища вашого білдера. ",[34,94,96],{"href":95},"\u002Fblog\u002Fsupabase-new-api-keys","Два формати\nключів"," порівняно поруч.",[10,99,100],{},"Зробіть одну річ, перш ніж закрити вкладку: зніміть копію даних, поки база\nпрацює. Проєкт на паузі є єдиним станом, у якому ви не можете експортувати\nнічого, а причина зробити це сьогодні, а не наступного тижня, стоїть у\nгодиннику з наступного розділу.",[10,102,103,104,108],{},"Поки ваш застосунок знову працює, варто також знати, що він показує сторонньому.\nНаше безкоштовне сканування читає ваш сайт ззовні і каже, що знаходить. Воно\nтриває близько 20 секунд і не потребує акаунта:\n",[34,105,107],{"href":106},"\u002Fsecurity-scanner","просканувати застосунок",".",[20,110,112],{"id":111},"скільки-часу-я-маю-на-відновлення","Скільки часу я маю на відновлення?",[10,114,115],{},"Рік від дня паузи. Supabase формулює це так: після того, як проєкт поставлено на\nпаузу, є річне вікно, щоб відновити його на платформі із Supabase Studio.",[10,117,118,119,124],{},"Перевірте це число, а не довіряйте йому, бо воно вже одного разу змінювалось.\nКоли ліміт\n",[34,120,123],{"href":121,"rel":122},"https:\u002F\u002Fsupabase.com\u002Fchangelog\u002F27497-paused-free-plan-projects-are-restorable-for-90-days",[38],"запровадили у червні 2024 року",",\nвін становив 90 днів, і все, що написали про проєкти на паузі до того, як\nSupabase розширив вікно, досі каже 90. Їхня власна довідкова стаття є\nнайяскравішим свідченням: сторінка каже рік, а URL, за якою вона живе, досі каже\n90 днів.",[126,127],"diagram",{"alt":128,"caption":129,"src":130},"Часова шкала. Вона починається зі знака паузи, проходить крізь довгу підсвічену смугу з ключем усередині й продовжується за кінець смуги до збереженого файлу та відра. Ще далі перекреслений порожній контур.","Усередині смуги одна кнопка повертає вам проєкт. За нею ви ще можете забрати дані, а ще далі забирати вже нічого.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fthe-restore-window-1600x520.png",[10,132,133],{},"Порахуйте дату і запишіть її в календар, поки думаєте про це. Це рік від дня,\nколи проєкт став на паузу, а це майже ніколи не рік від дня, коли ви помітили.",[20,135,137],{"id":136},"кнопки-restore-немає-що-відбувається-тепер","Кнопки Restore немає. Що відбувається тепер?",[10,139,140],{},"Ви отримуєте завантаження замість відновлення, і ця різниця більша, ніж звучить.",[10,142,143],{},"Щойно вікно закрилося, Supabase замінює опцію відновлення на дві речі, які ви\nможете забрати: остання логічна резервна копія, знята безпосередньо перед\nпаузою, і всі ваші об'єкти Storage. Обидві забираються зі сторінки огляду\nпроєкту. Ваші дані у тих файлах. Вашого проєкту там немає, і він не\nповернеться.",[10,145,146,147,152],{},"Supabase документує\n",[34,148,151],{"href":149,"rel":150},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Frestore-project-after-90-days-pause",[38],"міграцію, яка йде далі",".\nЦе п'ять кроків, і разом вони хочуть клієнт Postgres, CLI Supabase і токен\nдоступу до Management API.",[154,155,156,169],"table",{},[157,158,159],"thead",{},[160,161,162,166],"tr",{},[163,164,165],"th",{},"Що ви повертаєте",[163,167,168],{},"Як воно туди потрапляє",[170,171,172,188,196,204,212],"tbody",{},[160,173,174,178],{},[175,176,177],"td",{},"Таблиці, рядки, типи стовпців, індекси і правила Row Level Security",[175,179,180,181,184,185],{},"Усередині файлу ",[68,182,183],{},".backup",", відтвореного у свіжому проєкті через ",[68,186,187],{},"psql",[160,189,190,193],{},[175,191,192],{},"Файли, які завантажили ваші користувачі",[175,194,195],{},"Завантажуються окремо зі сторінки огляду, а потім копіюються в нові бакети через CLI Supabase",[160,197,198,201],{},[175,199,200],{},"Налаштування Auth, Realtime, Storage і API",[175,202,203],{},"Supabase публікує скрипт, який переносить їх через свій Management API",[160,205,206,209],{},[175,207,208],{},"Розширення, вебхуки бази даних і публікації Realtime",[175,210,211],{},"Їх ви вмикаєте назад вручну в новому проєкті",[160,213,214,217],{},[175,215,216],{},"Вашу URL API і ваші ключі",[175,218,219],{},"Їх ви не повертаєте. Новий проєкт має новий ідентифікатор, тож URL і кожен ключ змінюються з ним, і все, що тримає старі, доводиться оновлювати",[10,221,222],{},"Саме останній рядок люди дізнаються надто пізно. Адреса, якою користувався ваш\nзастосунок, належить проєкту, який ви щойно втратили, тож перебудова є не лише\nроботою з даними. Змінні середовища у вашому білдері, усе, що ви вставили прямо\nв код, кожен вебхук, платіжний сервіс чи інструмент аналітики, який вказує на\nстару URL: кожне з цього є місцем, де застосунок ламається вже після того, як\nдані благополучно повернулися.",[126,224],{"alt":225,"caption":226,"src":227},"Дві смуги. У верхній проєкт на паузі відкривають ключем, і він продовжується як той самий проєкт, зі збереженим зв'язком із застосунком. У нижній проєкт перетворюється на збережений файл і відро файлів, які живлять інший проєкт, а лінія від застосунку до нього пунктирна і перекреслена.","Обидві смуги завершуються вашими рядками в базі даних. Лише одна завершується тим, що застосунок досі вказує в правильне місце.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Frestore-or-rebuild-1600x600.png",[10,229,230],{},"Після цього є ще один рядок, і до нього не додається жодного порятунку. Нотатка\nSupabase звучить прямо: щойно проєкт видалено, усі пов'язані дані разом із\nрезервними копіями прибираються назавжди і не можуть бути відновлені. Якщо ваша\nпанель зараз пропонує вам завантаження, заберіть їх негайно.",[20,232,234],{"id":233},"чи-зберігає-безкоштовний-тариф-копію-поки-проєкт-на-паузі","Чи зберігає безкоштовний тариф копію, поки проєкт на паузі?",[10,236,237],{},"Вона рівно одна, і це не та страхувальна сітка, яку уявляє більшість.",[10,239,240,241,245],{},"Безкоштовний тариф не знімає жодних запланованих копій. Поки ваш проєкт працює,\nнічого нікуди не копіюється, і про це\n",[34,242,244],{"href":243},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","краще знати до того, як щось піде не так",",\nа не під час. Копія, яка з'являється у вашій панелі, коли вікно відновлення\nзакривається, є однією логічною копією, знятою в момент паузи, і доступною для\nзавантаження вона стає рівно в той момент, коли відновити вже не можна.",[10,247,248],{},"Звідси випливають дві речі. Копія має дату того дня, коли ваш проєкт зупинився,\nі це виявляється прийнятним, бо проєкт на паузі відтоді не прийняв жодного\nзапису. І вона живе в тому самому акаунті, що й проєкт, з якого вийшла, за тим\nсамим логіном, під тим самим видаленням. Вона стоїть у боксі, за тими самими\nдверима.",[10,250,251,252,256,257,261],{},"Момент зняти власну копію настає тоді, коли проєкт знову працює.\n",[34,253,255],{"href":254},"\u002Fblog\u002Fback-up-supabase-free-tier","Зробити її з панелі, не торкаючись термінала",",\nє шляхом безкоштовного тарифу, а\n",[34,258,260],{"href":259},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","три способи зробити резервну копію бази даних Supabase","\nпорівнює, скільки коштує кожен.",[20,263,265],{"id":264},"як-не-дати-цьому-статися-знову","Як не дати цьому статися знову?",[10,267,268],{},"Давайте проєкту щось, на що відповісти, кожні кілька днів, або заберіть його з\nбезкоштовного тарифу.",[10,270,271],{},"Supabase рахує активністю відкриття проєкту в панелі та запити, які надходять з\nвашого підключеного застосунку. Тож запланованого завдання, яке викликає вашу\nбазу раз на день, достатньо, щоб тримати лічильник притомним, а невеликий\ncron-сервіс або запланований робочий процес у вашому репозиторії коду є звичним\nспособом таке налаштувати.",[273,274,276],"callout",{"type":275},"warn",[10,277,278,282],{},[279,280,281],"strong",{},"Пінг тримає проєкт притомним і більше нічого."," Він не є резервною копією, він\nнічого не скаже вам про те, коли ваш застосунок ламається з будь-якої з інших\nпричин, з яких ламаються застосунки, а заплановане завдання, яке тихо перестало\nзапускатися, виглядає точнісінько як те, що досі працює. Те, що надсилає пінг,\nмає бути чимось, чию відмову ви помітите, інакше першою новиною стане той самий\nзначок Paused, на який ви дивитесь зараз.",[10,284,285,286,290],{},"Перехід на Pro знімає питання, а не керує ним. Платні проєкти не ставлять на\nпаузу через неактивність, і саме на Pro починаються щоденні резервні копії\nсамого Supabase, з вікном у сім днів. ",[34,287,289],{"href":288},"\u002Fblog\u002Fsupabase-free-plan-limits","Що ще змінює Pro, ліміт за лімітом",", описано в окремій статті.",[20,292,294],{"id":293},"що-зробити-цього-тижня","Що зробити цього тижня",[296,297,298],"key-takeaways",{},[299,300,301,308,311,314,317],"ul",{},[302,303,304,305,307],"li",{},"Натисніть Restore сьогодні, якщо кнопка на місці. Це кілька хвилин, і це єдиний шлях, який зберігає вашу URL. Якщо ваш застосунок досі використовує старий ключ ",[68,306,70],{},", дайте йому публічний ключ, щойно проєкт повернеться.",[302,309,310],{},"Якщо кнопка зникла, насамперед завантажте файл резервної копії і ваші файли зі Storage. Видалений проєкт забирає їх із собою.",[302,312,313],{},"Зніміть власну копію бази, щойно проєкт запрацює, бо безкоштовний тариф не знімає її за вас.",[302,315,316],{},"Поставте на таймер щось, що викликає ваш проєкт, і подбайте про те, щоб ви помітили, якщо цей таймер зупиниться.",[302,318,319],{},"Тримайте одну копію даних поза вашим акаунтом Supabase, там, куди не дістанеться ні пауза, ні прострочене вікно, ні видалення.",[20,321,323],{"id":322},"де-тут-місце-reeve-care","Де тут місце Reeve Care",[10,325,326],{},"Пауза є збоєм, який на збій не схожий. Ваші сторінки далі завантажуються, бо їх\nвіддає ваш білдер; зупинилося все, що стоїть за ними. У цьому й полягає значна\nчастина відповіді на питання, чому вам ніхто не сказав.",[126,328],{"alt":329,"caption":330,"src":331},"Панель Reeve Care з двома рядами. У першому пунктирний контур акаунта Supabase перекреслений, а поза ним стоять збережені файли з позначкою. У другому за сайтом спостерігають крізь лупу і піднімають сповіщення.","Копії стоять поза акаунтом, з якого вони вийшли. За застосунком теж спостерігають ззовні, і перевірка, яка перестає отримувати відповідь, щось піднімає.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcare-outside-and-watching-1600x520.png",[299,333,334,340,346,352,358],{},[302,335,336,339],{},[279,337,338],{},"Проєкт на паузі неможливо скопіювати, а копія, яка не вдалася, надсилає вам\nлист."," Care підключається до вашої бази за власним розкладом, а не чекає, поки\nпомітить ваш застосунок, тож ніч, коли база перестає відповідати, є тією ніччю,\nколи ви про це дізнаєтесь.",[302,341,342,345],{},[279,343,344],{},"Копія живе поза вашим акаунтом Supabase."," Зашифрована, на сховищі, яке\nтримаємо ми, тож проєкт, що став на паузу, прострочився або був видалений, не\nзабирає резервні копії за собою.",[302,347,348,351],{},[279,349,350],{},"Кожну копію перечитують, перш ніж вона зарахується."," Дата у вашій панелі є\nостанньою копією, яка пройшла цю перевірку, і ніколи не останньою спробою.",[302,353,354,357],{},[279,355,356],{},"Відновлення є кнопкою",", і перед стартом знімається знімок поточного стану,\nтож навіть у відновлення є власне скасування.",[302,359,360,363],{},[279,361,362],{},"Файли, які завантажили ваші користувачі, копіюються теж",", щойно ви\nпідключите свої бакети Storage. Це другий ключ, і він необов'язковий, бо ключ,\nякий Supabase видає для Storage, вміє не лише читати, а й писати, і ми радше\nпопросимо його окремо, ніж змішаємо з тим, який писати не вміє.",[10,365,366,367,370],{},"Дві межі, перш ніж ви щось вирішите. Сьогодні Care робить резервні копії\n",[279,368,369],{},"Supabase"," і більше нічого, і якщо ваші дані живуть деінде, ми скажемо це до\nоплати, а не після. І ніщо з цього не завадить проєкту стати на паузу: пауза\nвідбувається всередині Supabase, де ми є таким самим клієнтом, як і будь-хто\nінший. Змінюється те, де стоять ваші дані в день, коли це станеться.",[10,372,373,374,378,379,108],{},"Залиште резервні копії самого Supabase увімкненими теж, у той день, коли\nперейдете на платний тариф. Дві копії у двох місцях є цілою ідеєю, і дешевша з\nних уже входить у ваш рахунок. Що включає кожен тариф, написано на\n",[34,375,377],{"href":376},"\u002Fpricing","сторінці тарифів",", а копіювання, перевірка і відновлення розкладені\nпокроково на ",[34,380,382],{"href":381},"\u002Fsupabase-backups","сторінці резервних копій Supabase",[10,384,385,386,390],{},"Перш ніж закрити цю вкладку, відкрийте панель і подивіться, яку з двох кнопок\nпропонує вам проєкт. Цей один факт вирішує, чи сьогодні буде п'ять хвилин\nочікування, чи перебудова, а\n",[34,387,389],{"href":388},"\u002Fchecklist","10-хвилинний чеклист безпеки"," охоплює резервні копії разом з усім\nіншим, що варто перевірити, коли ваш застосунок знову відповідає.",{"title":392,"searchDepth":393,"depth":393,"links":394},"",3,[395,397,398,399,400,401,402,403,404],{"id":22,"depth":396,"text":23},2,{"id":43,"depth":396,"text":44},{"id":56,"depth":396,"text":57},{"id":111,"depth":396,"text":112},{"id":136,"depth":396,"text":137},{"id":233,"depth":396,"text":234},{"id":264,"depth":396,"text":265},{"id":293,"depth":396,"text":294},{"id":322,"depth":396,"text":323},"Backups","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcover-1200x630.png","Знак паузи поряд із закритою коробкою проєкту, усередині якої далі стоять база даних і завантажені файли.","Supabase поставив ваш проєкт на паузу після тижня без активності. Нічого не видалено, кнопка Restore стоїть поруч із назвою, і у вас є рік, щоб натиснути.",false,"md",[412,414,417,420,423,426],{"q":23,"a":413},"Ні. Пауза зупиняє базу даних, вона нічого не прибирає. Ваші таблиці, рядки, правила Row Level Security і завантажені файли далі лежать на диску, і саме тому панель пропонує вам кнопку Restore, а не вибачення. Пауза ламає саме ваш застосунок, бо кожен його запит тепер повертається помилкою.",{"q":415,"a":416},"Скільки часу я маю, щоб відновити проєкт Supabase з паузи?","Рік від дня паузи. Supabase описує це як річне вікно, протягом якого проєкт можна відновити із Supabase Studio. Це число вже змінювалося: коли ліміт запровадили у червні 2024 року, він становив 90 днів, і довідкова стаття, яку Supabase публікує на цю тему, досі містить 90 днів у своїй URL. Читайте чинне значення на їхній сторінці про паузу, а не в когось іншого.",{"q":418,"a":419},"У мого проєкту немає кнопки Restore. Що тепер?","Вікно закрилося, і Supabase замінив цю кнопку на два завантаження: остання логічна резервна копія, знята безпосередньо перед паузою, і всі ваші файли зі Storage. Обидва лежать на сторінці огляду проєкту. Ваші дані там, а повернення до робочого застосунку проходить через створення нового проєкту і завантаження цих файлів у нього. Заберіть обидва сьогодні, бо видалений проєкт назавжди забирає свої копії з собою.",{"q":421,"a":422},"Чи залишаться ті самі URL проєкту і ключі API?","Якщо ви натиснете Restore усередині вікна, URL залишиться: проєкт повертається з тим самим ідентифікатором, з якого побудована ваша URL. А от ключі можуть і не залишитися. Supabase попереджав, що проєкти, відновлені після 1 листопада 2025 року, повертаються без застарілих ключів anon і service_role, тож застосунку, який досі використовує ключ anon, натомість потрібен публічний ключ проєкту. Якщо ж доводиться перебудовуватись у новий проєкт, змінюється і те, й інше: новий проєкт має новий ідентифікатор, тож URL API і кожен ключ змінюються разом з ним. Це означає оновити змінні середовища у вашому білдері та все інше, де записана стара адреса, включно з вебхуками і сторонніми сервісами.",{"q":424,"a":425},"Як не дати Supabase знову поставити проєкт на паузу?","Давайте йому щось, на що відповісти, хоча б раз на тиждень, або заберіть його з безкоштовного тарифу. Supabase рахує активністю відкриття панелі та запити з вашого підключеного застосунку, тож заплановане завдання, яке викликає проєкт раз на день, тримає лічильник притомним. Перехід на Pro знімає питання повністю, бо платні проєкти не ставлять на паузу через неактивність, і саме там починаються щоденні резервні копії.",{"q":427,"a":428},"Мій проєкт зник із панелі, він не на паузі. Чи можна його повернути?","Спершу з'ясуйте, який саме випадок у вас, бо це різні ситуації. Проєкт на паузі досі є у списку, з кнопкою Restore біля назви, а дані заморожені на диску. Якщо його немає зовсім, панель не дає жодного способу скасувати видалення: лишаються звернення до підтримки Supabase і копія, яку ви зробили самі. Друге і є повним аргументом на користь того, щоб мати резервну копію до того дня, коли вона знадобиться.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",[431,432,433,434,435,436,437],"проєкт supabase на паузі","supabase безкоштовний тариф пауза","відновити проєкт supabase з паузи","відновити видалений проєкт supabase","запустити проєкт supabase знову","supabase неактивний 7 днів","тримати проєкт supabase активним",{},true,"Проєкт Supabase на паузі? Що робити далі","\u002Fblog\u002Fsupabase-project-paused-recover","2026-09-12",{"title":5,"description":408},"blog\u002Fsupabase-project-paused-recover",[446,447,448,449],"Проєкт Supabase на паузі через неактивність не є видаленим проєктом. Дані заморожені на диску, а в панелі поряд з назвою стоїть кнопка Restore.","У вас є рік від дня паузи, щоб відновити його з панелі Supabase. Безкоштовні проєкти стають на паузу приблизно після тижня низької активності.","Після того року кнопку Restore замінює завантаження, і єдиний шлях назад веде через новий проєкт з новою URL і новими ключами.","Безкоштовний тариф нічого не копіює, поки проєкт працює, тому єдина резервна копія, яка існує, знята в момент паузи.","2026-09-30","LBVd0NJY-XIeH0qplJ2Tdi9MAHYFrXh8xkOhy1Qz6n4",[453,460,466,472,478,484,490,496,502,508,514,519,524,530,536,542,547,553,559,565,571,577,583,589,595,601,607,613,619,625,626,632,638,644,650,656,662,668,674,680,686,692,698,703,709,715,721,727,733,739,745,751,757,763,768,773,778,784,789,794],{"path":454,"title":455,"description":456,"published":457,"category":458,"image":459,"draft":409},"\u002Fblog\u002Fbase44-security-scan","Сканування безпеки Base44: те, що бачить лише воно","Сканування безпеки Base44 перевіряє сім видів проблем зсередини. Ось половина, яку читає тільки воно, і половина, на яку воно ніколи не дивиться.","2026-10-10","Основи безпеки","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":461,"title":462,"description":463,"published":464,"category":458,"image":465,"draft":409},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Ваш API-ключ витік. Порядок дій","API-ключ витік, і ви не знаєте, що робити першим. Не кожен ключ у вашому фронтенді є витоком, а порядок важить більше за швидкість.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":467,"title":468,"description":469,"published":470,"category":458,"image":471,"draft":409},"\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":473,"title":474,"description":475,"published":476,"category":458,"image":477,"draft":409},"\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":479,"title":480,"description":481,"published":482,"category":458,"image":483,"draft":409},"\u002Fblog\u002Fis-base44-safe","Чи безпечний Base44? Дані 5 442 застосунків","Чи безпечний Base44? Ми прогнали дев’ять перевірок на 5 442 робочих застосунках Base44. Майже всі отримали B з причин, яких власник ніколи не обирав.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":485,"title":486,"description":487,"published":488,"category":458,"image":489,"draft":409},"\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":491,"title":492,"description":493,"published":494,"category":458,"image":495,"draft":409},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Чи відкритий ваш файл .env? Дванадцять шляхів для перевірки","Чи відкритий ваш файл .env на вашому власному вебсервері? Дванадцять адрес скажуть це за хвилину, а влучання означає, що все в ньому вже публічне.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":497,"title":498,"description":499,"published":500,"category":458,"image":501,"draft":409},"\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":503,"title":504,"description":505,"published":506,"category":458,"image":507,"draft":409},"\u002Fblog\u002Fis-bolt-safe","Чи безпечний Bolt? Що показали 1 123 застосунки Bolt","Чи безпечний Bolt? Ми прогнали 1 123 живі застосунки Bolt через дев’ять перевірок. Хостинг був чистим. Знахідки: ключі й відкриті таблиці в самих застосунках.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":509,"title":510,"description":511,"published":512,"category":458,"image":513,"draft":409},"\u002Fblog\u002Fis-supabase-down-or-your-app","Supabase не працює чи проблема у вашому застосунку? Як розрізнити","Supabase не працює чи зламався ваш застосунок? Пауза, повна база й ваша власна помилка виглядають однаково. Чотири перевірки їх розрізняють.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":515,"title":516,"description":517,"published":450,"category":458,"image":518,"draft":409},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","Чи шифрує Supabase мої дані? Так. Ось від чого це захищає","Чи шифрує Supabase дані? Так: AES-256 у стані спокою, TLS під час передавання, SOC 2 та ISO 27001. Що покриває кожне і який витік не зупиняє жодне.","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":288,"title":520,"description":521,"published":522,"category":458,"image":523,"draft":409},"Ліміти безкоштовного тарифу Supabase і що стається на кожному","Ліміти безкоштовного тарифу Supabase: 500 МБ бази, 5 ГБ egress і жодних резервних копій. Що стається на кожній межі і що змінює Pro за $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":525,"title":526,"description":527,"published":528,"category":405,"image":529,"draft":409},"\u002Fblog\u002Ftest-your-supabase-backup","Перевірте резервну копію Supabase до того, як вона знадобиться","Як перевірити резервну копію Supabase: відновити в тестовий проєкт, порахувати рядки, увійти й знайти рядок, якого бракує обрізаному файлу.","2026-09-28","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":531,"title":532,"description":533,"published":534,"category":405,"image":535,"draft":409},"\u002Fblog\u002Fsupabase-backup-github-action","Безкоштовна резервна копія Supabase через GitHub Action і підступ","Резервна копія Supabase через GitHub Action безкоштовна й годиться багатьом застосункам. Робочий процес, потрібний рядок підключення та egress.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":537,"title":538,"description":539,"published":540,"category":405,"image":541,"draft":409},"\u002Fblog\u002Fdownload-your-supabase-backup","Чому ви не можете завантажити резервну копію Supabase","Завантажити резервну копію Supabase на сучасному проєкті не вийде: щоденна копія там фізична. Як це перевірити і як тримати власну копію.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":543,"title":544,"description":545,"published":540,"category":458,"image":546,"draft":409},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": бракує GRANT","З 30 жовтня нова таблиця в Supabase відповідає \"permission denied for table\", доки ви не дасте доступ. Лист показує лише половину виправлення.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":548,"title":549,"description":550,"published":551,"category":458,"image":552,"draft":409},"\u002Fblog\u002Fopen-api-endpoint-exposed","Чи є відкритий API-ендпоінт проблемою безпеки? Читайте JSON","Ваше сканування позначило відкритий API-ендпоінт. Чи це важливо, залежить від того, що повернулося, і більшість знайдених належали платформі.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":554,"title":555,"description":556,"published":557,"category":458,"image":558,"draft":409},"\u002Fblog\u002Flovable-security-scan","Сканування безпеки Lovable: чого воно не доведе","Сканування безпеки Lovable: що перевіряють Quick scan і Deep scan, коли запускається кожне, і єдине, чого не доведе жодне сканування зсередини.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":560,"title":561,"description":562,"published":563,"category":405,"image":564,"draft":409},"\u002Fblog\u002Fsupabase-backup-auth-users","Чому у вашому дампі Supabase немає користувачів","Запустіть supabase db dump окремо і отримаєте форму вашої бази та жодного її рядка, без схеми auth, у якій живуть ваші користувачі.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":566,"title":567,"description":568,"published":569,"category":458,"image":570,"draft":409},"\u002Fblog\u002Fdomain-and-certificate-expiry","Домен закінчився, сайт лежить: що буде далі","Ваш домен закінчився і сайт лежить. Ось який годинник уже пішов, чому прострочений сертифікат це менша з двох бід, і як перевірити обидва.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":572,"title":573,"description":574,"published":575,"category":458,"image":576,"draft":409},"\u002Fblog\u002Fis-lovable-safe","Чи безпечний Lovable? Що показали 18 554 застосунки Lovable","Чи безпечний Lovable? Ми прогнали 18 554 живі застосунки Lovable через дев’ять перевірок. Платформа виявилася найчистішою з п’яти. Знахідки були в застосунках.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":578,"title":579,"description":580,"published":581,"category":458,"image":582,"draft":409},"\u002Fblog\u002Fvibe-coded-app-security-checklist","Чек-лист безпеки для vibe coding, у девʼяти перевірках","Чек-лист безпеки для vibe coding із девʼяти пунктів, кожен з яких будь-хто може перевірити у вашому живому застосунку ззовні, і кожен має тест на один рядок.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":584,"title":585,"description":586,"published":587,"category":458,"image":588,"draft":409},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Секретний ключ Stripe у фронтенді може рухати гроші","Секретний ключ Stripe, відкритий у вашому фронтенді, може повертати кошти, списувати й читати кожну картку клієнта. А ключ pk_live_ там і має бути.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":590,"title":591,"description":592,"published":593,"category":458,"image":594,"draft":409},"\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":596,"title":597,"description":598,"published":599,"category":458,"image":600,"draft":409},"\u002Fblog\u002Fbase44-source-maps","Безпека Base44: що позначає скан і що з цього виправляти вам","Безпека Base44 на 5 438 просканованих застосунках: три знахідки майже на кожному належать платформі, source map є бейджем Base44, а ваша частина коротка.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":602,"title":603,"description":604,"published":605,"category":458,"image":606,"draft":409},"\u002Fblog\u002Fis-cursor-ai-safe","Чи безпечний Cursor AI? Редактор, код і опублікований застосунок","Чи безпечний Cursor AI? Три запитання в одному пошуку: що Cursor зберігає, у чому помиляється його код і чи відкритий застосунок, який ви опублікували.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":608,"title":609,"description":610,"published":611,"category":458,"image":612,"draft":409},"\u002Fblog\u002Fis-replit-safe","Чи безпечний Replit? Що ми знайшли в 3 042 живих застосунках Replit","Чи безпечний Replit? Ми прогнали 3 042 живі застосунки Replit через дев’ять зовнішніх перевірок. Знахідки були в опублікованому застосунку, а не в хостингу.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":614,"title":615,"description":616,"published":617,"category":405,"image":618,"draft":409},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: у копії бази даних немає жодного файлу","Supabase storage backup це окрема робота. Копії бази даних зберігають список ваших файлів і жодного з них, тож після відновлення кожне завантаження зламане.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":620,"title":621,"description":622,"published":623,"category":405,"image":624,"draft":409},"\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":441,"title":5,"description":408,"published":442,"category":405,"image":429,"draft":409},{"path":627,"title":628,"description":629,"published":630,"category":458,"image":631,"draft":409},"\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":633,"title":634,"description":635,"published":636,"category":458,"image":637,"draft":409},"\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":639,"title":640,"description":641,"published":642,"category":458,"image":643,"draft":409},"\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":645,"title":646,"description":647,"published":648,"category":458,"image":649,"draft":409},"\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":651,"title":652,"description":653,"published":654,"category":458,"image":655,"draft":409},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Сканери безпеки для vibe coding у порівнянні, наш теж","Найкращий сканер безпеки для vibe coding залежить від трьох питань, на які не відповідає жоден перелік функцій. Десять інструментів і ціни.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":657,"title":658,"description":659,"published":660,"category":458,"image":661,"draft":409},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: п’ять перевірок, які зробите самі","Supabase security checker читає ваш опублікований застосунок, а не налаштування проєкту. Ось п’ять перевірок і як виконати кожну самостійно.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":663,"title":664,"description":665,"published":666,"category":458,"image":667,"draft":409},"\u002Fblog\u002Fvibe-coding-security-scanner","Сканер безпеки для vibe coding: чого не бачить скан URL","Сканер безпеки для vibe coding читає ваш робочий застосунок ззовні. Що це охоплює, чотири речі, яких він не бачить, і як читати результат.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":669,"title":670,"description":671,"published":672,"category":458,"image":673,"draft":409},"\u002Fblog\u002Fmissing-security-headers","Відсутні заголовки безпеки: коли це справді важливо","Відсутні заголовки безпеки трапляються в наших звітах найчастіше. Від чого вони захищають і коли це найменш терміновий рядок вашого звіту.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":675,"title":676,"description":677,"published":678,"category":458,"image":679,"draft":409},"\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":681,"title":682,"description":683,"published":684,"category":458,"image":685,"draft":409},"\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":687,"title":688,"description":689,"published":690,"category":405,"image":691,"draft":409},"\u002Fblog\u002Fsupabase-backup-tools-compared","Інструменти резервного копіювання Supabase, і наш серед них","Чотири види інструментів резервного копіювання Supabase, що копіює кожен і коли безкоштовна GitHub Action виграє в будь-якої оплати, нашої теж.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":693,"title":694,"description":695,"published":696,"category":458,"image":697,"draft":409},"\u002Fblog\u002Freplit-secrets-explained","Як користуватися секретами в Replit і що все одно публікується","Як користуватися секретами в Replit: додати, прочитати і усунути дві причини undefined. А ще ключі, які цей інструмент не здатен зберегти в таємниці.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":254,"title":699,"description":700,"published":701,"category":405,"image":702,"draft":409},"Резервні копії на безкоштовному тарифі Supabase без терміналу","На безкоштовному тарифі Supabase резервних копій немає: копію робите ви. Як зробити її з панелі та що втрачає шлях через CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":704,"title":705,"description":706,"published":707,"category":458,"image":708,"draft":409},"\u002Fblog\u002Fis-supabase-secure","Чи безпечний Supabase? Так. Ваш проєкт це інше питання","Чи безпечний Supabase? Платформа проходить аудити, шифрує дані й тримає пентести. Їхня документація каже, де це закінчується і починаються ваші налаштування.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":710,"title":711,"description":712,"published":713,"category":458,"image":714,"draft":409},"\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":716,"title":717,"description":718,"published":719,"category":458,"image":720,"draft":409},"\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":722,"title":723,"description":724,"published":725,"category":458,"image":726,"draft":409},"\u002Fblog\u002Fcors-wildcard-security-risk","Чи є вайлдкард CORS ризиком для безпеки? Майже ніколи.","Чи є вайлдкард CORS ризиком для безпеки? Зазвичай це типове налаштування вашого білдера, і воно не видає нічого, що ваш сервер і так віддавав кожному.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":728,"title":729,"description":730,"published":731,"category":405,"image":732,"draft":409},"\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":734,"title":735,"description":736,"published":737,"category":405,"image":738,"draft":409},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Як відновити резервну копію Supabase, і що ламається потім","Як відновити резервну копію Supabase з панелі або з файлу дампа, що саме замінює відновлення і чому ваш застосунок може лишитися зламаним після нього.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":740,"title":741,"description":742,"published":743,"category":458,"image":744,"draft":409},"\u002Fblog\u002Fsupabase-storage-bucket-public","Ваш бакет Supabase Storage публічний. Чи це проблема?","Публічний бакет Supabase Storage означає, що той, хто має URL файлу, може його відкрити. Він не означає, що хтось може переглянути список вмісту.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":746,"title":747,"description":748,"published":749,"category":458,"image":750,"draft":409},"\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":752,"title":753,"description":754,"published":755,"category":405,"image":756,"draft":409},"\u002Fblog\u002Fai-agent-deleted-my-database","ШІ-агент видалив мої дані в Supabase. Що можна відновити?","ШІ-агент видалив дані з вашої бази. Те, що ви зможете відновити, вирішилося раніше, а наступні хвилини вирішують, скільки з цього вціліє.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":758,"title":759,"description":760,"published":761,"category":458,"image":762,"draft":409},"\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":764,"title":765,"description":766,"published":761,"category":458,"image":767,"draft":409},"\u002Fblog\u002Fsource-maps-exposed-in-production","Відкриті source maps: ваш застосунок публікує свій вихідний код","Відкрита source map дає будь-кому прочитати оригінальний код вашого застосунку, разом із коментарями. Перевірка за 30 секунд, і що важить насправді.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":95,"title":769,"description":770,"published":771,"category":458,"image":772,"draft":409},"Нові API-ключі Supabase: який із них безпечний у застосунку?","Supabase замінив anon і service_role публічними та секретними ключами. Який із них має бути у вашому застосунку, а який не має бути ніколи?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":243,"title":774,"description":775,"published":776,"category":405,"image":777,"draft":409},"Чи робить Supabase резервні копії моєї бази? Залежить від тарифу.","Чи робить Supabase резервні копії вашої бази даних? На платних тарифах щодня, на безкоштовному жодної. Як дізнатися, що у вас насправді є.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":779,"title":780,"description":781,"published":782,"category":458,"image":783,"draft":409},"\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":785,"title":786,"description":787,"published":782,"category":405,"image":788,"draft":409},"\u002Fblog\u002Fversion-history-is-not-a-backup","Історія версій не є резервною копією. Вона не поверне таблицю.","Lovable і Bolt ведуть історію версій вашого коду. Ваша база даних працює як окремий сервіс, тож відкат назад не поверне ваші дані.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":259,"title":790,"description":791,"published":792,"category":405,"image":793,"draft":409},"Три способи зробити резервну копію бази Supabase, і чого бракує","Панель, pg_dump і керований сервіс. Що насправді зберігає кожен спосіб, що тихо лишає осторонь і який із них переживе втрату акаунта.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":795,"title":796,"description":797,"published":792,"category":458,"image":798,"draft":409},"\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",1791618975605]