[object Object]

← back to Nineoh Guide

Fix EAS install (build 12/13 failure): approve firebase/protobufjs/sharp build scripts via allowBuilds:true — ignored build scripts are a FATAL error in EAS CI (exit 1), only a warning locally

67efe4b64b233491e0e1c8ff1e5aae146cab1b72 · 2026-08-05 16:44:38 -0700 · Steve Abrams

Files touched

Diff

commit 67efe4b64b233491e0e1c8ff1e5aae146cab1b72
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Aug 5 16:44:38 2026 -0700

    Fix EAS install (build 12/13 failure): approve firebase/protobufjs/sharp build scripts via allowBuilds:true — ignored build scripts are a FATAL error in EAS CI (exit 1), only a warning locally
---
 pnpm-workspace.yaml | 27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index ef75bad..8dcf1c6 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,20 +1,15 @@
 packages:
   - "apps/*"
   - "packages/*"
+# Approve native postinstall build scripts. Values MUST be real booleans.
+# On EAS (CI) an unbuilt/ignored build script is a FATAL error (pnpm install
+# exits 1), unlike locally where it is only a warning — that is what killed
+# builds 12 & 13 after Firebase (@firebase/util, protobufjs) was added. A prior
+# auto-fixer wrote this same `allowBuilds` block but with literal
+# "set this to true or false" placeholders, which is invalid — use `true`.
+allowBuilds:
+  '@firebase/util': true
+  protobufjs: true
+  sharp: true
 
-# pnpm@11 treats an UNDECIDED build-script as ERR_PNPM_IGNORED_BUILDS, and EAS's
-# frozen `pnpm install` makes that a FATAL exit-1 at the "Install dependencies"
-# phase (build 12/13 failed exactly here). It is NOT harmless on EAS. These
-# native postinstalls aren't needed for the iOS JS bundle, so record an EXPLICIT
-# "ignore" decision. Doing so also stops the auto-fixer from re-writing a
-# malformed `allowBuilds:` placeholder map (which is what crashed the frozen
-# install in the first place — do NOT add an `allowBuilds:` map here).
-ignoredBuiltDependencies:
-  - "@firebase/util"
-  - protobufjs
-  - sharp
-
-# NOTE: nodeLinker stays ISOLATED (pnpm default). Hoisting collapses the two
-# React versions (web=19, mobile=18.3.1) and breaks Next's build. Instead the
-# mobile app lists the transitive deps Metro needs (e.g. @babel/runtime) as
-# explicit dependencies so they land in apps/mobile/node_modules.
+# NOTE: node-linker=hoisted (see .npmrc) so Metro/EAS can resolve transitive deps.

← 19fb4f5 auto-save: 2026-08-05T16:43:55 (2 files) — eas.json pnpm-wor  ·  back to Nineoh Guide  ·  fix(eas): allowBuilds with real boolean false values — pnpm@ ec52898 →