[{"data":1,"prerenderedAt":463},["ShallowReactive",2],{"\u002Fblog\u002Fexpo-flutter-build-errors-fixes-2026\u002F":3,"\u002Fblog\u002Fexpo-flutter-build-errors-fixes-2026\u002F-related":432,"\u002Fblog\u002Fexpo-flutter-build-errors-fixes-2026\u002F-resources":441},{"id":4,"title":5,"author":6,"body":10,"canonical":367,"category":368,"checker":367,"createdAt":369,"description":370,"disclosure":371,"extension":372,"faq":373,"heroActions":386,"howTo":367,"lastVerified":367,"location":391,"meta":392,"navigation":398,"ogImage":367,"path":399,"primaryKeyword":400,"readingTime":401,"related":367,"seo":402,"seoTitle":367,"sources":403,"stem":422,"tags":423,"takeaways":424,"updatedAt":369,"url":430,"__hash__":431},"blog\u002Fblog\u002Fexpo-flutter-build-errors-fixes-2026.md","Expo and Flutter Build Errors: 12 Fixes (2026)",{"name":7,"social":8},"Simon Dziak",{"twitter":9},"@SzymonDziak",{"type":11,"value":12,"toc":340},"minimark",[13,21,27,32,35,40,64,68,81,85,98,102,119,123,130,134,137,141,158,162,179,183,190,194,205,209,212,216,233,237,250,254,257,261,274,278,281,307,318,322],[14,15,16,20],"p",{},[17,18,19],"strong",{},"Short answer:"," a mobile build error tells you which layer failed: the cloud build, the native iOS or Android toolchain, the store setup, or the release build itself. Find your error below; each one links to a full fix page checked against the documentation from Expo, Flutter, Apple, Google, Firebase or RevenueCat.",[14,22,23,26],{},[17,24,25],{},"Mobile build errors are easiest to fix once you know whether the build, the store or the running app failed."," The 12 errors below stop Expo and Flutter apps from building, reaching testers or working after release, including apps generated by AI builders. Facts about each tool come from its own documentation, as checked on the linked fix page; the advice on what to do and in which order is App369’s.",[28,29,31],"h2",{"id":30},"expo-and-eas","Expo and EAS",[14,33,34],{},"Expo apps fail in five places: the EAS cloud build, the release build, EAS Update, Expo Go and push notifications. Each has its own fix page.",[36,37,39],"h3",{"id":38},"eas-build-failed-but-the-app-runs-locally","EAS build failed, but the app runs locally",[14,41,42,49,50,54,55,58,59,63],{},[43,44,48],"a",{"href":45,"rel":46},"https:\u002F\u002Fdocs.expo.dev\u002Fbuild-reference\u002Ftroubleshooting\u002F",[47],"nofollow","Expo’s troubleshooting guide"," says: “When you run eas build, your project’s files are uploaded to Expo’s build servers. However, any file or directory mentioned in the .gitignore is not uploaded.” Values from ",[51,52,53],"code",{},".env"," are missing for the same reason, so add them as EAS environment variables. If the JavaScript doesn’t bundle, run ",[51,56,57],{},"npx expo export"," locally to see the error faster. Full steps: ",[43,60,62],{"href":61},"\u002Ffix\u002Fexpo-eas-build-failed\u002F","Expo EAS build failed",".",[36,65,67],{"id":66},"works-in-expo-go-crashes-in-testflight-or-production","Works in Expo Go, crashes in TestFlight or production",[14,69,70,71,76,77,63],{},"Read the crash report first: the Crashes Organizer in Xcode for iOS, the Play Console for Android. Then, as ",[43,72,75],{"href":73,"rel":74},"https:\u002F\u002Fdocs.expo.dev\u002Fdebugging\u002Fruntime-issues\u002F",[47],"Expo’s runtime debugging guide"," puts it, “Running your app in production mode locally will show errors that normally wouldn’t be thrown.” Full steps: ",[43,78,80],{"href":79},"\u002Ffix\u002Fexpo-app-crashes-in-production\u002F","Expo app crashes in production",[36,82,84],{"id":83},"eas-update-published-app-still-shows-the-old-version","EAS Update published, app still shows the old version",[14,86,87,88,93,94,63],{},"By default, according to ",[43,89,92],{"href":90,"rel":91},"https:\u002F\u002Fdocs.expo.dev\u002Feas-update\u002Fdownload-updates\u002F",[47],"Expo’s download updates docs",", “the end user will only load the update when they cold boot the app after an update has been published, and then at some point kill and restart the app.” If restarts don’t help, check the runtime version and the channel the build uses. Full steps: ",[43,95,97],{"href":96},"\u002Ffix\u002Fexpo-eas-update-not-showing\u002F","EAS Update not showing",[36,99,101],{"id":100},"project-is-incompatible-with-this-version-of-expo-go","“Project is incompatible with this version of Expo Go”",[14,103,104,105,110,111,114,115,63],{},"Each Expo Go build runs one SDK version. According to ",[43,106,109],{"href":107,"rel":108},"https:\u002F\u002Fdocs.expo.dev\u002Ftroubleshooting\u002Fexpo-go-version-mismatch\u002F",[47],"Expo’s version mismatch guide",", “Expo Go on the Apple App Store stops at SDK 54, and SDK 55 and later are not available there.” For SDK 55 and later on iPhone, build Expo Go with ",[51,112,113],{},"eas go"," or use a development build. Full steps: ",[43,116,118],{"href":117},"\u002Ffix\u002Fexpo-go-project-incompatible\u002F","Expo Go project incompatible",[36,120,122],{"id":121},"expo-push-notifications-not-arriving","Expo push notifications not arriving",[14,124,125,126,63],{},"Read the push ticket and the push receipt before changing anything: the receipt says whether Apple or Google took the message, with an error code if not. Works in development but not in the store build points to production credentials that are wrong or missing. Full steps: ",[43,127,129],{"href":128},"\u002Ffix\u002Fexpo-push-notifications-not-working\u002F","Expo push notifications not working",[28,131,133],{"id":132},"flutter-and-ios","Flutter and iOS",[14,135,136],{},"iOS builds fail on the native side: CocoaPods, push setup, code signing and App Store Connect. These four errors come from the native iOS toolchain and App Store Connect, not from Dart.",[36,138,140],{"id":139},"flutter-ios-build-fails-at-pod-install","Flutter iOS build fails at pod install",[14,142,143,144,147,148,153,154,63],{},"A plugin upgrade asks for a newer native pod than ",[51,145,146],{},"ios\u002FPodfile.lock"," records. According to the ",[43,149,152],{"href":150,"rel":151},"https:\u002F\u002Fguides.cocoapods.org\u002Fusing\u002Fpod-install-vs-update.html",[47],"CocoaPods guide",", “When you run pod install, it only resolves dependencies for pods that are not already listed in the Podfile.lock.” Update just the pod it names, or raise the iOS deployment target if the output asks for it. Full steps: ",[43,155,157],{"href":156},"\u002Ffix\u002Fflutter-pod-install-failed\u002F","Flutter pod install failed",[36,159,161],{"id":160},"apns-token-has-not-been-set-yet","“APNS token has not been set yet”",[14,163,164,165,170,171,174,175,63],{},"FCM was called before iOS delivered the APNs token. ",[43,166,169],{"href":167,"rel":168},"https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fcloud-messaging\u002Fflutter\u002Fclient",[47],"Firebase’s Flutter guide"," says: “In iOS SDK 10.4.0 and higher, it is required that the APNs token is available before making API requests.” Request permission, wait for ",[51,172,173],{},"getAPNSToken()",", and check push is enabled in Xcode with an APNs key uploaded to Firebase. Full steps: ",[43,176,178],{"href":177},"\u002Ffix\u002Fflutter-apns-token-not-set\u002F","Flutter APNS token not set",[36,180,182],{"id":181},"signing-for-runner-requires-a-development-team","Signing for “Runner” requires a development team",[14,184,185,186,63],{},"No team is selected for the Runner target. In Xcode, open Signing & Capabilities and pick your team; if it isn’t listed, add the Apple account you use for the Apple Developer Program. Check the Bundle Identifier matches the App ID you registered. Full steps: ",[43,187,189],{"href":188},"\u002Ffix\u002Fxcode-signing-requires-development-team\u002F","Xcode signing requires a development team",[36,191,193],{"id":192},"testflight-build-stuck-on-missing-compliance","TestFlight build stuck on “Missing Compliance”",[14,195,196,197,200,201,63],{},"Each new version waits for the export compliance answers before testers can install it. Answer them on the build in App Store Connect, and add ",[51,198,199],{},"ITSAppUsesNonExemptEncryption"," to Info.plist so later builds don’t ask again. Full steps: ",[43,202,204],{"href":203},"\u002Ffix\u002Ftestflight-missing-compliance\u002F","TestFlight Missing Compliance",[28,206,208],{"id":207},"android","Android",[14,210,211],{},"Android build and network errors can appear after a tool update or an Android version change, with no change to your code. These two errors are specific to Android.",[36,213,215],{"id":214},"unsupported-class-file-major-version","“Unsupported class file major version”",[14,217,218,219,224,225,228,229,63],{},"The ",[43,220,223],{"href":221,"rel":222},"https:\u002F\u002Fdocs.flutter.dev\u002Frelease\u002Fbreaking-changes\u002Fandroid-java-gradle-migration-guide",[47],"Flutter Java and Gradle guide"," says this “is an indication that your Java version is newer than the version of Gradle you are running can handle.” Flutter builds with the Java bundled with Android Studio, so an Android Studio update can cause it. Run ",[51,226,227],{},"flutter analyze --suggestions"," and update Gradle. Full steps: ",[43,230,232],{"href":231},"\u002Ffix\u002Fflutter-unsupported-class-file-major-version\u002F","Unsupported class file major version",[36,234,236],{"id":235},"http-requests-blocked-cleartext-not-permitted","http:\u002F\u002F requests blocked: cleartext not permitted",[14,238,239,240,245,246,63],{},"According to ",[43,241,244],{"href":242,"rel":243},"https:\u002F\u002Fdeveloper.android.com\u002Fprivacy-and-security\u002Fsecurity-config",[47],"Android’s network security docs",", “Starting with Android 9 (API level 28), cleartext support is disabled by default.” Serve the API over HTTPS, or allow cleartext only for one domain in a Network Security Configuration. Full steps: ",[43,247,249],{"href":248},"\u002Ffix\u002Fandroid-http-requests-blocked-cleartext\u002F","Android cleartext blocked",[28,251,253],{"id":252},"in-app-purchases","In-app purchases",[14,255,256],{},"Purchases depend on store agreements and product setup as much as on code, so a store build can show no products with nothing wrong in the app.",[36,258,260],{"id":259},"revenuecat-products-could-not-be-fetched","RevenueCat: products could not be fetched",[14,262,263,264,269,270,63],{},"Check the store agreements and banking, that product IDs match exactly, and that each platform uses its own RevenueCat API key. On Android, ",[43,265,268],{"href":266,"rel":267},"https:\u002F\u002Fwww.revenuecat.com\u002Fdocs\u002Fofferings\u002Ftroubleshooting-offerings",[47],"RevenueCat’s docs"," say: “Google Play requires all apps to be published on a closed track before products can be fetched, even when just testing.” Full steps: ",[43,271,273],{"href":272},"\u002Ffix\u002Frevenuecat-products-could-not-be-fetched\u002F","RevenueCat products could not be fetched",[28,275,277],{"id":276},"which-to-check-first","Which to check first",[14,279,280],{},"The fastest route is the first error in the build log, not the last. App369’s full order for a mobile app that just stopped building or started crashing:",[282,283,284,288,291,301,304],"ol",{},[285,286,287],"li",{},"Note where it fails: the cloud build, the local native build, the store upload, or the app at runtime.",[285,289,290],{},"Read the first error in the build log, and search for the exact message.",[285,292,293,294,297,298,300],{},"Compare what the build server sees with your machine: files in ",[51,295,296],{},".gitignore",", ",[51,299,53],{}," values, Java and CocoaPods versions.",[285,302,303],{},"For a crash, read the crash report, then run a release build locally.",[285,305,306],{},"Check what changed since the last good build: packages, SDK version, Android Studio or Xcode.",[14,308,218,309,313,314,63],{},[43,310,312],{"href":311},"\u002Ffix\u002F","\u002Ffix\u002F index"," lists every fix by platform. For testing before release, see the ",[43,315,317],{"href":316},"\u002Fblog\u002Fmobile-app-beta-testing-crash-reporting-tools-2026\u002F","mobile app beta testing and crash reporting guide",[28,319,321],{"id":320},"need-a-hand","Need a hand?",[14,323,324,325,329,330,334,335,339],{},"App369 fixes single build and release bugs at a fixed price. If one bug is the whole problem, the ",[43,326,328],{"href":327},"\u002Ffixed-price\u002Fflutter-firebase-bug-fix\u002F","App Fix Ticket"," covers it in two fixed-price steps: a $450 diagnosis that finds the root cause and gives you a fixed quote for the fix, then the fix itself. If the app was built with an AI builder and more is going on, the ",[43,331,333],{"href":332},"\u002Ffixed-price\u002Fai-app-rescue\u002F","AI-Built App Rescue"," starts with a Launch Check of the whole app. Or ",[43,336,338],{"href":337},"\u002Fcontact\u002F","describe the problem"," and get a written quote.",{"title":341,"searchDepth":342,"depth":342,"links":343},"",2,[344,352,358,362,365,366],{"id":30,"depth":342,"text":31,"children":345},[346,348,349,350,351],{"id":38,"depth":347,"text":39},3,{"id":66,"depth":347,"text":67},{"id":83,"depth":347,"text":84},{"id":100,"depth":347,"text":101},{"id":121,"depth":347,"text":122},{"id":132,"depth":342,"text":133,"children":353},[354,355,356,357],{"id":139,"depth":347,"text":140},{"id":160,"depth":347,"text":161},{"id":181,"depth":347,"text":182},{"id":192,"depth":347,"text":193},{"id":207,"depth":342,"text":208,"children":359},[360,361],{"id":214,"depth":347,"text":215},{"id":235,"depth":347,"text":236},{"id":252,"depth":342,"text":253,"children":363},[364],{"id":259,"depth":347,"text":260},{"id":276,"depth":342,"text":277},{"id":320,"depth":342,"text":321},null,"AI & Technology","2026-11-02T12:00:00.000Z","Expo or Flutter build failing, or the app crashes after release? 12 mobile build errors, from EAS builds and pod install to TestFlight and Gradle, and each fix.","App369 publishes this guide and sells a fixed-price App Fix Ticket for single bugs like these.","md",[374,377,380,383],{"question":375,"answer":376},"Why does my Expo app build locally but fail on EAS Build?","EAS uploads your project without the files listed in .gitignore, which usually includes .env. An import of an ignored file fails, and values from .env are empty unless you add them as EAS environment variables. Check the path in the error against .gitignore.",{"question":378,"answer":379},"Why does my Expo app work in Expo Go but crash in TestFlight?","A release build behaves differently from development, and values from .env may be missing from the build. Read the crash report in Xcode's Crashes Organizer or the Play Console, then run the app locally in production mode to see the error.",{"question":381,"answer":382},"Why did my Flutter Android build break when nothing in the project changed?","Android Studio may have updated the Java it bundles, and Flutter builds with that Java. If the new Java is newer than your Gradle can handle, the build fails with \"Unsupported class file major version\". Run flutter analyze --suggestions and update Gradle to a compatible version.",{"question":384,"answer":385},"Can App369 fix a mobile build error for me?","Yes. The App Fix Ticket covers one reproducible bug in two fixed-price steps: a $450 diagnosis that finds the root cause and gives you a fixed quote for the fix, then the fix itself.",[387,389],{"label":388,"to":311},"All fixes",{"label":390,"to":327},"Start with a $450 diagnosis","Miami, FL",{"readingTimeStats":393},{"text":394,"minutes":395,"time":396,"words":397},"6 min read",5.7,342000,1140,true,"\u002Fblog\u002Fexpo-flutter-build-errors-fixes-2026","expo build errors","6 min",{"title":5,"description":370},[404,406,408,410,412,414,416,418,420],{"title":405,"url":45},"Expo docs, Troubleshoot build errors and crashes",{"title":407,"url":73},"Expo docs, Debugging runtime issues",{"title":409,"url":90},"Expo docs, Download updates",{"title":411,"url":107},"Expo docs, Expo Go version mismatch",{"title":413,"url":150},"CocoaPods guides, pod install vs. pod update",{"title":415,"url":167},"Firebase docs, Get started with FCM in Flutter apps",{"title":417,"url":221},"Flutter docs, Android Java Gradle migration guide",{"title":419,"url":242},"Android Developers, Network security configuration",{"title":421,"url":266},"RevenueCat docs, Troubleshooting empty products and offerings","blog\u002Fexpo-flutter-build-errors-fixes-2026","expo build errors, flutter build errors, eas build failed, expo app crashes in production, flutter pod install failed, unsupported class file major version, testflight missing compliance, revenuecat products could not be fetched",[425,426,427,428,429],"EAS Build uploads your project without anything listed in .gitignore, so a file or .env value that exists only on your machine is missing on the build server.","Each Expo Go build runs one SDK version, and Expo Go on the Apple App Store stops at SDK 54.","An EAS Update only reaches builds with the same runtime version, on a channel linked to the branch you published to.","\"Unsupported class file major version\" means the Java running your Flutter build is newer than your Gradle can handle.","From Android 9, apps can't use plain http:\u002F\u002F addresses unless they opt in for that domain.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fexpo-flutter-build-errors-fixes-2026\u002F","j-a7ajN66zRCiuLPQxbpGeoNTsH4buDojwnpDsuDLcI",[433,437],{"path":434,"title":435,"description":436,"category":368},"\u002Fblog\u002Fai-api-errors-openai-claude-gemini-mcp-fixes-2026","AI API Errors: 7 OpenAI, Claude, Gemini and MCP Fixes (2026)","AI feature broken by a 401, 429 or 529, or an MCP connector that won't connect? 7 OpenAI, Anthropic, Gemini and MCP errors, what each means and how to fix it.",{"path":438,"title":439,"description":440,"category":368},"\u002Fblog\u002Fapp-store-google-play-rejections-fixes-2026","App Store and Google Play Rejections: 13 Fixes (2026)","App rejected by Apple or Google Play? 13 rejections, from Guidelines 2.1, 4.3 and 5.1.1 to Play's Data safety form and 12-tester rule, and how to fix each.",[442,444,448,452,456,460],{"keyword":5,"url":430,"title":5,"relevance":443},65,{"keyword":445,"url":446,"title":445,"relevance":447},"Flutter iOS Build Failed After an Upgrade? Fix CocoaPods and Xcode Errors (2026)","https:\u002F\u002Fapp369.com\u002Fblog\u002Fflutter-ios-build-failed-after-upgrade-2026\u002F",20,{"keyword":449,"url":450,"title":449,"relevance":451},"Next.js and Web Build Errors: 8 Fixes (2026)","https:\u002F\u002Fapp369.com\u002Fblog\u002Fnextjs-web-build-errors-fixes-2026\u002F",13,{"keyword":453,"url":454,"title":453,"relevance":455},"Flutter Android Build Fails After AGP 9: The Fix","https:\u002F\u002Fapp369.com\u002Fblog\u002Fflutter-android-gradle-plugin-9-build-failed-fix-2026\u002F",12,{"keyword":457,"url":458,"title":457,"relevance":459},"Firestore and Cloud Functions Errors: 11 Fixes (2026)","https:\u002F\u002Fapp369.com\u002Fblog\u002Ffirestore-cloud-functions-errors-fixes-2026\u002F",11,{"keyword":461,"url":462,"title":461,"relevance":459},"Vercel Errors: 9 Deploy and Function Fixes (2026)","https:\u002F\u002Fapp369.com\u002Fblog\u002Fvercel-errors-deploy-function-fixes-2026\u002F",1793632892129]