feat(deploy): add white-label brand system and TestFlight deployment pipeline - #2
Merged
Merged
Conversation
Restructures assets under brands/<id>/ so app.config.ts can resolve identity, icons, and EAS project per brand at build time, and wires up EAS Workflows (preview/update/release) plus deploy/white-label docs so the app can be built and shipped through EAS end-to-end.
- add preview-testflight build/submit profile with auto-submit to ASC - disable export-compliance prompt via ITSAppUsesNonExemptEncryption - bump expo, expo-constants, expo-font, expo-updates to latest patches - exclude .codegraph daemon socket from EAS build uploads
…brand colors - Validate brand.json fields with a shared requireString helper (hex-color checks, optional eas.owner) instead of ad-hoc per-field checks - Trim BrandExtraConfig to what src/ actually consumes (brandId, brandScheme, brandColor) — displayName/appEnv/updateChannel come from expo-constants and eas.json instead - Add lighten() alongside darken() and derive dark-scheme brand/brandStrong/ bubbleOut shades from the single brand.json color instead of hardcoding them - Harden the release workflow's brand-overlay clone step (fail fast on a missing token/brand.json, clean up /tmp) and restructure eas.json submit profiles to share config via "base" + extends - Make create-brand.ts clean up a half-scaffolded folder on failure
- jest.setup.ts: filter RNGH's false-positive "callbacks are worklets and some are not" console.error (inconsistent worklet transform under Jest against RNGH's own precompiled ReanimatedSwipeable.js, not our code) - app.config.ts: skip the brand/appEnv console.log under Jest, keep it for real expo prebuild/EAS runs - ci.yml: bump actions/checkout, actions/setup-node, pnpm/action-setup to their Node-24-compatible majors, clearing the "Node.js 20 is deprecated" annotation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
brands/*/brand.json+ assets) soapp.config.tscan build per-brand iOS/Android identifiers, icons, and colors from a single config source..eas/workflows/*.yml), apreview-testflightbuild/submit profile with auto-submit to App Store Connect, and Expo SDK 57 patch bumps.ITSAppUsesNonExemptEncryption(app only uses OS-provided TLS/Keychain + random UUIDs, no custom crypto).Changes
app.config.ts,app.config.test.ts— brand loading/validation (BrandConfig,validateBrand,APP_ENV_CONFIG) evaluated inline for Expo's config-loader constraintssrc/config/brand.ts,scripts/create-brand.ts— runtime brand access + brand scaffolding scriptbrands/chatbotx/,brands/_template/— brand assets and config, replacing the old flatassets/imagesiconseas.json— newpreview-testflightprofile (build + submit), production submit now includes ASC API key config.eas/workflows/{preview,release,update}.yml— EAS Workflows for CI-driven builds/updatesdocs/deploy.md,docs/white-label.md— deployment and white-label docs.easignore— excludes the local CodeGraph daemon socket from EAS build uploadspackage.json,pnpm-workspace.yaml,pnpm-lock.yaml— Expo/expo-constants/expo-font/expo-updates patch bumps, newbuild:testflightscriptCONTRIBUTING.md,LICENSE— addedTest plan
eas build --profile preview-testflight -p ios --auto-submitsucceeds and lands in TestFlightbrands/chatbotxapp icon, name, and bundle ID render correctly in a preview build