Mobile App

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

PlatformMinimum versionNotes
iOSiOS 15.0Tablets are supported
AndroidAPI 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.

The tab bar has four tabs:

TabWhat it shows
LobbyCash games, tournaments, and private games
ProfileYour balances, statistics, and hand history
CashierDeposits, withdrawals, and transaction history. Hidden when the site has the cashier turned off
SettingsAppearance, 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:

FilterOptions
Game TypeAll, Hold’em, Omaha, PLO5, Omaha Hi-Lo, Short Deck, Stud, Stud Hi-Lo, Mixed
StakesAll, Micro, Low, Medium, High
SpeedAll, 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:

FilterOptions
SpeedAll, Regular, Turbo, Hyper, Deep Stack
Game TypeAll, Hold’em, Omaha, O. Hi-Lo, Short Deck, Stud, Stud Hi-Lo
StatusAll, 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:

SectionOptions
AppearanceTheme, Four-Color Deck, Compact Mode
LanguageShown when the site offers more than one language
Sound & HapticsSound Effects, Volume, Haptic Feedback
ChatShow Chat, Profanity Filter
NotificationsPush Notifications, Sound Notifications
SecurityBiometric unlock and Two-Factor Authentication
RewardsAffiliate Program, when the site has affiliates turned on
Data & PrivacyExport 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:

FileSettingPurpose
eas.jsonEXPO_PUBLIC_API_URL in each build profileThe server the app connects to, ending in /api/v1
app.jsonname, slug, CFBundleDisplayNameApp name and project identifier
app.jsonios.bundleIdentifier, android.packageYour app’s store identifiers
app.jsonios.associatedDomains, android.intentFiltersThe domain used for table, tournament, invite, and hand links
app.jsonextra.privacyPolicyUrlThe link behind Settings > Privacy Policy
app.jsonextra.eas.projectIdYour EAS project, used when requesting push tokens. Not set in the repository
assets/Icon and splash imagesApp 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.

ProfileCommandPurposeDistributionAndroid output
developmentnpm run build:devDevelopment client (iOS simulator)InternalAPK
previewnpm run build:previewInternal testing on devicesInternalAPK
productionnpm run build:productionStore releaseStoreApp 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.

CommandWhat it does
npm run submit:iosBuilds the preview profile and submits it to TestFlight
npm run submit:ios:build-onlyBuilds only
npm run submit:ios:submit-onlySubmits 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:

  1. Run npm run submit:android:build-only.
  2. Download the .aab file from the EAS dashboard.
  3. Upload it in Play Console under Internal testing.

After that, use the scripts:

CommandWhat it does
npm run submit:androidBuilds the production profile and submits it to the internal track
npm run submit:android:build-onlyBuilds only
npm run submit:android:submit-onlySubmits 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.

SettingEffect in the app
Latest Mobile VersionOlder versions show a dismissible banner, "Version X is available", with an Update button when a link is set
Minimum Supported Mobile VersionOlder versions are blocked by a full-screen Update Required message and can’t be used until updated
iOS Update URLThe 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.android when it’s set and otherwise fall back to the iOS URL. To set it, send updateUrl.android to PATCH /api/v1/admin/app/config, which requires settings: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.

Try the live demo Pricing

Have questions about Poker Engine? We reply fast.