NameLast commit messageLast commit date
..
assetsRefresh app icons across release variants (#4080)3 months ago
depsT3 Code Mobile [WIP] (#2013)5 months ago
modulesfix: open agent file links in the file viewer (#8098)2 months ago
pluginsAllow Android tablets to rotate (#5613)3 months ago
scriptsFix Expo widget asset wiring order (#3763)4 months ago
srcfeat(mobile): track device models and OS versions (#8169)2 months ago
.editorconfigT3 Code Mobile [WIP] (#2013)5 months ago
.fingerprintignorechore: setup eas ci (#2911)5 months ago
.gitignoreT3 Code Mobile [WIP] (#2013)5 months ago
.swiftlint.ymlAdd adaptive split-view layout for iPad/mobile workspace (#3514)4 months ago
app.config.tschore(mobile): bump app version to 1.0.42 months ago
assets.d.tsT3 Code Mobile [WIP] (#2013)5 months ago
babel.config.jsT3 Code Mobile [WIP] (#2013)5 months ago
BrewfileT3 Code Mobile [WIP] (#2013)5 months ago
clerk-theme.json[codex] Add native mobile composer and markdown (#3101)4 months ago
detekt.ymlT3 Code Mobile [WIP] (#2013)5 months ago
eas.jsonfeat(client): persist offline environment data and mobile preferences (#3795)4 months ago
global.cssfeat(mobile): add built-in themes (#6619)2 months ago
index.ts[codex] Expand real-route app store screenshot harness (#4014)3 months ago
metro.config.js[codex] Add Android mobile support (#3579)4 months ago
package.jsonfeat(mobile): track device models and OS versions (#8169)2 months ago
README.mdAdd native mobile share target support (#4021)3 months ago
tsconfig.jsonT3 Code Mobile [WIP] (#2013)5 months ago
uniwind-types.d.tsT3 Code Mobile [WIP] (#2013)5 months ago
README.md

T3 Code Mobile

[!WARNING] T3 Code Mobile is currently in development and is not distributed yet. If you want to try it out, you can build it from source.

Quickstart

[!NOTE] Uses native modules so using Expo Go is not supported. You need to use the Expo Dev Client.

This app has three variants:

  • development: Expo dev client, installable side-by-side as T3 Code Dev
  • preview: persistent internal preview build, installable side-by-side as T3 Code Preview
  • production: store/release build as T3 Code

Run commands from apps/mobile.

T3 Connect is optional and disabled in a fresh clone. Public configuration belongs in the repository-root .env or .env.local, not an apps/mobile/.env file. See ../../.env.example.

Development

Start Metro for the dev client:

vp run dev:client

Build and run the local iOS dev client:

vp run ios:dev

If your Xcode account only has a Personal Team, use a bundle identifier you control and opt into the reduced-capability local build. Personal Team builds omit the widget and share extensions, push entitlement, and native Sign in with Apple entitlement; builds without this opt-in are unchanged.

T3CODE_IOS_PERSONAL_TEAM=1 \
T3CODE_IOS_PERSONAL_TEAM_BUNDLE_ID=com.example.t3code.dev \
vp run ios:dev

Build and install a self-contained Release app that does not need Metro:

vp run ios:release

The Personal Team equivalent also needs a unique bundle identifier:

T3CODE_IOS_PERSONAL_TEAM=1 \
T3CODE_IOS_PERSONAL_TEAM_BUNDLE_ID=com.example.t3code \
vp run ios:release

Build and run the local iOS preview app:

vp run ios:preview

Force the review diff highlighter engine:

EXPO_PUBLIC_REVIEW_HIGHLIGHTER_ENGINE=javascript vp run ios:dev

javascript is the default and recommended setting for the review diff screen. Set EXPO_PUBLIC_REVIEW_HIGHLIGHTER_ENGINE=native only when you explicitly want to test the native Shiki engine.

Inspect the resolved Expo config for a variant:

vp run config:dev
vp run config:preview

Run static checks for mobile native code:

node ../../scripts/mobile-native-static-check.ts

The native lint task runs SwiftLint for Swift plus ktlint and detekt for Kotlin. Missing native tools are reported as warnings and skipped locally. CI installs the default toolset from apps/mobile/Brewfile before running the native checks.

EAS Builds

CI uses Expo fingerprinting with the preview:dev profile to reuse an existing compatible build when possible, or start a new internal EAS build when native runtime inputs change. Production and default local builds continue to use the appVersion runtime policy.

For preview or production EAS environments, set T3CODE_CLERK_PUBLISHABLE_KEY, T3CODE_CLERK_JWT_TEMPLATE, and T3CODE_RELAY_URL as EAS environment variables. Expo config maps the canonical values into the mobile build.

Create a PR preview dev-client build manually:

vp run eas:ios:preview:dev

Create a cloud dev-client build:

vp run eas:ios:dev

Create a persistent preview build:

vp run eas:ios:preview

Android equivalents:

vp run eas:android:dev
vp run eas:android:preview:dev
vp run eas:android:preview