The Poker Engine mobile app is a native app for iOS and Android, connected to one site’s server. The first part of this guide covers what a player can do in the app. The second part is for operators and explains how the app is built, distributed, and kept up to date.
Supported Platforms
| Platform | Minimum version | Notes |
|---|---|---|
| iOS | iOS 15.0 | Tablets are supported |
| Android | API level 26 |
There is no web build of the app. Players on a browser use the website, described in the Player Guide. The Agent Portal is web only.
For Players
Signing In
The app opens on Sign In. Enter your Username and Password, then tap Sign In.
To create an account, tap Register and fill in your username, email address, password, and password confirmation.
The sign-in screen has no password reset link. If you’ve forgotten your password, reset it on the website.
Two-Factor Authentication
If two-factor authentication is on, the Two-Factor Authentication screen appears after your password:
- Enter the 6-digit code from your authenticator app. It submits automatically when all six digits are entered.
- Tap Use backup code to enter a backup code instead, then tap Verify.
- Tap Back to login to start again.
To turn it on or off, go to Settings and open the Security section.
Face ID and Fingerprint Unlock
On a device with biometrics, the app offers to enable biometric unlock after your first successful sign-in. Once enabled, the app asks for your biometric each time it starts. If that fails or you cancel, sign in with your password. You can change this at any time under Settings > Security.
Navigation
The tab bar has four tabs:
| Tab | What it shows |
|---|---|
| Lobby | Cash games, tournaments, and private games |
| Profile | Your balances, statistics, and hand history |
| Cashier | Deposits, withdrawals, and transaction history. Hidden when the site has the cashier turned off |
| Settings | Appearance, sound, notifications, security, and privacy |
The Lobby
The Lobby has up to three sections. Tournaments and Private only appear when the site has those features turned on.
Cash Games
Each table shows its game, stakes, buy-in, seats, and status. Narrow the list with these filters:
| Filter | Options |
|---|---|
| Game Type | All, Hold’em, Omaha, PLO5, Omaha Hi-Lo, Short Deck, Stud, Stud Hi-Lo, Mixed |
| Stakes | All, Micro, Low, Medium, High |
| Speed | All, Normal, Turbo, Hyper-Turbo |
Tap Join Table to play or Watch to spectate. Pull down on the list to refresh it.
Tournaments
The Tournaments section lists tournaments with their buy-in, prize pool or seats awarded, registered players, and start time. Use the Format filter to choose All, Scheduled, or Sit & Go. Tap Register or Unregister on a tournament.
Tap Browse All Tournaments for the full tournament browser, which adds these filters:
| Filter | Options |
|---|---|
| Speed | All, Regular, Turbo, Hyper, Deep Stack |
| Game Type | All, Hold’em, Omaha, O. Hi-Lo, Short Deck, Stud, Stud Hi-Lo |
| Status | All, Registering, Running, Completed |
Before you register, a confirmation shows the Buy-in, Your Balance, and Total.
Private Games
To join a game, type its code under Join a Private Game and tap Join. A preview shows the game type, mode, stakes, buy-in, status, and players. Tap Join Game, then complete the Enter Password prompt. Invite links open the app and fill in the code for you, even if you need to sign in first.
To host a game, tap Create Private Game and set the Table Name, Game Type, Small Blind, Big Blind, Max Players, and Password. When the table is created, tap Go to Table. Your games list lets you copy or share the invite code.
At the Table
The table screen runs full screen and shows the seats, community cards, pot, and action timer. When it’s your turn, the bottom of the screen offers Fold, Check or Call, and Raise or Bet. Raising opens a sizing panel.
From the table you can also open chat and, if you host a private table, copy the invite code. Leaving during a game asks you to confirm with Stay or Leave.
If your connection drops, an overlay shows reconnection progress and lets you try again.
Tournament Play
At a tournament table, a bar at the top shows the level, blinds, ante, and time until the next level. Tap Standings to see remaining players ranked by chips, followed by eliminated players ranked by finishing position.
If you bust out and the tournament allows it, you are offered a rebuy or re-entry with its chips and cost.
Spectating
Watch opens a read-only view of a cash table, marked Watching. There are no action controls, and hole cards are only visible at showdown. Tap Back to stop watching.
Cashier
The Cashier tab shows your Real Money and Virtual Chips balances and has three sections:
- Deposit — Choose from the methods your site offers and enter an amount. Card payments open a secure payment page inside the app. If you cancel, the deposit stays pending and you can retry or check your history. Your balance updates once the payment is confirmed.
- Withdraw — Choose a method, enter the amount and account details, and review the Withdrawal amount, Estimated fee, and You receive figures. MAX fills in your available balance. You can cancel a withdrawal while it’s still pending.
- History — Your transactions, filtered by All, Deposits, Withdrawals, Game, Transfers, or Bonus.
Hand History
Go to Profile > Hand History to see your recent hands, then tap a hand to open its replay.
Profile and Settings
Profile shows your Real Balance and Play Money, your account details, and your Statistics, overall or per game. You can also change your avatar, display name, and password here.
Settings has these sections:
| Section | Options |
|---|---|
| Appearance | Theme, Four-Color Deck, Compact Mode |
| Language | Shown when the site offers more than one language |
| Sound & Haptics | Sound Effects, Volume, Haptic Feedback |
| Chat | Show Chat, Profanity Filter |
| Notifications | Push Notifications, Sound Notifications |
| Security | Biometric unlock and Two-Factor Authentication |
| Rewards | Affiliate Program, when the site has affiliates turned on |
| Data & Privacy | Export My Data, Privacy Policy, Delete Account |
Affiliate Program
Go to Settings > Rewards > Affiliate Program to see your Referral Code, which you can copy or Share. The screen also shows:
- Total Earned, Total Referrals, Active Referrals, and Pending
- Link Clicks and Conversion Rate
- Rank by Referrals and Rank by Earnings
- The players you’ve referred. Tap Load More to see more
For Operators
The app is built with Expo and EAS Build from the packages/mobile directory of the source code. Each site builds and publishes its own copy under its own developer accounts.
Before You Build
Replace the placeholder values with your own before your first build:
| File | Setting | Purpose |
|---|---|---|
eas.json | EXPO_PUBLIC_API_URL in each build profile | The server the app connects to, ending in /api/v1 |
app.json | name, slug, CFBundleDisplayName | App name and project identifier |
app.json | ios.bundleIdentifier, android.package | Your app’s store identifiers |
app.json | ios.associatedDomains, android.intentFilters | The domain used for table, tournament, invite, and hand links |
app.json | extra.privacyPolicyUrl | The link behind Settings > Privacy Policy |
app.json | extra.eas.projectId | Your EAS project, used when requesting push tokens. Not set in the repository |
assets/ | Icon and splash images | App branding |
The API URL is compiled into each build, so changing server address means releasing a new build.
Build Profiles
Builds are defined in eas.json. Run the commands from packages/mobile.
| Profile | Command | Purpose | Distribution | Android output |
|---|---|---|---|---|
development | npm run build:dev | Development client (iOS simulator) | Internal | APK |
preview | npm run build:preview | Internal testing on devices | Internal | APK |
production | npm run build:production | Store release | Store | App bundle |
Each of these commands builds both platforms. They run a pinned version of eas-cli through npx, so a global install isn’t needed. The submit:* scripts below call eas directly, so they do need the CLI installed and logged in.
Build numbers are managed remotely by EAS (appVersionSource: "remote").
Distributing on iOS
You need an Apple Developer account, an app record in App Store Connect that matches your bundle identifier, and your own Apple account details stored as EAS project secrets. eas.json reads them in its submit section. On the first build, EAS prompts you to set up the signing credentials.
| Command | What it does |
|---|---|
npm run submit:ios | Builds the preview profile and submits it to TestFlight |
npm run submit:ios:build-only | Builds only |
npm run submit:ios:submit-only | Submits the latest build |
Add testers in App Store Connect under TestFlight. Internal testers get builds immediately. External testers need Beta App Review.
Distributing on Android
You need a Google Play Developer account, an app in Play Console, and a Google Cloud service account with Play Console release access, with its key stored as an EAS file secret.
Your first app bundle must be uploaded by hand:
- Run
npm run submit:android:build-only. - Download the
.aabfile from the EAS dashboard. - Upload it in Play Console under Internal testing.
After that, use the scripts:
| Command | What it does |
|---|---|
npm run submit:android | Builds the production profile and submits it to the internal track |
npm run submit:android:build-only | Builds only |
npm run submit:android:submit-only | Submits the latest build |
Real-money apps have additional Play Console requirements, including a gambling app application, proof of a license for each target country, and restricting distribution to those regions.
Update Prompts
The app checks GET /api/v1/app/version each time it starts, sending its version in the X-App-Version header. Set the values in Settings > License & Updates, on the Mobile App tab. See License & Updates.
| Setting | Effect in the app |
|---|---|
| Latest Mobile Version | Older versions show a dismissible banner, "Version X is available", with an Update button when a link is set |
| Minimum Supported Mobile Version | Older versions are blocked by a full-screen Update Required message and can’t be used until updated |
| iOS Update URL | The store link opened by the Update and Update Now buttons |
Versions must be in 1.2.3 format and are compared to expo.version in app.json, so raise that value with each release.
Keep these points in mind:
- Set Latest Mobile Version early. Until it’s saved, it defaults to the server’s version, not the app’s. Because the two are numbered separately, an app with a lower version number shows the update banner.
- Android link. The tab has no Android field. Android devices use
updateUrl.androidwhen it’s set and otherwise fall back to the iOS URL. To set it, sendupdateUrl.androidtoPATCH /api/v1/admin/app/config, which requiressettings:edit. - No link set. The blocking screen asks players to update from their app store, and the banner shows no Update button.
- Failed checks don’t block. If the check fails, the app carries on without a prompt.
Device Registration
After sign-in, the app registers for push notifications with POST /api/v1/devices/register, sending deviceType (ios or android), pushToken, and deviceUuid. This is limited to 10 registrations per user every 15 minutes. Players must be signed in, and can only see or remove their own devices through GET /api/v1/devices and DELETE /api/v1/devices/:deviceId.
Features That Affect the App
The app reads your feature toggles from GET /api/v1/config/features when it starts. Turning off cashier, tournaments, privateGames, or affiliates hides the matching area. See Settings — Features Tab.
Related
- Player Guide — playing on the website
- License & Updates — the Mobile App tab
- Settings — feature toggles