FCE-3330: restore mobile EAS build gate (revert mobile deletion from #555)#558
Merged
Conversation
The mobile_eas_build workflow is the pre-release mobile build gate (label a PR 'eas build' -> production EAS build of fishjam-chat linked to the SDK via workspace:*, submit to TestFlight). fishjam-chat was its only build target, so deleting it broke the gate. Restore both; the web deploy workflows stay removed.
Contributor
There was a problem hiding this comment.
Pull request overview
Restores the previously-deleted React Native “fishjam-chat” example app and the GitHub Actions EAS build workflow so PRs labeled eas build can again gate unreleased SDK changes via a real native build target.
Changes:
- Restores
.github/workflows/mobile_eas_build.yamlto trigger EAS production builds on PR label. - Re-adds
examples/mobile-client/fishjam-chat/(Expo app + config/assets) that links the SDK viaworkspace:*. - Updates workspace lockfile to include the restored app (per PR description).
Reviewed changes
Copilot reviewed 33 out of 39 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/mobile_eas_build.yaml | Reintroduces PR-label-triggered EAS build + TestFlight submit + PR comment links. |
| examples/mobile-client/fishjam-chat/.env.example | Documents required Expo public env vars for the example. |
| examples/mobile-client/fishjam-chat/.eslintrc.js | Adds app-local ESLint configuration for the example. |
| examples/mobile-client/fishjam-chat/.gitignore | Ignores Expo artifacts and generated native folders for the example. |
| examples/mobile-client/fishjam-chat/README.md | Restores setup/development instructions for the example app. |
| examples/mobile-client/fishjam-chat/app.json | Restores Expo app config, plugins, permissions, and EAS project metadata. |
| examples/mobile-client/fishjam-chat/babel.config.js | Restores Babel config and @ module aliasing for the app. |
| examples/mobile-client/fishjam-chat/eas.json | Restores EAS build/submit profiles used by the workflow. |
| examples/mobile-client/fishjam-chat/index.js | Expo router entrypoint for monorepo setup. |
| examples/mobile-client/fishjam-chat/package.json | Restores app dependencies and scripts (workspace-linked SDK). |
| examples/mobile-client/fishjam-chat/prettier.config.js | Restores example-local prettier config delegating to shared config. |
| examples/mobile-client/fishjam-chat/tsconfig.json | Restores strict TS config + @/* path mapping. |
| examples/mobile-client/fishjam-chat/utils/Colors.ts | Adds shared color constants used by UI components/screens. |
| examples/mobile-client/fishjam-chat/utils/fishjamIdStore.ts | Adds simple callback store to update Fishjam ID at runtime. |
| examples/mobile-client/fishjam-chat/hooks/useMediaPermissions.ts | Adds camera/microphone permission management hook. |
| examples/mobile-client/fishjam-chat/components/Button.tsx | Restores reusable button component. |
| examples/mobile-client/fishjam-chat/components/DismissKeyboard.tsx | Adds keyboard-dismiss wrapper for screens with inputs. |
| examples/mobile-client/fishjam-chat/components/InCallButton.tsx | Restores in-call icon button component. |
| examples/mobile-client/fishjam-chat/components/NoCameraView.tsx | Restores “no camera” placeholder tile component. |
| examples/mobile-client/fishjam-chat/components/TextInput.tsx | Restores styled text input component. |
| examples/mobile-client/fishjam-chat/components/Typo.tsx | Restores typography wrapper + shared text styles. |
| examples/mobile-client/fishjam-chat/components/VideosGrid.tsx | Restores peer video grid rendering + quality controls. |
| examples/mobile-client/fishjam-chat/components/index.ts | Restores barrel exports for components. |
| examples/mobile-client/fishjam-chat/app/_layout.tsx | Restores FishjamProvider root + router stack configuration. |
| examples/mobile-client/fishjam-chat/app/index.tsx | Restores default redirect into tab layout. |
| examples/mobile-client/fishjam-chat/app/(tabs)/_layout.tsx | Restores bottom tab navigation layout. |
| examples/mobile-client/fishjam-chat/app/(tabs)/livestream.tsx | Restores Livestream entry screen (viewer/streamer/screen-share routes). |
| examples/mobile-client/fishjam-chat/app/(tabs)/room.tsx | Restores VideoRoom entry screen + staging/prod selection. |
| examples/mobile-client/fishjam-chat/app/livestream/viewer.tsx | Restores livestream viewer screen wiring to SDK hooks. |
| examples/mobile-client/fishjam-chat/app/livestream/streamer.tsx | Restores livestream publishing screen wiring to SDK hooks. |
| examples/mobile-client/fishjam-chat/app/livestream/screen-sharing.tsx | Restores screen-sharing publishing flow wiring to SDK hooks. |
| examples/mobile-client/fishjam-chat/app/room/[roomName].tsx | Restores in-room call UI (CallKit/foreground service/screen-share toggles). |
| examples/mobile-client/fishjam-chat/app/room/preview.tsx | Restores pre-join preview flow (permissions + device init + join). |
| examples/mobile-client/fishjam-chat/assets/images/adaptive-icon.png | Restores app asset. |
| examples/mobile-client/fishjam-chat/assets/images/favicon.png | Restores app asset. |
| examples/mobile-client/fishjam-chat/assets/images/fishjam-logo.png | Restores app asset. |
| examples/mobile-client/fishjam-chat/assets/images/icon.png | Restores app asset. |
| examples/mobile-client/fishjam-chat/assets/images/splash.png | Restores app asset. |
| yarn.lock | Restores workspace resolution for the re-added app (per PR description). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
MiloszFilimowski
approved these changes
Jun 30, 2026
Remove dead reset-project script from fishjam-chat example (referenced ./scripts/reset-project.js, which does not exist).
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.
Why
#555 deleted
examples/mobile-client/fishjam-chatand.github/workflows/mobile_eas_build.yaml.That workflow was not an orphan like the web deploy workflows — it's the pre-release mobile build gate: labelling a PR
eas buildtriggers a production EAS build of the fishjam-chat app, which links the SDK via@fishjam-cloud/react-native-client: workspace:*. That proves unreleased local SDK changes still compile + autolink into a shippable native app, then submits iOS to TestFlight and comments the download links.fishjam-chat was the only mobile app in the repo, so deleting it removed the only build target and broke the gate. Nothing replaced it — the migrated
fishjam-cloud/examplesrepo has no EAS CI and consumes the published SDK, so it can't gate local changes.Changes
Restores, unchanged, from before the deletion commit:
.github/workflows/mobile_eas_build.yamlexamples/mobile-client/fishjam-chat/(37 files, incl.eas.json)yarn.lockworkspace resolution for the appThe web deploy deletions from #555 (
fishjam-chat.yaml→ nginx,livestreaming-example.yaml→ GitHub Pages) stay removed — those were genuinely orphaned (web sources gone since #504).