[{"data":1,"prerenderedAt":2432},["ShallowReactive",2],{"\u002Fblog\u002Fjcenter-bintray-shut-down-fix-android-flutter-builds-2026\u002F":3,"\u002Fblog\u002Fjcenter-bintray-shut-down-fix-android-flutter-builds-2026\u002F-related":594,"\u002Fblog\u002Fjcenter-bintray-shut-down-fix-android-flutter-builds-2026\u002F-resources":2413},{"id":4,"title":5,"author":6,"body":10,"category":529,"createdAt":530,"description":531,"disclosure":532,"extension":533,"faq":534,"howTo":532,"location":553,"meta":554,"navigation":560,"ogImage":532,"path":561,"primaryKeyword":562,"readingTime":563,"related":564,"seo":568,"sources":569,"stem":584,"tags":585,"takeaways":586,"updatedAt":530,"url":592,"__hash__":593},"blog\u002Fblog\u002Fjcenter-bintray-shut-down-fix-android-flutter-builds-2026.md","JCenter Shutdown: Fixing Old Android and Flutter Builds",{"name":7,"social":8},"Simon Dziak",{"twitter":9},"@SzymonDziak",{"type":11,"value":12,"toc":521},"minimark",[13,34,37,43,48,184,187,192,195,234,237,241,244,422,426,490,493,500,504,517],[14,15,16,20,21,25,26,29,30,33],"p",{},[17,18,19],"strong",{},"Bintray is gone and JCenter is now only a redirect to Maven Central, so an Android or Flutter project that still points at them can fail to build or fail to find some of its libraries."," Often the fix is short: replace ",[22,23,24],"code",{},"jcenter()"," with ",[22,27,28],{},"mavenCentral()"," and ",[22,31,32],{},"google()",". The harder cases are old plugins that still declare JCenter and libraries that were never published anywhere else. Both are covered below.",[14,35,36],{},"If you landed here from an old Bintray link or a README that says to add JCenter, this is what changed and how to fix the build. The dates come from JFrog, Gradle and Android Developers, as listed in the sources. I tested the Bintray and JCenter addresses below myself on October 18, 2026.",[14,38,39,42],{},[17,40,41],{},"Disclosure:"," App369 is my studio. I fix and maintain Flutter and Android apps for a living, and the last section mentions what I sell. No company named here paid for a mention.",[44,45,47],"h2",{"id":46},"what-happened-to-bintray-and-jcenter-and-when","What happened to Bintray and JCenter, and when",[49,50,51,67],"table",{},[52,53,54],"thead",{},[55,56,57,61,64],"tr",{},[58,59,60],"th",{},"Date",[58,62,63],{},"What happened",[58,65,66],{},"Source",[68,69,70,88,105,118,135,148,166],"tbody",{},[55,71,72,76,79],{},[73,74,75],"td",{},"February 3, 2021",[73,77,78],{},"JFrog announces the end of Bintray, JCenter, GoCenter and ChartCenter",[73,80,81],{},[82,83,87],"a",{"href":84,"rel":85},"https:\u002F\u002Fjfrog.com\u002Fblog\u002Finto-the-sunset-bintray-jcenter-gocenter-and-chartcenter\u002F",[86],"nofollow","JFrog",[55,89,90,93,98],{},[73,91,92],{},"February 22, 2021",[73,94,95,96],{},"Gradle tells users to replace JCenter with Maven Central and says Gradle 7.0 will deprecate ",[22,97,24],{},[73,99,100],{},[82,101,104],{"href":102,"rel":103},"https:\u002F\u002Fblog.gradle.org\u002Fjcenter-shutdown",[86],"Gradle blog",[55,106,107,110,113],{},[73,108,109],{},"March 31, 2021",[73,111,112],{},"JCenter stops accepting new submissions",[73,114,115],{},[82,116,87],{"href":84,"rel":117},[86],[55,119,120,125,130],{},[73,121,122],{},[17,123,124],{},"May 1, 2021",[73,126,127],{},[17,128,129],{},"Bintray shuts down",[73,131,132],{},[82,133,87],{"href":84,"rel":134},[86],[55,136,137,140,143],{},[73,138,139],{},"2021 to 2024",[73,141,142],{},"JCenter stays up as a read-only repository",[73,144,145],{},[82,146,104],{"href":102,"rel":147},[86],[55,149,150,155,160],{},[73,151,152],{},[17,153,154],{},"August 15, 2024",[73,156,157],{},[17,158,159],{},"JCenter starts redirecting every request to Maven Central",[73,161,162],{},[82,163,87],{"href":164,"rel":165},"https:\u002F\u002Fjfrog.com\u002Fblog\u002Fjcenter-sunset\u002F",[86],[55,167,168,171,177],{},[73,169,170],{},"Gradle 9.0",[73,172,173,174,176],{},"Gradle removes the ",[22,175,24],{}," method",[73,178,179],{},[82,180,183],{"href":181,"rel":182},"https:\u002F\u002Fdocs.gradle.org\u002Fcurrent\u002Fuserguide\u002Fupgrading_major_version_9.html",[86],"Gradle docs",[14,185,186],{},"Android's JCenter migration page still says JCenter allows downloads of existing artifacts indefinitely. JFrog's 2024 post and Gradle's 9.0 upgrade guide both describe the redirect to Maven Central, and that redirect is what I saw when I tested it.",[188,189,191],"h3",{"id":190},"what-the-old-addresses-do-today","What the old addresses do today",[14,193,194],{},"Checked on October 18, 2026:",[196,197,198,205,215,225],"ul",{},[199,200,201,204],"li",{},[17,202,203],{},"bintray.com"," did not load: the connection timed out.",[199,206,207,210,211,214],{},[17,208,209],{},"dl.bintray.com",", where many READMEs linked downloads and custom repositories, returned ",[17,212,213],{},"404",".",[199,216,217,220,221,224],{},[17,218,219],{},"jcenter.bintray.com"," returned a ",[17,222,223],{},"301 redirect to repo1.maven.org",", Maven Central.",[199,226,227,228,231,232,214],{},"A library that was only ever published on JCenter, ",[22,229,230],{},"org.jetbrains.kotlinx:kotlinx-html-jvm:0.6.12",", followed the redirect to Maven Central and returned ",[17,233,213],{},[14,235,236],{},"So JCenter now works only for files that also exist on Maven Central. Anything else fails, sometimes with a confusing \"could not find\" error for a version you know used to exist.",[44,238,240],{"id":239},"how-to-fix-the-build","How to fix the build",[14,242,243],{},"Work through these in order. In my experience, the first two fix many projects.",[245,246,247,336,345,368,398,408],"ol",{},[199,248,249,255,256,259,260,263,264,29,267,270,271,274,275,29,278,281,282,285,286,25,288,290,291,293,294,297,298,300,301],{},[17,250,251,252,254],{},"Replace ",[22,253,24],{}," in your own build files."," In an Android project, look in ",[22,257,258],{},"settings.gradle"," (or ",[22,261,262],{},"settings.gradle.kts",") under ",[22,265,266],{},"pluginManagement",[22,268,269],{},"dependencyResolutionManagement",", and in the top-level ",[22,272,273],{},"build.gradle"," under ",[22,276,277],{},"buildscript",[22,279,280],{},"allprojects",". In a Flutter app the same files are under ",[22,283,284],{},"android\u002F",". Replace ",[22,287,24],{},[22,289,28],{},", and make sure ",[22,292,32],{}," is there too. Keep ",[22,295,296],{},"gradlePluginPortal()"," in ",[22,299,266],{}," if it is already there.",[302,303,308],"pre",{"className":304,"code":305,"language":306,"meta":307,"style":307},"language-groovy shiki shiki-themes github-light github-dark","repositories {\n    google()\n    mavenCentral()\n}\n","groovy","",[22,309,310,318,324,330],{"__ignoreMap":307},[311,312,315],"span",{"class":313,"line":314},"line",1,[311,316,317],{},"repositories {\n",[311,319,321],{"class":313,"line":320},2,[311,322,323],{},"    google()\n",[311,325,327],{"class":313,"line":326},3,[311,328,329],{},"    mavenCentral()\n",[311,331,333],{"class":313,"line":332},4,[311,334,335],{},"}\n",[199,337,338,341,342,344],{},[17,339,340],{},"Sync, then read the first error."," If it names a library that can't be found, go to step 4. If it mentions ",[22,343,24],{}," and points at a file you don't own, go to step 3.",[199,346,347,350,351,353,354,357,358,361,362,297,365,367],{},[17,348,349],{},"Fix plugins and libraries that still declare JCenter."," On Gradle 9 the build stops at any ",[22,352,24],{}," call in a build file Gradle runs, and that includes Flutter plugins, which are built as part of your app. So in a Flutter app the culprit is usually an old plugin: check the plugin's changelog, then raise its version in ",[22,355,356],{},"pubspec.yaml"," and run ",[22,359,360],{},"flutter pub upgrade",". If the plugin is unmaintained, look for a maintained fork or a replacement plugin. Editing files in the pub cache is fragile: the change doesn't reach CI or other machines, and it is lost when the cache is cleared or repaired. A fork referenced from ",[22,363,364],{},"dependency_overrides",[22,366,356],{}," is the safer way to patch a plugin. If you can't upgrade the plugin yet, staying on Gradle 8 buys time, but it doesn't fix the underlying problem.",[199,369,370,373,374,379,380,385,386,389,390,393,394,397],{},[17,371,372],{},"Find a new home for JCenter-only libraries."," Search ",[82,375,378],{"href":376,"rel":377},"https:\u002F\u002Fcentral.sonatype.com\u002F",[86],"Maven Central"," for the library. Many moved there under the same group ID, sometimes with a newer version only. If the source is on GitHub, ",[82,381,384],{"href":382,"rel":383},"https:\u002F\u002Fjitpack.io\u002F",[86],"JitPack"," can build it from a release tag: add ",[22,387,388],{},"maven { url 'https:\u002F\u002Fjitpack.io' }"," and use ",[22,391,392],{},"com.github.\u003Cuser>:\u003Crepo>:\u003Ctag>"," coordinates. JitPack builds the code itself, so check that the tag is the version you expect. As a last resort, put the JAR or AAR in a ",[22,395,396],{},"libs\u002F"," folder and depend on it as a local file. That works in the app module; in a plugin or library module, use a file-based Maven repository instead. A local file also drops the library's own dependencies, so add those yourself, and note the library as something to replace.",[199,399,400,403,404,407],{},[17,401,402],{},"Check for other dead repositories."," Remove any ",[22,405,406],{},"maven { url \"https:\u002F\u002Fdl.bintray.com\u002F...\" }"," lines. Each one is a dead address that slows down or breaks resolution.",[199,409,410,413,414,417,418,421],{},[17,411,412],{},"Build from a clean state."," Run the build with an empty Gradle cache (a fresh ",[22,415,416],{},"GRADLE_USER_HOME"," or a clean CI runner, plus ",[22,419,420],{},"flutter clean"," in a Flutter app) before you call it fixed. A cache on your own machine can hide a library that no longer downloads anywhere.",[44,423,425],{"id":424},"when-its-more-than-a-one-line-change","When it's more than a one-line change",[49,427,428,441],{},[52,429,430],{},[55,431,432,435,438],{},[58,433,434],{},"What you see",[58,436,437],{},"What it usually means",[58,439,440],{},"Usual fix",[68,442,443,457,468,479],{},[55,444,445,451,454],{},[73,446,447,448,450],{},"The build fails on ",[22,449,24],{}," after a Gradle upgrade",[73,452,453],{},"A build file, yours or a plugin's, still calls the removed method",[73,455,456],{},"Replace it in your files, and upgrade the plugin",[55,458,459,462,465],{},[73,460,461],{},"\"Could not find\" for an old version of a library",[73,463,464],{},"That version only existed on JCenter",[73,466,467],{},"Use a version that is on Maven Central, or JitPack",[55,469,470,473,476],{},[73,471,472],{},"A README says to add a dl.bintray.com repository",[73,474,475],{},"The project published only through Bintray",[73,477,478],{},"Check Maven Central and GitHub releases for the same project",[55,480,481,484,487],{},[73,482,483],{},"The project hasn't been built in years",[73,485,486],{},"JCenter is one of several outdated pieces",[73,488,489],{},"Upgrade Gradle, Android Gradle Plugin and Kotlin step by step",[14,491,492],{},"A project that has sat untouched since 2020 or 2021 usually needs more than the repository change: newer Gradle and Android Gradle Plugin versions, a newer Kotlin, and a recent target API level, because Google Play requires updates to meet its current target API requirement (check the deadline in Play Console). Do those one at a time and build after each, so you know which change broke what.",[14,494,495,496,214],{},"For the iOS side of the same problem, see ",[82,497,499],{"href":498},"\u002Fblog\u002Fflutter-ios-build-failed-after-upgrade-2026\u002F","Flutter iOS build failed after an upgrade",[44,501,503],{"id":502},"need-a-hand","Need a hand?",[14,505,506,507,511,512,516],{},"If the build still fails after these steps, or the project is old enough that JCenter is only the first problem, the ",[82,508,510],{"href":509},"\u002Ffixed-price\u002Fflutter-firebase-bug-fix\u002F","App Fix Ticket"," is two fixed-price steps. A $450 Diagnosis gives you the root cause with evidence and a fixed repair quote within 3 business days, credited toward the fix. If you go ahead, the $1,200 Fix takes 5 business days. If you're not sure it fits, ",[82,513,515],{"href":514},"\u002Fcontact\u002F","send me a short description"," of the error and the project's age, and I'll tell you where I'd start.",[518,519,520],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":307,"searchDepth":320,"depth":320,"links":522},[523,526,527,528],{"id":46,"depth":320,"text":47,"children":524},[525],{"id":190,"depth":326,"text":191},{"id":239,"depth":320,"text":240},{"id":424,"depth":320,"text":425},{"id":502,"depth":320,"text":503},"AI & Technology","2026-10-18T18:00:00.000Z","Bintray shut down on May 1, 2021, JCenter has redirected to Maven Central since August 15, 2024, and Gradle 9 removed jcenter(). How to fix an old Android or Flutter build that still points at them, with every address checked on October 18, 2026.",null,"md",[535,538,541,544,547,550],{"question":536,"answer":537},"Is JCenter still available?","Not as its own repository. JFrog stopped new submissions on March 31, 2021, and on August 15, 2024 it started redirecting all JCenter requests to Maven Central. Anything that exists on Maven Central still downloads, and anything that only existed on JCenter now returns 404.",{"question":539,"answer":540},"What replaced JCenter?","Maven Central, through mavenCentral() in Gradle. Android Gradle Plugin and AndroidX libraries come from Google's Maven repository, through google(). Many Android and Flutter projects need nothing else.",{"question":542,"answer":543},"Why does my build fail on jcenter() after upgrading Gradle?","Gradle removed the jcenter() method in Gradle 9.0, after deprecating it in Gradle 7.0. Any build file that still calls it, including one inside an old plugin or library, stops the build. Replace it with mavenCentral(), or upgrade the plugin that declares it.",{"question":545,"answer":546},"What happened to dl.bintray.com links?","Bintray shut down on May 1, 2021. dl.bintray.com returned 404 when I tested it on October 18, 2026, and bintray.com itself did not load. If a README tells you to download a file or add a repository from Bintray, look for the same project on Maven Central or GitHub releases.",{"question":548,"answer":549},"How do I fix a Flutter Android build that still uses jcenter()?","Check android\u002Fbuild.gradle and android\u002Fsettings.gradle in your app first, and replace jcenter() with mavenCentral(). If the error points into a plugin, upgrade that plugin with flutter pub upgrade or a newer version in pubspec.yaml. Plugins that are no longer maintained may need a fork or a replacement.",{"question":551,"answer":552},"What if a library I need was only on JCenter?","Search Maven Central for a newer version under the same or a new group ID. If the source is on GitHub, JitPack can build it from a tag. As a last resort, keep the JAR or AAR file in your project and depend on it locally, and plan to replace the library.","Boynton Beach, FL",{"readingTimeStats":555},{"text":556,"minutes":557,"time":558,"words":559},"6 min read",5.165,309900,1033,true,"\u002Fblog\u002Fjcenter-bintray-shut-down-fix-android-flutter-builds-2026","jcenter shutdown","7 min",[565,566,567],"flutter-ios-build-failed-after-upgrade-2026","mobile-app-beta-testing-crash-reporting-tools-2026","parse-kinvey-backend-as-a-service-alternatives-2026",{"title":5,"description":531},[570,572,574,576,578,581,583],{"title":571,"url":84},"JFrog, \"Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter\" (February 3, 2021)",{"title":573,"url":164},"JFrog, \"JCenter Sunset on August 15th, 2024\" (July 2, 2024)",{"title":575,"url":102},"Gradle blog, \"JCenter shutdown impact on Gradle builds\" (February 22, 2021)",{"title":577,"url":181},"Gradle, upgrading to Gradle 9.0 (removal of jcenter())",{"title":579,"url":580},"Android Developers, JCenter migration","https:\u002F\u002Fdeveloper.android.com\u002Fbuild\u002Fjcenter-migration",{"title":582,"url":376},"Maven Central search",{"title":384,"url":382},"blog\u002Fjcenter-bintray-shut-down-fix-android-flutter-builds-2026","jcenter shutdown, bintray shut down, jcenter alternative, jcenter deprecated, replace jcenter with mavenCentral, could not find method jcenter, gradle 9 jcenter, dl.bintray.com 404, flutter android build failed jcenter, old android project build",[587,588,589,590,591],"JFrog announced on February 3, 2021 that it was shutting down Bintray, JCenter, GoCenter and ChartCenter. Bintray stopped on May 1, 2021, and JCenter has redirected to Maven Central since August 15, 2024.","Gradle deprecated jcenter() in Gradle 7.0 and removed it in Gradle 9.0. On Gradle 9, any build file that still calls jcenter() fails before it downloads anything.","On October 18, 2026, bintray.com did not load, dl.bintray.com returned 404, and jcenter.bintray.com redirected to repo1.maven.org. A library that was only ever published on JCenter now returns 404.","The usual fix: replace jcenter() with mavenCentral() and google(), in your own build files and in any old plugin that still declares it.","If a dependency was never moved to Maven Central, upgrade to a maintained version, build it from source through JitPack, or keep a copy of the file in your project.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fjcenter-bintray-shut-down-fix-android-flutter-builds-2026\u002F","_ux7wdGj9XlNDNd84vMGjaJ1IqNQOZEU9CUDcARstj0",[595,1120,1839],{"id":596,"title":597,"author":598,"body":600,"category":529,"createdAt":1107,"description":1108,"disclosure":532,"extension":533,"faq":532,"howTo":532,"location":553,"meta":1109,"navigation":560,"ogImage":532,"path":1114,"primaryKeyword":532,"readingTime":563,"related":532,"seo":1115,"sources":532,"stem":1116,"tags":1117,"takeaways":532,"updatedAt":1107,"url":1118,"__hash__":1119},"blog\u002Fblog\u002Fflutter-ios-build-failed-after-upgrade-2026.md","Flutter iOS Build Failed After an Upgrade? Fix CocoaPods and Xcode Errors (2026)",{"name":7,"social":599},{"twitter":9},{"type":11,"value":601,"toc":1090},[602,608,619,623,626,659,662,719,723,753,757,766,792,796,803,847,926,943,947,960,992,996,1005,1008,1012,1015,1019,1025,1029,1033,1047,1051,1063,1067,1070,1074,1080,1084,1087],[14,603,604,607],{},[17,605,606],{},"When a Flutter iOS build breaks right after an upgrade, the cause is almost always one of four things: a stale CocoaPods lock, a deployment target that is too low, FlutterFire plugins on mismatched versions, or an Xcode that no longer matches the SDKs you depend on."," The error Xcode shows first is rarely the real one. This guide is the order to work in, from reading the actual failure to the fixes that cover most upgrade breakages.",[14,609,610,611,614,615,214],{},"It is the same approach Simon uses on Workspace369, his production Flutter and Firebase SaaS, and it is the iOS build part of App369's ",[82,612,613],{"href":509},"fixed-price Flutter & Firebase Fix Ticket",". For the wider method, see ",[82,616,618],{"href":617},"\u002Fblog\u002Fhow-to-debug-a-flutter-firebase-bug-2026\u002F","how to debug a Flutter and Firebase bug",[44,620,622],{"id":621},"step-1-read-the-real-error","Step 1: Read the real error",[14,624,625],{},"Don't start by deleting folders. First get the full output.",[245,627,628,635,648],{},[199,629,630,631,634],{},"Run ",[22,632,633],{},"flutter doctor -v"," and fix anything it flags under Xcode or CocoaPods.",[199,636,630,637,259,640,643,644,647],{},[22,638,639],{},"flutter build ios -v",[22,641,642],{},"flutter run -v",") and read from the first line that says ",[22,645,646],{},"error:",", not the last line. The final \"Xcode build failed\" message is a summary.",[199,649,650,651,654,655,658],{},"If the failure happens in Xcode itself, open ",[22,652,653],{},"ios\u002FRunner.xcworkspace"," (never ",[22,656,657],{},"Runner.xcodeproj",") and use the Report navigator to open the build log. Filter for errors and read the first one.",[14,660,661],{},"Where the error appears tells you which step failed:",[49,663,664,674],{},[52,665,666],{},[55,667,668,671],{},[58,669,670],{},"Where it fails",[58,672,673],{},"Likely area",[68,675,676,687,695,703,711],{},[55,677,678,684],{},[73,679,680,683],{},[22,681,682],{},"pod install"," output, before compiling",[73,685,686],{},"CocoaPods resolution, Podfile, specs",[55,688,689,692],{},[73,690,691],{},"\"Compiling for iOS X, but module requires iOS Y\"",[73,693,694],{},"Deployment target too low",[55,696,697,700],{},[73,698,699],{},"Swift or Objective-C compile errors inside a plugin",[73,701,702],{},"Plugin and Xcode or SDK version mismatch",[55,704,705,708],{},[73,706,707],{},"Linking or \"framework not found\"",[73,709,710],{},"Stale Pods or build cache",[55,712,713,716],{},[73,714,715],{},"Code signing messages",[73,717,718],{},"Signing and provisioning, covered at the end",[44,720,722],{"id":721},"step-2-check-your-xcode-and-cocoapods-versions","Step 2: Check your Xcode and CocoaPods versions",[14,724,725,726,731,732,29,735,738,739,744,745,748,749,752],{},"Upgrades often fail because the Firebase SDK moved its minimum requirements. The ",[82,727,730],{"href":728,"rel":729},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fios\u002Finstallation-methods",[86],"Firebase Apple platforms installation docs"," list the current Xcode requirement and say the CocoaPods distribution needs CocoaPods 1.12.0 or higher. Check yours with ",[22,733,734],{},"pod --version",[22,736,737],{},"xcodebuild -version",", and update if either is below what your plugins need. Flutter's own ",[82,740,743],{"href":741,"rel":742},"https:\u002F\u002Fdocs.flutter.dev\u002Fplatform-integration\u002Fios\u002Fsetup",[86],"iOS setup page"," covers pointing the command-line tools at the right Xcode (",[22,746,747],{},"xcode-select",") and accepting licenses (",[22,750,751],{},"sudo xcodebuild -license","); a second Xcode installed on the machine is a common reason a build uses the wrong toolchain.",[44,754,756],{"id":755},"step-3-fix-the-ios-deployment-target","Step 3: Fix the iOS deployment target",[14,758,759,760,765],{},"A plugin upgrade can raise the minimum iOS version. The ",[82,761,764],{"href":762,"rel":763},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fflutter\u002Fsetup",[86],"Firebase Flutter setup page"," lists iOS 15 or later as the Apple requirement for the FlutterFire plugins. Check three places and make them agree:",[196,767,768,778,781],{},[199,769,770,773,774,777],{},[22,771,772],{},"ios\u002FPodfile",": the line ",[22,775,776],{},"platform :ios, '15.0'"," (use the minimum your plugins ask for; if the line is commented out, uncomment it).",[199,779,780],{},"Xcode: Runner target, General tab, \"Minimum Deployments\".",[199,782,783,784,787,788,791],{},"The ",[22,785,786],{},"post_install"," block in the Podfile, if you have one that sets ",[22,789,790],{},"IPHONEOS_DEPLOYMENT_TARGET"," on every pod. A value there that is lower than a pod's own minimum produces the \"module requires iOS Y\" error.",[44,793,795],{"id":794},"step-4-refresh-cocoapods-then-clean-it-out","Step 4: Refresh CocoaPods, then clean it out",[14,797,798,799,802],{},"Work from least to most destructive. Run these inside the ",[22,800,801],{},"ios"," folder.",[245,804,805,813,841],{},[199,806,807,812],{},[17,808,809],{},[22,810,811],{},"pod install --repo-update"," refreshes the local spec repository and then installs. It is the right first move after upgrading a plugin, because a stale local spec list can't find the new version.",[199,814,815,820,821,824,825,830,831,833,834,836,837,840],{},[17,816,817],{},[22,818,819],{},"pod update PODNAME"," if one pod needs to move to a newer version than ",[22,822,823],{},"Podfile.lock"," allows. As the ",[82,826,829],{"href":827,"rel":828},"https:\u002F\u002Fguides.cocoapods.org\u002Fusing\u002Fpod-install-vs-update.html",[86],"CocoaPods guide"," explains, ",[22,832,682],{}," respects the versions in ",[22,835,823],{},", while ",[22,838,839],{},"pod update"," ignores the lock and fetches the newest version your constraints allow.",[199,842,843,846],{},[17,844,845],{},"A clean reinstall."," If it is still broken, remove the generated pieces and rebuild them:",[302,848,852],{"className":849,"code":850,"language":851,"meta":307,"style":307},"language-bash shiki shiki-themes github-light github-dark","cd ios\nrm -rf Pods Podfile.lock\ncd ..\nflutter clean\nflutter pub get\ncd ios && pod install --repo-update\n","bash",[22,853,854,864,879,886,894,905],{"__ignoreMap":307},[311,855,856,860],{"class":313,"line":314},[311,857,859],{"class":858},"sj4cs","cd",[311,861,863],{"class":862},"sZZnC"," ios\n",[311,865,866,870,873,876],{"class":313,"line":320},[311,867,869],{"class":868},"sScJk","rm",[311,871,872],{"class":858}," -rf",[311,874,875],{"class":862}," Pods",[311,877,878],{"class":862}," Podfile.lock\n",[311,880,881,883],{"class":313,"line":326},[311,882,859],{"class":858},[311,884,885],{"class":862}," ..\n",[311,887,888,891],{"class":313,"line":332},[311,889,890],{"class":868},"flutter",[311,892,893],{"class":862}," clean\n",[311,895,897,899,902],{"class":313,"line":896},5,[311,898,890],{"class":868},[311,900,901],{"class":862}," pub",[311,903,904],{"class":862}," get\n",[311,906,908,910,913,917,920,923],{"class":313,"line":907},6,[311,909,859],{"class":858},[311,911,912],{"class":862}," ios",[311,914,916],{"class":915},"sVt8B"," && ",[311,918,919],{"class":868},"pod",[311,921,922],{"class":862}," install",[311,924,925],{"class":858}," --repo-update\n",[14,927,928,929,932,933,935,936,938,939,942],{},"Deleting ",[22,930,931],{},"Pods"," is safe because it is generated. Deleting ",[22,934,823],{}," is also safe for a one-off repair, but it lets every pod re-resolve, so you may get newer versions than before. The CocoaPods guide recommends committing ",[22,937,823],{},", so review the diff after the reinstall and commit the new one once the build passes. If you only suspect Xcode's cache, you can also delete ",[22,940,941],{},"~\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData","; it only holds build products, and Xcode recreates it.",[44,944,946],{"id":945},"step-5-upgrade-the-flutterfire-plugins-together","Step 5: Upgrade the FlutterFire plugins together",[14,948,949,952,953,952,956,959],{},[22,950,951],{},"firebase_core",", ",[22,954,955],{},"cloud_firestore",[22,957,958],{},"firebase_auth"," and the other FlutterFire plugins are versioned together and each one depends on a specific Firebase SDK release. Upgrading one and leaving the others behind is a common source of build errors, including duplicate or conflicting native pods.",[196,961,962,971,986],{},[199,963,630,964,967,968,970],{},[22,965,966],{},"flutter pub outdated"," to see the gap, then upgrade the whole FlutterFire family in one ",[22,969,356],{}," change.",[199,972,973,974,977,978,982,983,214],{},"Re-run ",[22,975,976],{},"flutterfire configure"," if you added a Firebase service or platform; the ",[82,979,981],{"href":762,"rel":980},[86],"Firebase docs"," say re-running it keeps your configuration current. Install the tool with ",[22,984,985],{},"dart pub global activate flutterfire_cli",[199,987,988,989,991],{},"If you pin a Firebase SDK version in the Podfile, remove the pin and let the plugins choose it. A manual pin that disagrees with ",[22,990,951],{}," is a classic conflict.",[44,993,995],{"id":994},"step-6-know-that-cocoapods-is-being-phased-out","Step 6: Know that CocoaPods is being phased out",[14,997,998,999,1004],{},"This matters for upgrades in late 2026. Firebase's docs warn that it will stop publishing new versions to CocoaPods in October 2026 and recommend Swift Package Manager. Flutter's ",[82,1000,1003],{"href":1001,"rel":1002},"https:\u002F\u002Fdocs.flutter.dev\u002Fpackages-and-plugins\u002Fswift-package-manager\u002Ffor-app-developers",[86],"Swift Package Manager page"," says SwiftPM support is on by default as of Flutter 3.44, that Flutter falls back to CocoaPods for plugins that don't support it yet, and that the CocoaPods registry becomes read-only on December 2, 2026.",[14,1006,1007],{},"In practice: after a Flutter upgrade, the first build may modify your Xcode project to add SwiftPM integration. Commit that change rather than reverting it, and if a build error mentions a Swift package, read it the same way as a pod error: find the first real failure.",[44,1009,1011],{"id":1010},"step-7-signing-errors-briefly","Step 7: Signing errors, briefly",[14,1013,1014],{},"If it compiles but fails to archive, it is usually signing. In Xcode, open the Runner target, Signing & Capabilities, and check that a team is selected, the bundle identifier matches your App Store Connect app, and \"Automatically manage signing\" is on unless you manage profiles yourself. Flutter's iOS setup page notes a signed developer certificate is needed even for device testing.",[44,1016,1018],{"id":1017},"when-to-get-help","When to get help",[14,1020,1021,1022,1024],{},"If an iOS build has eaten more than a day and the steps above haven't moved it, App369's ",[82,1023,613],{"href":509}," covers build failures after a Flutter or FlutterFire upgrade. The $450 Diagnosis delivers the root cause with evidence and a fixed repair quote within 3 business days, and the $450 is credited toward the fix. The $1,200 Fix delivers the scoped defect as a pull request with a regression test within 5 business days. App Store approval isn't something anyone can guarantee; the ticket covers the code defect itself.",[44,1026,1028],{"id":1027},"frequently-asked-questions","Frequently Asked Questions",[188,1030,1032],{"id":1031},"why-did-my-flutter-ios-build-fail-after-upgrading-flutter","Why did my Flutter iOS build fail after upgrading Flutter?",[14,1034,1035,1036,1038,1039,1041,1042,1044,1045,214],{},"Most often the Podfile or Xcode project still has an old iOS deployment target, ",[22,1037,823],{}," pins old pod versions, or plugin versions no longer match each other. Run ",[22,1040,639],{},", find the first ",[22,1043,646],{}," line, then work through the deployment target and ",[22,1046,811],{},[188,1048,1050],{"id":1049},"is-it-safe-to-delete-podfilelock-and-the-pods-folder","Is it safe to delete Podfile.lock and the Pods folder?",[14,1052,1053,1054,1056,1057,1059,1060,1062],{},"Yes, for a repair. ",[22,1055,931],{}," is generated and ",[22,1058,823],{}," is rebuilt by ",[22,1061,682],{},". The catch is that pods may resolve to newer versions, so check the new lock file and commit it once the build works.",[188,1064,1066],{"id":1065},"what-does-pod-install-repo-update-do","What does \"pod install --repo-update\" do?",[14,1068,1069],{},"It refreshes CocoaPods' local list of available pod versions before installing. Use it when a newly upgraded plugin needs a pod version your machine's spec list doesn't know about yet.",[188,1071,1073],{"id":1072},"should-i-upgrade-only-one-flutterfire-plugin","Should I upgrade only one FlutterFire plugin?",[14,1075,1076,1077,1079],{},"Avoid it. FlutterFire plugins depend on matching Firebase SDK releases, so upgrade ",[22,1078,951],{}," and the other FlutterFire packages together and rebuild.",[188,1081,1083],{"id":1082},"do-i-need-to-switch-from-cocoapods-to-swift-package-manager","Do I need to switch from CocoaPods to Swift Package Manager?",[14,1085,1086],{},"Flutter handles it for you in recent versions and falls back to CocoaPods for plugins that don't support SwiftPM yet. Given Firebase's announced CocoaPods change, keep your plugins current rather than pinning old versions.",[518,1088,1089],{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":307,"searchDepth":320,"depth":320,"links":1091},[1092,1093,1094,1095,1096,1097,1098,1099,1100],{"id":621,"depth":320,"text":622},{"id":721,"depth":320,"text":722},{"id":755,"depth":320,"text":756},{"id":794,"depth":320,"text":795},{"id":945,"depth":320,"text":946},{"id":994,"depth":320,"text":995},{"id":1010,"depth":320,"text":1011},{"id":1017,"depth":320,"text":1018},{"id":1027,"depth":320,"text":1028,"children":1101},[1102,1103,1104,1105,1106],{"id":1031,"depth":326,"text":1032},{"id":1049,"depth":326,"text":1050},{"id":1065,"depth":326,"text":1066},{"id":1072,"depth":326,"text":1073},{"id":1082,"depth":326,"text":1083},"2026-10-12T18:00:00.000Z","Flutter iOS build failing after upgrading Flutter, FlutterFire or Xcode? How to read the real error, then fix CocoaPods, deployment target and plugin version mismatches.",{"readingTimeStats":1110},{"text":556,"minutes":1111,"time":1112,"words":1113},5.995,359700,1199,"\u002Fblog\u002Fflutter-ios-build-failed-after-upgrade-2026",{"title":597,"description":1108},"blog\u002Fflutter-ios-build-failed-after-upgrade-2026","flutter ios build failed, cocoapods error, pod install failed, flutterfire upgrade, xcode build error, flutter build ios, firebase ios","https:\u002F\u002Fapp369.com\u002Fblog\u002Fflutter-ios-build-failed-after-upgrade-2026\u002F","2S7ATVimG3dqa0pi1C-hx3AP4EoFgy7CwxvoeB-59DM",{"id":1121,"title":1122,"author":1123,"body":1125,"category":529,"createdAt":1734,"description":1735,"disclosure":532,"extension":533,"faq":1736,"howTo":532,"location":553,"meta":1755,"navigation":560,"ogImage":532,"path":1761,"primaryKeyword":1762,"readingTime":1763,"related":1764,"seo":1767,"sources":1768,"stem":1829,"tags":1830,"takeaways":1831,"updatedAt":1734,"url":1837,"__hash__":1838},"blog\u002Fblog\u002Fmobile-app-beta-testing-crash-reporting-tools-2026.md","HockeyApp, Fabric and App Center Are Gone: Beta Testing and Crash Reporting in 2026",{"name":7,"social":1124},{"twitter":9},{"type":11,"value":1126,"toc":1726},[1127,1133,1136,1140,1341,1344,1348,1463,1466,1470,1558,1561,1565,1597,1601,1705,1707,1710],[14,1128,1129,1132],{},[17,1130,1131],{},"HockeyApp, Fabric, BuddyBuild and Visual Studio App Center are gone, and the old links to them lead nowhere."," In 2026 the simple answer is this: use TestFlight for iOS betas, Google Play testing tracks for Android betas, and Firebase Crashlytics or Sentry for crash reports. All of them have a free way in.",[14,1134,1135],{},"This guide replaces the \"alternatives to TestFlight\" lists that still point at dead sites. Dates come from the vendor's own announcement where one still exists. Limits and prices were checked on the vendor's pages on October 17, 2026.",[44,1137,1139],{"id":1138},"what-shut-down-and-when","What shut down, and when",[49,1141,1142,1155],{},[52,1143,1144],{},[55,1145,1146,1149,1151,1153],{},[58,1147,1148],{},"Service",[58,1150,63],{},[58,1152,60],{},[58,1154,66],{},[68,1156,1157,1183,1202,1228,1253,1276,1296,1321],{},[55,1158,1159,1165,1168,1171],{},[73,1160,1161,1164],{},[17,1162,1163],{},"HockeyApp"," (Microsoft)",[73,1166,1167],{},"Microsoft bought HockeyApp and planned to fold it into Application Insights. Accounts later moved to Visual Studio App Center. hockeyapp.net no longer loads",[73,1169,1170],{},"Bought December 11, 2014. Microsoft's post saying all accounts had moved to App Center is dated November 16, 2019",[73,1172,1173,952,1178],{},[82,1174,1177],{"href":1175,"rel":1176},"https:\u002F\u002Fdevblogs.microsoft.com\u002Fbharry\u002Fmicrosoft-acquires-hockeyapp\u002F",[86],"Microsoft",[82,1179,1182],{"href":1180,"rel":1181},"https:\u002F\u002Fdevblogs.microsoft.com\u002Fappcenter\u002F?p=39389",[86],"App Center blog",[55,1184,1185,1190,1193,1196],{},[73,1186,1187,1164],{},[17,1188,1189],{},"Visual Studio App Center",[73,1191,1192],{},"Retired, including build, test, distribution and CodePush. Analytics and Diagnostics were extended",[73,1194,1195],{},"March 31, 2025. Analytics and Diagnostics run until the end of March 2027",[73,1197,1198],{},[82,1199,1177],{"href":1200,"rel":1201},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fappcenter\u002Fretirement",[86],[55,1203,1204,1210,1213,1216],{},[73,1205,1206,1209],{},[17,1207,1208],{},"Fabric"," (Twitter, then Google)",[73,1211,1212],{},"Google signed a deal to buy Fabric from Twitter and made Crashlytics the main crash reporter in Firebase. Fabric was then wound down. fabric.io now redirects to Firebase",[73,1214,1215],{},"Deal announced January 18, 2017. Wind-down announced September 14, 2018",[73,1217,1218,952,1223],{},[82,1219,1222],{"href":1220,"rel":1221},"https:\u002F\u002Fdevelopers.googleblog.com\u002F2017\u002F01\u002Fwelcoming-fabric-to-google.html",[86],"Google",[82,1224,1227],{"href":1225,"rel":1226},"https:\u002F\u002Fventurebeat.com\u002Fbusiness\u002Fgoogle-is-killing-fabric-in-mid-2019-pushes-developers-to-firebase",[86],"VentureBeat",[55,1229,1230,1235,1238,1241],{},[73,1231,1232],{},[17,1233,1234],{},"BuddyBuild",[73,1236,1237],{},"Apple bought it in January 2018 and stopped taking new customers. The service was shut down in 2021. buddybuild.com now redirects to Apple's Xcode Cloud page",[73,1239,1240],{},"Acquisition disclosed January 2, 2018. Shutdown reported March 1, 2021",[73,1242,1243,952,1248],{},[82,1244,1247],{"href":1245,"rel":1246},"https:\u002F\u002Fappleinsider.com\u002Farticles\u002F21\u002F03\u002F01\u002Fbuddybuild-shutting-down-3-years-after-apple-acquisition",[86],"AppleInsider",[82,1249,1252],{"href":1250,"rel":1251},"https:\u002F\u002Fdeveloper.apple.com\u002Fxcode-cloud\u002F",[86],"Apple",[55,1254,1255,1260,1263,1266],{},[73,1256,1257],{},[17,1258,1259],{},"TestFlight (the original, testflightapp.com)",[73,1261,1262],{},"Apple bought its parent company Burstly, built TestFlight into App Store Connect, and closed the old site. testflightapp.com no longer loads",[73,1264,1265],{},"Burstly bought in 2014. Old site closed at the end of February 2015",[73,1267,1268,952,1272],{},[82,1269,1227],{"href":1270,"rel":1271},"https:\u002F\u002Fventurebeat.com\u002Ftechnology\u002Fapple-snaps-up-testflight-parent-burstly-amid-product-shutdowns",[86],[82,1273,1247],{"href":1274,"rel":1275},"https:\u002F\u002Fappleinsider.com\u002Farticles\u002F15\u002F01\u002F26\u002Fapple-closing-independent-testflight-service-at-the-end-of-february",[86],[55,1277,1278,1283,1286,1289],{},[73,1279,1280],{},[17,1281,1282],{},"Appsee",[73,1284,1285],{},"ServiceNow bought the team and technology, and the standalone product was shut down. appsee.com no longer loads. I found no official end-of-life date",[73,1287,1288],{},"Acquisition reported May 13, 2019",[73,1290,1291],{},[82,1292,1295],{"href":1293,"rel":1294},"https:\u002F\u002Fsiliconangle.com\u002F2019\u002F05\u002F13\u002Fservicenow-picks-mobile-app-analytics-startup-appsee\u002F",[86],"SiliconANGLE",[55,1297,1298,1303,1306,1309],{},[73,1299,1300],{},[17,1301,1302],{},"BugSense",[73,1304,1305],{},"Splunk bought the mobile crash and analytics platform. Splunk's mobile monitoring product, Splunk MINT, later reached end of support and end of life. bugsense.com has no website address in DNS",[73,1307,1308],{},"Acquisition announced September 16, 2013. Splunk MINT end of life December 31, 2021",[73,1310,1311,952,1316],{},[82,1312,1315],{"href":1313,"rel":1314},"https:\u002F\u002Ftechcrunch.com\u002F2013\u002F09\u002F16\u002Fsplunk-acquires-bugsense-a-platform-for-analyzing-mobile-data\u002F",[86],"TechCrunch",[82,1317,1320],{"href":1318,"rel":1319},"https:\u002F\u002Fsplunkbase.splunk.com\u002Fapp\u002F1885",[86],"Splunkbase",[55,1322,1323,1329,1332,1335],{},[73,1324,1325,1328],{},[17,1326,1327],{},"Crittercism"," (later Apteligent)",[73,1330,1331],{},"Renamed Apteligent, then bought by VMware. crittercism.com has no website address in DNS, and apteligent.com redirects to a VMware page that returns a 404",[73,1333,1334],{},"Acquisition announced May 15, 2017",[73,1336,1337],{},[82,1338,1315],{"href":1339,"rel":1340},"https:\u002F\u002Ftechcrunch.com\u002F2017\u002F05\u002F15\u002Fapteligent-acquired-by-vmware",[86],[14,1342,1343],{},"I checked each old domain on October 17, 2026. The pattern repeats. A small developer-tools company is bought by a platform owner, the product is folded into something else, and the old URL dies. The tools you can rely on longest are the ones the platform owner builds for itself: TestFlight, Google Play and Crashlytics.",[44,1345,1347],{"id":1346},"beta-distribution-in-2026","Beta distribution in 2026",[49,1349,1350,1369],{},[52,1351,1352],{},[55,1353,1354,1357,1360,1363,1366],{},[58,1355,1356],{},"Option",[58,1358,1359],{},"Platforms",[58,1361,1362],{},"Tester limits",[58,1364,1365],{},"Cost",[58,1367,1368],{},"Notes",[68,1370,1371,1390,1409,1427,1444],{},[55,1372,1373,1378,1381,1384,1387],{},[73,1374,1375],{},[17,1376,1377],{},"TestFlight",[73,1379,1380],{},"iOS, iPadOS, macOS, tvOS, visionOS",[73,1382,1383],{},"100 internal testers (App Store Connect users). Up to 10,000 external testers. Each tester can use up to 30 devices",[73,1385,1386],{},"Included with Apple Developer Program membership",[73,1388,1389],{},"Builds expire after 90 days. The first build sent to an external group goes through Beta App Review. Later builds may not need a full review",[55,1391,1392,1397,1400,1403,1406],{},[73,1393,1394],{},[17,1395,1396],{},"Google Play internal testing",[73,1398,1399],{},"Android",[73,1401,1402],{},"Up to 100 testers, added by email",[73,1404,1405],{},"Included with a Play developer account",[73,1407,1408],{},"Fast to publish. Good for your own team",[55,1410,1411,1416,1418,1421,1424],{},[73,1412,1413],{},[17,1414,1415],{},"Google Play closed testing",[73,1417,1399],{},[73,1419,1420],{},"Email lists of up to 2,000 users each, up to 200 lists",[73,1422,1423],{},"Included",[73,1425,1426],{},"Personal accounts created after November 13, 2023 need a closed test with at least 12 testers opted in for 14 days before applying for production",[55,1428,1429,1434,1436,1439,1441],{},[73,1430,1431],{},[17,1432,1433],{},"Google Play open testing",[73,1435,1399],{},[73,1437,1438],{},"Unlimited, or a limit of at least 1,000",[73,1440,1423],{},[73,1442,1443],{},"Anyone can join from the Play listing",[55,1445,1446,1451,1454,1457,1460],{},[73,1447,1448],{},[17,1449,1450],{},"Firebase App Distribution",[73,1452,1453],{},"iOS and Android",[73,1455,1456],{},"The overview page does not state a tester limit",[73,1458,1459],{},"Listed as a no-cost product on Firebase pricing",[73,1461,1462],{},"Testers join by email or group. Distribute from the console, the CLI, fastlane or Gradle (Gradle is Android only). The docs do not state a build expiry, so check before you rely on one",[14,1464,1465],{},"Apple's published rule is that external testing needs Beta App Review for the first build. Allow time for it before you promise a date to a client.",[44,1467,1469],{"id":1468},"crash-reporting-in-2026","Crash reporting in 2026",[49,1471,1472,1487],{},[52,1473,1474],{},[55,1475,1476,1478,1481,1484],{},[58,1477,1356],{},[58,1479,1480],{},"Free tier",[58,1482,1483],{},"First paid plan",[58,1485,1486],{},"Best for",[68,1488,1489,1505,1521,1543],{},[55,1490,1491,1496,1499,1502],{},[73,1492,1493],{},[17,1494,1495],{},"Firebase Crashlytics",[73,1497,1498],{},"Free. Firebase lists it as a no-cost product",[73,1500,1501],{},"None for Crashlytics. Other Firebase products are billed separately",[73,1503,1504],{},"Flutter, iOS and Android apps already on Firebase",[55,1506,1507,1512,1515,1518],{},[73,1508,1509],{},[17,1510,1511],{},"Sentry",[73,1513,1514],{},"Developer plan: 5k errors, 1 user, 30 days of data, 5M tracing spans",[73,1516,1517],{},"Team plan, $29 a month billed monthly, or $26 a month billed annually",[73,1519,1520],{},"Teams that also want web and backend errors, tracing and session replay",[55,1522,1523,1529,1532,1540],{},[73,1524,1525,1528],{},[17,1526,1527],{},"Bugsnag"," (SmartBear)",[73,1530,1531],{},"Free plan: 1 user, 7.5K events and 1M spans a month, 7 days of data",[73,1533,1534,1535],{},"See ",[82,1536,1539],{"href":1537,"rel":1538},"https:\u002F\u002Fwww.bugsnag.com\u002Fpricing",[86],"bugsnag.com\u002Fpricing",[73,1541,1542],{},"Teams that want stability scores per release",[55,1544,1545,1550,1553,1555],{},[73,1546,1547],{},[17,1548,1549],{},"Azure Monitor and other APM tools",[73,1551,1552],{},"See each vendor",[73,1554,1552],{},[73,1556,1557],{},"Teams already on Azure. Microsoft's App Center notice names Datadog, Dynatrace and New Relic, and an Azure Monitor mobile option in public preview",[14,1559,1560],{},"On Bugsnag, the pricing page lists its paid plans as Select, Preferred and Enterprise and carries a SmartBear copyright. I could not read a clear first paid price, so I do not quote one.",[44,1562,1564],{"id":1563},"how-to-choose","How to choose",[245,1566,1567,1573,1579,1585,1591],{},[199,1568,1569,1572],{},[17,1570,1571],{},"You only need to hand a build to a client or a few testers."," TestFlight for iOS and Play internal testing for Android. They are free, official and unlikely to disappear.",[199,1574,1575,1578],{},[17,1576,1577],{},"You want one tool for both platforms."," Firebase App Distribution lets you send one invite flow for iOS and Android builds. You still need to follow Apple's rules for installing on test devices.",[199,1580,1581,1584],{},[17,1582,1583],{},"Your app is already on Firebase."," Use Crashlytics. It is free and sits in the same console as your auth, database and messaging.",[199,1586,1587,1590],{},[17,1588,1589],{},"You also run a website or an API."," Sentry puts mobile, web and server errors in one place. Check the free limits against your traffic first, because 5k errors a month goes fast on a noisy app.",[199,1592,1593,1596],{},[17,1594,1595],{},"You were burned by a shutdown."," Keep your build pipeline in files you own (fastlane or plain scripts), keep release notes in your repo, and pick tools run by Apple, Google or a company whose main product is that tool.",[44,1598,1600],{"id":1599},"setup-checklist-for-a-flutter-app","Setup checklist for a Flutter app",[245,1602,1603,1609,1615,1629,1654,1673,1693,1699],{},[199,1604,1605,1608],{},[17,1606,1607],{},"Apple side."," Create the app in App Store Connect, add internal testers, then upload a build from Xcode or fastlane. Add an external group only when you are ready for Beta App Review.",[199,1610,1611,1614],{},[17,1612,1613],{},"Google side."," Create the app in Play Console and upload an app bundle to the internal testing track. Add testers by email and share the opt-in link.",[199,1616,1617,1620,1621,1624,1625,1628],{},[17,1618,1619],{},"Pick one crash reporter."," Both have official Flutter packages. As of October 17, 2026, ",[22,1622,1623],{},"firebase_crashlytics"," is at version 6.0.0 and ",[22,1626,1627],{},"sentry_flutter"," is at version 10.1.0 on pub.dev.",[199,1630,1631,1634,1635,1638,1639,1641,1642,1645,1646,1649,1650,1653],{},[17,1632,1633],{},"Crashlytics route."," Run ",[22,1636,1637],{},"flutter pub add firebase_crashlytics firebase_analytics",", then ",[22,1640,976],{},". Set ",[22,1643,1644],{},"FlutterError.onError"," to ",[22,1647,1648],{},"FirebaseCrashlytics.instance.recordFlutterFatalError",", and ",[22,1651,1652],{},"PlatformDispatcher.instance.onError"," for async errors.",[199,1655,1656,1634,1659,1662,1663,29,1665,1668,1669,1672],{},[17,1657,1658],{},"Sentry route.",[22,1660,1661],{},"npx @sentry\u002Fwizard@latest -i flutter",". It adds ",[22,1664,1627],{},[22,1666,1667],{},"sentry_dart_plugin"," and patches ",[22,1670,1671],{},"main.dart",". As of October 17, 2026, Sentry's docs list Flutter 3.44.0 and Dart 3.12.0 or later.",[199,1674,1675,1678,1679,1682,1683,1686,1687,1690,1691,214],{},[17,1676,1677],{},"Upload symbols."," If you build with ",[22,1680,1681],{},"--split-debug-info"," or ",[22,1684,1685],{},"--obfuscate",", upload the symbols or the stack traces will be unreadable. For Crashlytics on Android, run ",[22,1688,1689],{},"firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH\u002FTO\u002Fsymbols",". On iOS, Firebase says Flutter 3.12.0 or later with Crashlytics plugin 3.3.4 or later can generate and upload the dSYMs for you. For Sentry, use ",[22,1692,1667],{},[199,1694,1695,1698],{},[17,1696,1697],{},"Force a test crash in a release build,"," not only in debug, and confirm it shows up readable in the dashboard.",[199,1700,1701,1704],{},[17,1702,1703],{},"Write down who gets the alert."," A crash report nobody reads is the same as having none.",[44,1706,503],{"id":502},[14,1708,1709],{},"App369 is Simon Dziak's studio. He builds and runs Workspace369, a production Flutter and Firebase SaaS.",[196,1711,1712,1718],{},[199,1713,1714,1715,1717],{},"A crash or a build that fails on one platform: the ",[82,1716,510],{"href":509}," diagnoses one issue for $450 (3 business days) and fixes it for $1,200 (5 business days), both fixed price.",[199,1719,1720,1721,1725],{},"Cost problems on Firebase: the ",[82,1722,1724],{"href":1723},"\u002Ffixed-price\u002Ffirebase-cost-audit\u002F","Firebase Cost-Cut Audit",", $750 fixed price, 5 business days.",{"title":307,"searchDepth":320,"depth":320,"links":1727},[1728,1729,1730,1731,1732,1733],{"id":1138,"depth":320,"text":1139},{"id":1346,"depth":320,"text":1347},{"id":1468,"depth":320,"text":1469},{"id":1563,"depth":320,"text":1564},{"id":1599,"depth":320,"text":1600},{"id":502,"depth":320,"text":503},"2026-10-17T12:00:00.000Z","HockeyApp, Fabric, BuddyBuild, Appsee, BugSense, Crittercism and Visual Studio App Center are gone or going. A dated record of what shut down, plus the 2026 options for mobile beta testing (TestFlight, Google Play, Firebase App Distribution) and crash reporting (Crashlytics, Sentry, Bugsnag), checked October 17, 2026.",[1737,1740,1743,1746,1749,1752],{"question":1738,"answer":1739},"What replaced HockeyApp?","Microsoft moved HockeyApp users to Visual Studio App Center, and App Center was then retired on March 31, 2025. For beta distribution, Microsoft itself points to Apple TestFlight for iOS and Google Play testing for Android. For crash reporting, the common replacements are Firebase Crashlytics and Sentry.",{"question":1741,"answer":1742},"What replaced Fabric and Crashlytics Beta?","Google bought Fabric from Twitter (announced January 18, 2017) and moved Crashlytics into Firebase. Firebase Crashlytics handles crash reporting and is free. Firebase App Distribution handles beta builds and is also listed as no-cost.",{"question":1744,"answer":1745},"What happened to BugSense and Crittercism?","Splunk acquired BugSense in September 2013, and Splunk MINT, its mobile monitoring product, reached end of life on December 31, 2021. Crittercism renamed itself Apteligent and was acquired by VMware on May 15, 2017. On October 17, 2026, bugsense.com and crittercism.com had no website address in DNS. Firebase Crashlytics and Sentry are the usual replacements.",{"question":1747,"answer":1748},"Is TestFlight free?","Yes. TestFlight comes with an Apple Developer Program membership. You can invite up to 100 internal testers and up to 10,000 external testers, and a build can be tested for up to 90 days. The first build you send to external testers goes through Beta App Review.",{"question":1750,"answer":1751},"What is the best free crash reporting tool for a mobile app?","Firebase Crashlytics is free and works well for Flutter, iOS and Android apps. Sentry has a free Developer plan (5k errors a month, 1 user) and is a good fit if you also want web and backend errors in one place.",{"question":1753,"answer":1754},"Does Google Play have beta testing like TestFlight?","Yes. Google Play has internal testing (up to 100 testers), closed testing (email lists of up to 2,000 users each) and open testing. Personal developer accounts created after November 13, 2023 must run a closed test with at least 12 testers for 14 days before applying for production access.",{"readingTimeStats":1756},{"text":1757,"minutes":1758,"time":1759,"words":1760},"7 min read",6.1,366000,1220,"\u002Fblog\u002Fmobile-app-beta-testing-crash-reporting-tools-2026","hockeyapp alternative","8 min",[567,1765,1766,565],"firebase-dynamic-links-shutdown-deep-linking-2026","how-to-debug-a-flutter-firebase-bug-2026",{"title":1122,"description":1735},[1769,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1793,1795,1798,1801,1804,1807,1809,1812,1815,1818,1821,1823,1826],{"title":1770,"url":1200},"Microsoft, Visual Studio App Center retirement",{"title":1772,"url":1175},"Brian Harry (Microsoft), \"Microsoft acquires HockeyApp\" (December 11, 2014)",{"title":1774,"url":1180},"Microsoft App Center blog, \"HockeyApp is being retired\" (November 16, 2019)",{"title":1776,"url":1220},"Google Developers Blog, \"Welcoming Fabric to Google\" (January 18, 2017)",{"title":1778,"url":1225},"VentureBeat, \"Google is killing Fabric in mid-2019\" (September 14, 2018)",{"title":1780,"url":1245},"AppleInsider, Buddybuild shutting down 3 years after Apple acquisition (March 1, 2021)",{"title":1782,"url":1250},"Apple, Xcode Cloud (where buddybuild.com now redirects)",{"title":1784,"url":1274},"AppleInsider, Apple closing independent TestFlight service (January 2015)",{"title":1786,"url":1270},"VentureBeat, Apple snaps up TestFlight parent Burstly (2014)",{"title":1788,"url":1293},"SiliconANGLE, ServiceNow picks up mobile app analytics startup Appsee (May 13, 2019)",{"title":1790,"url":1313},"TechCrunch, \"Splunk Acquires BugSense\" (September 16, 2013)",{"title":1792,"url":1318},"Splunkbase, Splunk MINT end of support and end of life notice",{"title":1794,"url":1339},"TechCrunch, \"Apteligent acquired by VMware\" (May 15, 2017)",{"title":1796,"url":1797},"Apple, TestFlight overview (App Store Connect Help)","https:\u002F\u002Fdeveloper.apple.com\u002Fhelp\u002Fapp-store-connect\u002Ftest-a-beta-version\u002Ftestflight-overview\u002F",{"title":1799,"url":1800},"Apple, TestFlight","https:\u002F\u002Fdeveloper.apple.com\u002Ftestflight\u002F",{"title":1802,"url":1803},"Google Play Console Help, Set up an open, closed or internal test","https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F9845334",{"title":1805,"url":1806},"Google Play Console Help, App testing requirements for new personal developer accounts","https:\u002F\u002Fsupport.google.com\u002Fgoogleplay\u002Fandroid-developer\u002Fanswer\u002F14151465",{"title":1450,"url":1808},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fapp-distribution",{"title":1810,"url":1811},"Firebase pricing","https:\u002F\u002Ffirebase.google.com\u002Fpricing",{"title":1813,"url":1814},"Firebase Crashlytics for Flutter, get started","https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fcrashlytics\u002Fflutter\u002Fget-started",{"title":1816,"url":1817},"Sentry pricing","https:\u002F\u002Fsentry.io\u002Fpricing\u002F",{"title":1819,"url":1820},"Sentry for Flutter","https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fdart\u002Fguides\u002Fflutter\u002F",{"title":1822,"url":1537},"Bugsnag pricing (SmartBear)",{"title":1824,"url":1825},"firebase_crashlytics on pub.dev","https:\u002F\u002Fpub.dev\u002Fpackages\u002Ffirebase_crashlytics",{"title":1827,"url":1828},"sentry_flutter on pub.dev","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fsentry_flutter","blog\u002Fmobile-app-beta-testing-crash-reporting-tools-2026","hockeyapp alternative, fabric alternative, app center alternative, testflight alternatives, beta testing tools, crash reporting tools, firebase crashlytics, sentry flutter, buddybuild, appsee, bugsense, crittercism, apteligent, mobile app beta testing",[1832,1833,1834,1835,1836],"HockeyApp, Fabric, BuddyBuild, Appsee and the original TestFlight site are all gone. As of October 17, 2026, hockeyapp.net, appsee.com and testflightapp.com no longer load a working site, fabric.io redirects to Firebase and buddybuild.com redirects to Apple Xcode Cloud.","Visual Studio App Center was retired on March 31, 2025. Its Analytics and Diagnostics features run until the end of March 2027.","For beta distribution, TestFlight (iOS) and Google Play testing tracks (Android) are free and cover most teams. Firebase App Distribution is a no-cost option that handles both platforms.","For crash reporting, Firebase Crashlytics is free. Sentry has a free Developer plan and its Team plan starts at $29 a month billed monthly.","Whatever you pick, upload your symbol files (dSYMs on iOS, split-debug-info symbols for Flutter). Without them, crash reports are unreadable.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fmobile-app-beta-testing-crash-reporting-tools-2026\u002F","72Sg3u66XMqpm57bp7ssONZzEdrVHrkTibDW0g4zbzc",{"id":1840,"title":1841,"author":1842,"body":1844,"category":529,"createdAt":1734,"description":2328,"disclosure":532,"extension":533,"faq":2329,"howTo":532,"location":553,"meta":2351,"navigation":560,"ogImage":532,"path":2356,"primaryKeyword":2357,"readingTime":2358,"related":2359,"seo":2363,"sources":2364,"stem":2402,"tags":2403,"takeaways":2404,"updatedAt":2410,"url":2411,"__hash__":2412},"blog\u002Fblog\u002Fparse-kinvey-backend-as-a-service-alternatives-2026.md","Parse, Kinvey and Realm Sync Are Gone: Where to Run Your App Backend in 2026",{"name":7,"social":1843},{"twitter":9},{"type":11,"value":1845,"toc":2321},[1846,1852,1855,1857,2068,2071,2075,2213,2216,2218,2250,2254,2257,2295,2297,2300],[14,1847,1848,1851],{},[17,1849,1850],{},"If your app was built on Parse, Kinvey, Telerik Platform or Realm Sync, that backend is gone, and links to the old docs now lead nowhere."," In 2026, the realistic homes for a mobile app backend are Firebase, Supabase, Parse Server (self-hosted or hosted on Back4App), Appwrite and PocketBase. The safest choice is the one you could leave, because every service on the list below was once someone's safe choice.",[14,1853,1854],{},"This guide replaces the migration posts and vendor pages that used to answer \"where do I go after Parse?\" Every date below comes from the vendor's own announcement, and every price was checked on the vendor's pricing page on October 17, 2026.",[44,1856,1139],{"id":1138},[49,1858,1859,1871],{},[52,1860,1861],{},[55,1862,1863,1865,1867,1869],{},[58,1864,1148],{},[58,1866,63],{},[58,1868,60],{},[58,1870,66],{},[68,1872,1873,1894,1923,1943,1964,1984,2005,2026,2042],{},[55,1874,1875,1881,1884,1887],{},[73,1876,1877,1880],{},[17,1878,1879],{},"Parse"," (Facebook)",[73,1882,1883],{},"Hosted service retired after a one-year wind-down. Parse Server and a database migration tool were released as open source.",[73,1885,1886],{},"Announced January 28, 2016. Retired January 28, 2017",[73,1888,1889],{},[82,1890,1893],{"href":1891,"rel":1892},"https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20160128222249\u002Fhttp:\u002F\u002Fblog.parse.com\u002Fannouncements\u002Fmoving-on\u002F",[86],"Parse blog, \"Moving On\"",[55,1895,1896,1902,1905,1908],{},[73,1897,1898,1901],{},[17,1899,1900],{},"StackMob"," (PayPal)",[73,1903,1904],{},"Bought by PayPal, then shut down so the team could work on PayPal's payments platform. stackmob.com is now a domain-protection placeholder",[73,1906,1907],{},"Bought December 2013. Shutdown announced February 12, 2014. Stopped running May 11, 2014",[73,1909,1910,952,1914,952,1919],{},[82,1911,1315],{"href":1912,"rel":1913},"https:\u002F\u002Ftechcrunch.com\u002F2013\u002F12\u002F17\u002Fsomeone-is-buying-stackmob-for-christmas\u002F",[86],[82,1915,1918],{"href":1916,"rel":1917},"https:\u002F\u002Fthenextweb.com\u002Fnews\u002Fpaypal-owned-stackmob-shut-may-11-team-can-focus-mobile-payment-technology",[86],"The Next Web",[82,1920,1227],{"href":1921,"rel":1922},"https:\u002F\u002Fventurebeat.com\u002F2014\u002F02\u002F12\u002Fpaypal-closing-down-backend-service-stackmob-months-after-buying-it",[86],[55,1924,1925,1930,1933,1936],{},[73,1926,1927,1164],{},[17,1928,1929],{},"Azure Mobile Services",[73,1931,1932],{},"Folded into Azure App Service, with sites migrated to App Service Mobile Apps. The old Mobile Services documentation links on azure.microsoft.com return a 404",[73,1934,1935],{},"Announced May 10, 2016. Migration of remaining sites from September 1, 2016. Service shut down planned for May 2017",[73,1937,1938],{},[82,1939,1942],{"href":1940,"rel":1941},"https:\u002F\u002Fazure.microsoft.com\u002Fen-us\u002Fblog\u002Ftransition-of-azure-mobile-services\u002F",[86],"Microsoft Azure blog",[55,1944,1945,1951,1954,1957],{},[73,1946,1947,1950],{},[17,1948,1949],{},"Kinvey"," (Progress)",[73,1952,1953],{},"Bought by Progress. Today kinvey.com has no website address in DNS, and progress.com\u002Fkinvey redirects to a community page that returns a 404",[73,1955,1956],{},"Acquisition announced June 28, 2017. Links checked October 17, 2026",[73,1958,1959],{},[82,1960,1963],{"href":1961,"rel":1962},"https:\u002F\u002Fwww.progress.com\u002Fblogs\u002Fprogress-acquires-the-leading-provider-of-backend-as-a-service",[86],"Progress",[55,1965,1966,1971,1974,1977],{},[73,1967,1968,1950],{},[17,1969,1970],{},"Telerik Platform and AppBuilder",[73,1972,1973],{},"Retired, with a notice telling users how to recover their apps and data",[73,1975,1976],{},"May 10, 2018",[73,1978,1979],{},[82,1980,1983],{"href":1981,"rel":1982},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fappbuilder",[86],"Progress notice on npm",[55,1985,1986,1992,1995,1998],{},[73,1987,1988,1991],{},[17,1989,1990],{},"Appcelerator Titanium SDK and Mobile Backend Services"," (Axway)",[73,1993,1994],{},"Axway ended support for the Titanium SDK, handed it to its community as an open-source project, and discontinued Mobile Backend Services. appcelerator.com returns a 404",[73,1996,1997],{},"Announced February 24, 2021. Titanium SDK support ended March 1, 2022. Mobile Backend Services discontinued September 1, 2022",[73,1999,2000],{},[82,2001,2004],{"href":2002,"rel":2003},"https:\u002F\u002Fblog.axway.com\u002Fmobile-apps\u002Fchanges-to-application-development-services",[86],"Axway",[55,2006,2007,2013,2016,2019],{},[73,2008,2009,2012],{},[17,2010,2011],{},"Atlas Device Sync and Realm-based Device SDKs"," (MongoDB)",[73,2014,2015],{},"Deprecated, then removed. The on-device database continues as open source, without sync",[73,2017,2018],{},"Deprecated September 2024. Removed September 30, 2025",[73,2020,2021],{},[82,2022,2025],{"href":2023,"rel":2024},"https:\u002F\u002Fwww.mongodb.com\u002Fdocs\u002Fatlas\u002Fdevice-sdks\u002Fdeprecation\u002F",[86],"MongoDB",[55,2027,2028,2032,2035,2037],{},[73,2029,2030,1164],{},[17,2031,1189],{},[73,2033,2034],{},"Retired, including the hosted CodePush service. Analytics and Diagnostics are extended",[73,2036,1195],{},[73,2038,2039],{},[82,2040,1177],{"href":1200,"rel":2041},[86],[55,2043,2044,2050,2058,2061],{},[73,2045,2046,2049],{},[17,2047,2048],{},"Firebase Dynamic Links"," (Google)",[73,2051,2052,2053,2057],{},"Shut down. Clicked links now return a 404 (",[82,2054,2056],{"href":2055},"\u002Fblog\u002Ffirebase-dynamic-links-shutdown-deep-linking-2026\u002F","what replaced it",")",[73,2059,2060],{},"August 25, 2025",[73,2062,2063],{},[82,2064,2067],{"href":2065,"rel":2066},"https:\u002F\u002Ffirebase.google.com\u002Fsupport\u002Fdynamic-links-faq",[86],"Firebase FAQ",[14,2069,2070],{},"The pattern is the same each time. A hosted service that is not the vendor's main business gets folded into something else or switched off, often with a year or more of notice. Apps that kept their data in standard formats, and their logic in their own code, moved in weeks. Apps that leaned on vendor-only features had to be rebuilt.",[44,2072,2074],{"id":2073},"the-2026-options-compared","The 2026 options compared",[49,2076,2077,2098],{},[52,2078,2079],{},[55,2080,2081,2084,2087,2090,2093,2096],{},[58,2082,2083],{},"Backend",[58,2085,2086],{},"Database",[58,2088,2089],{},"Open source",[58,2091,2092],{},"Free tier (checked October 17, 2026)",[58,2094,2095],{},"First paid tier",[58,2097,1486],{},[68,2099,2100,2122,2144,2165,2191],{},[55,2101,2102,2107,2110,2113,2116,2119],{},[73,2103,2104],{},[17,2105,2106],{},"Firebase",[73,2108,2109],{},"Firestore (NoSQL)",[73,2111,2112],{},"No",[73,2114,2115],{},"Spark plan, no payment method needed. Firestore: 1 GiB stored, 50K reads, 20K writes and 20K deletes a day",[73,2117,2118],{},"Blaze, pay as you go (Spark's free usage is included)",[73,2120,2121],{},"Google-managed apps, push via FCM, offline-first mobile",[55,2123,2124,2129,2132,2135,2138,2141],{},[73,2125,2126],{},[17,2127,2128],{},"Supabase",[73,2130,2131],{},"PostgreSQL",[73,2133,2134],{},"Yes (Apache-2.0)",[73,2136,2137],{},"500 MB database, 50,000 monthly active users, 2 active projects, paused after 1 week of inactivity",[73,2139,2140],{},"Pro from $25 a month, including $10 of compute credit",[73,2142,2143],{},"SQL data, row-level security, teams who may self-host later",[55,2145,2146,2151,2154,2156,2159,2162],{},[73,2147,2148],{},[17,2149,2150],{},"Parse Server",[73,2152,2153],{},"MongoDB 7–8 or PostgreSQL 16–18",[73,2155,2134],{},[73,2157,2158],{},"Free to self-host. Back4App's hosted free plan: 25K requests a month, 250 MB of data, 1 GB of files",[73,2160,2161],{},"Back4App MVP at $15 per app a month, billed annually",[73,2163,2164],{},"Old Parse apps, and teams who want the Parse SDKs",[55,2166,2167,2172,2175,2178,2181,2188],{},[73,2168,2169],{},[17,2170,2171],{},"Appwrite",[73,2173,2174],{},"Its own database API",[73,2176,2177],{},"Yes (BSD-3-Clause)",[73,2179,2180],{},"Free cloud plan, or self-host",[73,2182,1534,2183],{},[82,2184,2187],{"href":2185,"rel":2186},"https:\u002F\u002Fappwrite.io\u002Fpricing",[86],"appwrite.io\u002Fpricing",[73,2189,2190],{},"Self-hosted auth, database, storage and functions in one box",[55,2192,2193,2198,2201,2204,2207,2210],{},[73,2194,2195],{},[17,2196,2197],{},"PocketBase",[73,2199,2200],{},"SQLite, in one Go binary",[73,2202,2203],{},"Yes (MIT)",[73,2205,2206],{},"Self-host only",[73,2208,2209],{},"Your own server",[73,2211,2212],{},"Small apps, internal tools, prototypes",[14,2214,2215],{},"Two notes on that table. Parse Server is very much alive: the Parse community shipped version 9.10.5 on October 16, 2026, and it runs on Node.js 22 and 24 (Node 20 reached end of life in April 2026). PocketBase is still pre-1.0 (v0.40.5, released October 8, 2026), so expect breaking changes between versions.",[44,2217,1564],{"id":1563},[245,2219,2220,2226,2232,2238,2244],{},[199,2221,2222,2225],{},[17,2223,2224],{},"You have an old Parse app."," Run Parse Server. Your client SDK calls keep working with few code changes, which was the whole point of the open-source release. Self-host it if you have someone to run MongoDB or PostgreSQL. Otherwise use a hosted Parse provider.",[199,2227,2228,2231],{},[17,2229,2230],{},"You are starting a new mobile app and want the least operations work."," Firebase or Supabase. Choose Firebase for NoSQL documents, Firebase Cloud Messaging and offline persistence. Choose Supabase if your data is relational, if you want SQL, or if you might self-host later.",[199,2233,2234,2237],{},[17,2235,2236],{},"You are leaving Realm Device Sync."," Keep the open-source on-device database if you only needed local storage. If you needed sync, move to a backend that syncs, then test offline edits, conflict handling and reconnects on real devices before you switch users over.",[199,2239,2240,2243],{},[17,2241,2242],{},"You must keep data on your own servers."," Appwrite or Parse Server for a full backend, PocketBase for a small one.",[199,2245,2246,2249],{},[17,2247,2248],{},"You were burned by a shutdown before."," Prefer open source, standard databases (PostgreSQL, MongoDB) and your own domain for every URL your app depends on. Firebase Dynamic Links showed that links on a vendor's domain die with the vendor's product.",[44,2251,2253],{"id":2252},"migrating-off-a-dead-or-dying-backend","Migrating off a dead or dying backend",[14,2255,2256],{},"A backend migration is usually smaller than it looks, if you do it in this order:",[245,2258,2259,2265,2271,2277,2283,2289],{},[199,2260,2261,2264],{},[17,2262,2263],{},"List what the old backend actually did."," Sign-in methods, database tables or collections, file storage, push notifications, scheduled jobs, server-side code (Parse called it Cloud Code) and any webhooks. This list is your scope.",[199,2266,2267,2270],{},[17,2268,2269],{},"Export the data first."," Move the records into a database you control, then point the old API at it if you still can. Parse's own migration tool worked this way, with no downtime.",[199,2272,2273,2276],{},[17,2274,2275],{},"Move files separately."," File storage is often not part of a database export. Copy the files and rewrite their URLs.",[199,2278,2279,2282],{},[17,2280,2281],{},"Plan sign-in carefully."," Find out whether password hashes can be exported and imported. If they can't, users will have to reset their passwords, so tell them in advance.",[199,2284,2285,2288],{},[17,2286,2287],{},"Rebuild server-side code as functions."," Cloud Functions on Firebase, Edge Functions on Supabase, Cloud Code on Parse Server.",[199,2290,2291,2294],{},[17,2292,2293],{},"Ship an app update that talks to the new backend, then switch off the old one."," Keep the old endpoints read-only for one release cycle, because some users update late.",[44,2296,503],{"id":502},[14,2298,2299],{},"App369 is Simon Dziak's studio. He builds and runs Workspace369, a production Flutter and Firebase SaaS, so this advice comes from running a live backend, not from a vendor brochure.",[196,2301,2302,2308,2316],{},[199,2303,2304,2305,2307],{},"An app that broke when its backend changed: the ",[82,2306,510],{"href":509}," diagnoses one issue for $450 and fixes it for $1,200, both fixed price.",[199,2309,2310,2311,2315],{},"Moving data or connecting a new backend to Stripe, a CRM or another system: ",[82,2312,2314],{"href":2313},"\u002Ffixed-price\u002Fapi-integration\u002F","API Integration",", $1,200 fixed price, 5 business days.",[199,2317,2318,2319,1725],{},"Already on Firebase and the bill is climbing: the ",[82,2320,1724],{"href":1723},{"title":307,"searchDepth":320,"depth":320,"links":2322},[2323,2324,2325,2326,2327],{"id":1138,"depth":320,"text":1139},{"id":2073,"depth":320,"text":2074},{"id":1563,"depth":320,"text":1564},{"id":2252,"depth":320,"text":2253},{"id":502,"depth":320,"text":503},"Parse, StackMob, Azure Mobile Services, Kinvey, Telerik Platform, Appcelerator, Realm Sync and App Center are gone. A dated record of what shut down, plus the 2026 options for your app backend (Firebase, Supabase, Parse Server, Appwrite, PocketBase) with prices checked October 17, 2026.",[2330,2333,2336,2339,2342,2345,2348],{"question":2331,"answer":2332},"What replaced Parse after it shut down?","Facebook open-sourced Parse Server when it announced the shutdown on January 28, 2016. It is still maintained by the Parse community (version 9.10.5 shipped October 16, 2026) and runs on Node.js with MongoDB or PostgreSQL. You can self-host it or use a hosted Parse provider such as Back4App.",{"question":2334,"answer":2335},"What happened to StackMob?","PayPal bought StackMob in December 2013. Its co-founders announced the shutdown on February 12, 2014, and the service stopped running on May 11, 2014. Today stackmob.com is only a domain-protection placeholder. The 2026 options on this page, such as Firebase, Supabase or Parse Server, are where a StackMob-era app would go now.",{"question":2337,"answer":2338},"What happened to Azure Mobile Services?","Microsoft moved it into Azure App Service. Its May 10, 2016 post said new customers could no longer create Mobile Services, Microsoft would start migrating remaining sites on September 1, 2016, and the service would be shut down in May 2017, with apps moving to App Service Mobile Apps. The old azure.microsoft.com Mobile Services documentation links now return a 404.",{"question":2340,"answer":2341},"Is Kinvey still available?","Not at its old address. Progress announced it had acquired Kinvey on June 28, 2017. On October 17, 2026, kinvey.com had no website address in DNS, and progress.com\u002Fkinvey redirected to a community page that returned a 404. If an app still depends on Kinvey, plan a migration now.",{"question":2343,"answer":2344},"What happened to Appcelerator?","Axway, which owned Appcelerator, ended support for the Titanium SDK on March 1, 2022 and discontinued its Mobile Backend Services on September 1, 2022. Axway handed the Titanium SDK to its community as an open-source project. For the backend, Firebase, Supabase and Parse Server are the common replacements.",{"question":2346,"answer":2347},"What should I use instead of Realm Device Sync?","MongoDB ended Atlas Device Sync on September 30, 2025. The Realm on-device database continues as open source without sync. For a synced backend, Firebase (Firestore with offline persistence) and Supabase are the common replacements. Test offline behaviour in your own app before you commit.",{"question":2349,"answer":2350},"Firebase or Supabase for a new mobile app?","Firebase if you want Google-managed NoSQL, push notifications and a free Spark plan with no payment method. Supabase if you want PostgreSQL, SQL queries and an open-source stack you can self-host. Supabase Pro starts at $25 a month, and Firebase Blaze is pay as you go.",{"readingTimeStats":2352},{"text":556,"minutes":2353,"time":2354,"words":2355},5.585,335100,1117,"\u002Fblog\u002Fparse-kinvey-backend-as-a-service-alternatives-2026","parse alternatives","9 min",[2360,2361,2362],"how-to-cut-your-firebase-bill-2026","firebase-security-guide-2026","supabase-permission-denied-new-tables-october-30-2026",{"title":1841,"description":2328},[2365,2367,2370,2372,2374,2376,2378,2380,2382,2384,2386,2388,2389,2390,2393,2396,2399],{"title":2366,"url":1891},"Parse blog, \"Moving On\" (January 28, 2016), Wayback Machine copy",{"title":2368,"url":2369},"Parse Server on GitHub (releases, supported databases)","https:\u002F\u002Fgithub.com\u002Fparse-community\u002Fparse-server",{"title":2371,"url":1912},"TechCrunch, \"PayPal Is Buying StackMob For Christmas\" (December 17, 2013)",{"title":2373,"url":1916},"The Next Web, PayPal-owned StackMob to shut down on May 11 (February 12, 2014)",{"title":2375,"url":1921},"VentureBeat, PayPal closing down backend service StackMob months after buying it (February 12, 2014)",{"title":2377,"url":1940},"Microsoft Azure blog, \"Transition of Azure Mobile Services\" (May 10, 2016)",{"title":2379,"url":1961},"Progress, \"Progress Acquires the Leading Provider of Backend-as-a-Service\" (June 28, 2017)",{"title":2381,"url":1981},"Progress, Telerik Platform retirement notice on the appbuilder npm package",{"title":2383,"url":2002},"Axway, \"Titanium SDK End-of-Support\" (February 24, 2021)",{"title":2385,"url":2023},"MongoDB, Atlas Device SDKs deprecation",{"title":2387,"url":2065},"Firebase Dynamic Links FAQ (shutdown date)",{"title":1770,"url":1200},{"title":1810,"url":1811},{"title":2391,"url":2392},"Supabase pricing","https:\u002F\u002Fsupabase.com\u002Fpricing",{"title":2394,"url":2395},"Back4App backend pricing","https:\u002F\u002Fwww.back4app.com\u002Fpricing\u002Fbackend-as-a-service",{"title":2397,"url":2398},"Appwrite on GitHub","https:\u002F\u002Fgithub.com\u002Fappwrite\u002Fappwrite",{"title":2400,"url":2401},"PocketBase on GitHub","https:\u002F\u002Fgithub.com\u002Fpocketbase\u002Fpocketbase","blog\u002Fparse-kinvey-backend-as-a-service-alternatives-2026","parse alternatives, parse.com, stackmob alternative, stackmob shut down, azure mobile services, azure mobile services alternative, kinvey alternatives, telerik platform, backend as a service, baas, parse server, firebase vs supabase, realm device sync end of life, appcelerator, titanium sdk, mbaas, mobile backend",[2405,2406,2407,2408,2409],"Parse was retired on January 28, 2017. Its open-source successor, Parse Server, is still maintained: version 9.10.5 shipped on October 16, 2026.","Progress bought Kinvey in 2017 and retired Telerik Platform on May 10, 2018. As of October 17, 2026, kinvey.com has no website and progress.com\u002Fkinvey ends in a 404.","MongoDB removed Atlas Device Sync and the Realm-based Device SDKs on September 30, 2025. The on-device database lives on as open source, without sync.","For a new app in 2026, the realistic choices are Firebase, Supabase, Parse Server (self-hosted or on Back4App), Appwrite and PocketBase.","Pick the one you could leave. An open-source backend you can self-host protects you from the next shutdown.","2026-10-18T05:00:00.000Z","https:\u002F\u002Fapp369.com\u002Fblog\u002Fparse-kinvey-backend-as-a-service-alternatives-2026\u002F","WrppRYXGHKBlpNTuC75XuBNoJeafqxpNBiCzAvwyxbY",[2414,2416,2418,2422,2425,2429],{"keyword":5,"url":592,"title":5,"relevance":2415},78,{"keyword":597,"url":1118,"title":597,"relevance":2417},10,{"keyword":2419,"url":2420,"title":2419,"relevance":2421},"Glitch Shut Down: Where to Build and Host Small Web Apps in 2026","https:\u002F\u002Fapp369.com\u002Fblog\u002Fglitch-shut-down-where-to-host-web-apps-2026\u002F",9,{"keyword":2423,"url":2424,"title":2423,"relevance":2421},"Flutter vs Native in 2026: An Honest Decision Guide","https:\u002F\u002Fapp369.com\u002Fblog\u002Fflutter-vs-native-app-development-2026\u002F",{"keyword":2426,"url":2427,"title":2426,"relevance":2428},"Firebase Deprecations: Every Shutdown Date, 2024 to 2027","https:\u002F\u002Fapp369.com\u002Fblog\u002Ffirebase-deprecations-shutdown-dates-2026\u002F",7,{"keyword":2430,"url":2431,"title":2430,"relevance":2428},"FCM Legacy API Shutdown: Fixing Push and the 2027 Deadline","https:\u002F\u002Fapp369.com\u002Fblog\u002Ffcm-legacy-api-shutdown-http-v1-migration-2026\u002F",1792307201158]