> ## Documentation Index
> Fetch the complete documentation index at: https://docs.divvi.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Interface: PublicAppConfig\<tabScreenConfigs\>

export const EditPage = ({editUrl, lastModified}) => {
  const formatDate = isoString => {
    if (!isoString) return null;
    try {
      const date = new Date(isoString);
      return date.toLocaleString("en-US", {
        dateStyle: "medium",
        timeStyle: "short"
      });
    } catch {
      return null;
    }
  };
  const formattedDate = formatDate(lastModified);
  return <div className="pt-6 mt-6 mb-6">
      <div className="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
        <a href={editUrl} target="_blank" rel="noopener noreferrer" className="inline-flex items-center gap-1.5 text-sm font-medium text-primary no-underline not-prose">
          <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
            <path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path>
            <path d="m18.5 2.5 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>
          </svg>
          Suggest changes to this page
        </a>
        {formattedDate && <span className="text-sm text-gray-500 not-prose">
            Last updated: {formattedDate}
          </span>}
      </div>
    </div>;
};

[**@divvi/mobile**](../README)

***

[@divvi/mobile](../README) / PublicAppConfig
Defined in: [packages/@divvi/mobile/src/public/types.tsx:24](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L24)

## Type Parameters

• **tabScreenConfigs** *extends* `TabScreenConfig`\[] = `TabScreenConfig`\[]

## Properties

### deepLinkUrlScheme

```ts theme={null}
deepLinkUrlScheme: string
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:27](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L27)

***

### displayName

```ts theme={null}
displayName: string
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:26](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L26)

***

### divviProtocol?

```ts theme={null}
optional divviProtocol: object;
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:262](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L262)

#### divviId

```ts theme={null}
divviId: `0x${string}`
```

***

### experimental?

```ts theme={null}
optional experimental: object;
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:207](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L207)

Experimental features that may change or be removed in future versions.
These features are not part of the stable configuration API and should be used with caution.

Features may graduate to the stable API or be removed entirely.

#### activity?

```ts theme={null}
optional activity: object;
```

##### activity.hideActionsCarousel?

```ts theme={null}
optional hideActionsCarousel: boolean;
```

#### alchemyKeys?

```ts theme={null}
optional alchemyKeys: Record<string, string>;
```

#### bidali?

```ts theme={null}
optional bidali: object;
```

##### bidali.url

```ts theme={null}
url: string
```

#### disableNfts?

```ts theme={null}
optional disableNfts: boolean;
```

#### earn?

```ts theme={null}
optional earn: object;
```

##### earn.showLearnMore?

```ts theme={null}
optional showLearnMore: boolean;
```

##### earn.showSafetyScoreOnPoolCard?

```ts theme={null}
optional showSafetyScoreOnPoolCard: boolean;
```

#### enableSwapAppFee?

```ts theme={null}
optional enableSwapAppFee: boolean;
```

#### firebase?

```ts theme={null}
optional firebase: boolean;
```

#### hideCashInTokenFilters?

```ts theme={null}
optional hideCashInTokenFilters: boolean;
```

#### inviteFriends?

```ts theme={null}
optional inviteFriends: boolean;
```

#### notificationCenter?

```ts theme={null}
optional notificationCenter: boolean;
```

#### onboarding?

```ts theme={null}
optional onboarding: object;
```

##### onboarding.enableBiometry?

```ts theme={null}
optional enableBiometry: boolean;
```

##### onboarding.protectWallet?

```ts theme={null}
optional protectWallet: boolean;
```

#### otaTranslations?

```ts theme={null}
optional otaTranslations: object;
```

##### otaTranslations.crowdinDistributionHash

```ts theme={null}
crowdinDistributionHash: string
```

#### phoneNumberVerification?

```ts theme={null}
optional phoneNumberVerification: boolean;
```

#### showImportTokensFlow?

```ts theme={null}
optional showImportTokensFlow: boolean;
```

#### showPositions?

```ts theme={null}
optional showPositions: boolean;
```

#### showSwapTokenFilters?

```ts theme={null}
optional showSwapTokenFilters: boolean;
```

#### tokens?

```ts theme={null}
optional tokens: object;
```

##### tokens.enabledTokenIds

```ts theme={null}
enabledTokenIds: string[];
```

##### tokens.overrides?

```ts theme={null}
optional overrides: object;
```

###### Index Signature

```ts theme={null}
[tokenId: string]: object
```

#### transactions?

```ts theme={null}
optional transactions: object;
```

##### transactions.emptyState?

```ts theme={null}
optional emptyState: ReactElement<any, string | JSXElementConstructor<any>>;
```

#### wallet?

```ts theme={null}
optional wallet: object;
```

##### wallet.emptyState?

```ts theme={null}
optional emptyState: ReactElement<any, string | JSXElementConstructor<any>>;
```

##### wallet.showActionsCarousel?

```ts theme={null}
optional showActionsCarousel: boolean;
```

#### zendeskConfig?

```ts theme={null}
optional zendeskConfig: object;
```

##### zendeskConfig.apiKey

```ts theme={null}
apiKey: string
```

##### zendeskConfig.projectName

```ts theme={null}
projectName: string
```

***

### features?

```ts theme={null}
optional features: object;
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:158](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L158)

#### cloudBackup?

```ts theme={null}
optional cloudBackup: boolean;
```

#### segment?

```ts theme={null}
optional segment: object;
```

##### segment.apiKey

```ts theme={null}
apiKey: string
```

#### sentry?

```ts theme={null}
optional sentry: object;
```

##### sentry.clientUrl

```ts theme={null}
clientUrl: string
```

#### statsig?

```ts theme={null}
optional statsig: object;
```

##### statsig.apiKey

```ts theme={null}
apiKey: string
```

#### walletConnect?

```ts theme={null}
optional walletConnect: object;
```

##### walletConnect.projectId

```ts theme={null}
projectId: string
```

***

### ios?

```ts theme={null}
optional ios: object;
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:30](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L30)

#### appStoreId?

```ts theme={null}
optional appStoreId: string;
```

***

### locales?

```ts theme={null}
optional locales: Partial<{
  de: Record<string, any>;
  en-US: Record<string, any>;
  es-419: Record<string, any>;
  fr-FR: Record<string, any>;
  it-IT: Record<string, any>;
  pl-PL: Record<string, any>;
  pt-BR: Record<string, any>;
  ru-RU: Record<string, any>;
  th-TH: Record<string, any>;
  tr-TR: Record<string, any>;
  uk-UA: Record<string, any>;
  vi-VN: Record<string, any>;
  zh-CN: Record<string, any>;
}>;
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:179](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L179)

Optional copies overwrite. This field should contain the same language keys as @interxyz/mobile.
TODO: Eventually, we want to make this fully type-safe (maybe with generics?)

***

### networks?

```ts theme={null}
optional networks: object;
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:196](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L196)

#### enabledNetworkIds?

```ts theme={null}
optional enabledNetworkIds: NetworkId[];
```

***

### registryName

```ts theme={null}
registryName: string
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:25](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L25)

***

### screens?

```ts theme={null}
optional screens: object;
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:141](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L141)

#### custom()?

```ts theme={null}
optional custom: (Screen) => Element;
```

##### Parameters

###### Screen

`any`

##### Returns

`Element`

#### tabs()?

```ts theme={null}
optional tabs: (args) => object;
```

##### Parameters

###### args

###### defaultTabs

\{
`activity`: `TabScreenConfig` & `object`;
`discover`: `TabScreenConfig` & `object`;
`earn`: `TabScreenConfig` & `object`;
`wallet`: `TabScreenConfig` & `object`;
}

###### defaultTabs.activity

`TabScreenConfig` & `object`

###### defaultTabs.discover

`TabScreenConfig` & `object`

###### defaultTabs.earn

`TabScreenConfig` & `object`

###### defaultTabs.wallet

`TabScreenConfig` & `object`

##### Returns

`object`

###### initialScreen?

```ts theme={null}
optional initialScreen: tabScreenConfigs[number]["name"];
```

###### screens?

```ts theme={null}
optional screens: tabScreenConfigs;
```

***

### themes?

```ts theme={null}
optional themes: object;
```

Defined in: [packages/@divvi/mobile/src/public/types.tsx:35](https://github.com/divvi-xyz/divvi-mobile/blob/main/packages/@divvi/mobile/src/public/types.tsx#L35)

#### default

```ts theme={null}
default: object;
```

##### default.assets?

```ts theme={null}
optional assets: object;
```

##### default.assets.backupAndRecoveryImages?

```ts theme={null}
optional backupAndRecoveryImages: object;
```

##### default.assets.backupAndRecoveryImages.cloudBackupEmail?

```ts theme={null}
optional cloudBackupEmail: ImageSourcePropType;
```

##### default.assets.backupAndRecoveryImages.recoveryPhraseEducation1?

```ts theme={null}
optional recoveryPhraseEducation1: ImageSourcePropType;
```

##### default.assets.backupAndRecoveryImages.recoveryPhraseEducation2?

```ts theme={null}
optional recoveryPhraseEducation2: ImageSourcePropType;
```

##### default.assets.backupAndRecoveryImages.recoveryPhraseEducation3?

```ts theme={null}
optional recoveryPhraseEducation3: ImageSourcePropType;
```

##### default.assets.backupAndRecoveryImages.recoveryPhraseEducation4?

```ts theme={null}
optional recoveryPhraseEducation4: ImageSourcePropType;
```

##### default.assets.backupAndRecoveryImages.walletSafe?

```ts theme={null}
optional walletSafe: ImageSourcePropType;
```

##### default.assets.biometryImages?

```ts theme={null}
optional biometryImages: object;
```

##### default.assets.biometryImages.face?

```ts theme={null}
optional face: ImageSourcePropType;
```

##### default.assets.biometryImages.faceId?

```ts theme={null}
optional faceId: ImageSourcePropType;
```

##### default.assets.biometryImages.fingerprint?

```ts theme={null}
optional fingerprint: ImageSourcePropType;
```

##### default.assets.biometryImages.iris?

```ts theme={null}
optional iris: ImageSourcePropType;
```

##### default.assets.biometryImages.touchId?

```ts theme={null}
optional touchId: ImageSourcePropType;
```

##### default.assets.brandLogo?

```ts theme={null}
optional brandLogo: ComponentType<{
  color: string;
  size: number;
}>;
```

##### default.assets.noEarnPoolsLogo?

```ts theme={null}
optional noEarnPoolsLogo: ComponentType<any>;
```

##### default.assets.onboardingSuccessBackgroundImage?

```ts theme={null}
optional onboardingSuccessBackgroundImage: ImageSourcePropType;
```

##### default.assets.onboardingSuccessImage?

```ts theme={null}
optional onboardingSuccessImage: ImageSourcePropType;
```

##### default.assets.splashBackgroundImage?

```ts theme={null}
optional splashBackgroundImage: ImageSourcePropType;
```

##### default.assets.welcomeBackgroundImage?

```ts theme={null}
optional welcomeBackgroundImage: ImageSourcePropType;
```

##### default.assets.welcomeLogo?

```ts theme={null}
optional welcomeLogo: ComponentType<any>;
```

##### default.colors?

```ts theme={null}
optional colors: object;
```

##### default.colors.accent?

```ts theme={null}
optional accent: string;
```

##### default.colors.backgroundOnboardingComplete?

```ts theme={null}
optional backgroundOnboardingComplete: string;
```

##### default.colors.backgroundPrimary?

```ts theme={null}
optional backgroundPrimary: string;
```

##### default.colors.backgroundScrim?

```ts theme={null}
optional backgroundScrim: string;
```

##### default.colors.backgroundSecondary?

```ts theme={null}
optional backgroundSecondary: string;
```

##### default.colors.backgroundSplash?

```ts theme={null}
optional backgroundSplash: string;
```

##### default.colors.backgroundTertiary?

```ts theme={null}
optional backgroundTertiary: string;
```

##### default.colors.barShadow?

```ts theme={null}
optional barShadow: string;
```

##### default.colors.borderPrimary?

```ts theme={null}
optional borderPrimary: string;
```

##### default.colors.borderSecondary?

```ts theme={null}
optional borderSecondary: string;
```

##### default.colors.bottomSheetHandle?

```ts theme={null}
optional bottomSheetHandle: string;
```

##### default.colors.brandGradientLeft?

```ts theme={null}
optional brandGradientLeft: string;
```

##### default.colors.brandGradientRight?

```ts theme={null}
optional brandGradientRight: string;
```

##### default.colors.buttonPrimaryBackground?

```ts theme={null}
optional buttonPrimaryBackground: string | string[];
```

Can be a single color or array of colors for a linear gradient

##### default.colors.buttonPrimaryBorder?

```ts theme={null}
optional buttonPrimaryBorder: string;
```

##### default.colors.buttonPrimaryContent?

```ts theme={null}
optional buttonPrimaryContent: string;
```

##### default.colors.buttonQuickActionBackground?

```ts theme={null}
optional buttonQuickActionBackground: string;
```

##### default.colors.buttonQuickActionBorder?

```ts theme={null}
optional buttonQuickActionBorder: string;
```

##### default.colors.buttonQuickActionContent?

```ts theme={null}
optional buttonQuickActionContent: string;
```

##### default.colors.buttonSecondaryBackground?

```ts theme={null}
optional buttonSecondaryBackground: string;
```

##### default.colors.buttonSecondaryBorder?

```ts theme={null}
optional buttonSecondaryBorder: string;
```

##### default.colors.buttonSecondaryContent?

```ts theme={null}
optional buttonSecondaryContent: string;
```

##### default.colors.buttonTertiaryBackground?

```ts theme={null}
optional buttonTertiaryBackground: string;
```

##### default.colors.buttonTertiaryBorder?

```ts theme={null}
optional buttonTertiaryBorder: string;
```

##### default.colors.buttonTertiaryContent?

```ts theme={null}
optional buttonTertiaryContent: string;
```

##### default.colors.contentOnboardingComplete?

```ts theme={null}
optional contentOnboardingComplete: string;
```

##### default.colors.contentPrimary?

```ts theme={null}
optional contentPrimary: string;
```

##### default.colors.contentSecondary?

```ts theme={null}
optional contentSecondary: string;
```

##### default.colors.contentTertiary?

```ts theme={null}
optional contentTertiary: string;
```

##### default.colors.disabled?

```ts theme={null}
optional disabled: string;
```

##### default.colors.errorPrimary?

```ts theme={null}
optional errorPrimary: string;
```

##### default.colors.errorSecondary?

```ts theme={null}
optional errorSecondary: string;
```

##### default.colors.inactive?

```ts theme={null}
optional inactive: string;
```

##### default.colors.info?

```ts theme={null}
optional info: string;
```

##### default.colors.lightShadow?

```ts theme={null}
optional lightShadow: string;
```

##### default.colors.loadingIndicator?

```ts theme={null}
optional loadingIndicator: string;
```

##### default.colors.navigationBottomPrimary?

```ts theme={null}
optional navigationBottomPrimary: string;
```

##### default.colors.navigationBottomSecondary?

```ts theme={null}
optional navigationBottomSecondary: string;
```

##### default.colors.navigationTopPrimary?

```ts theme={null}
optional navigationTopPrimary: string;
```

##### default.colors.navigationTopSecondary?

```ts theme={null}
optional navigationTopSecondary: string;
```

##### default.colors.qrTabBarPrimary?

```ts theme={null}
optional qrTabBarPrimary: string;
```

##### default.colors.qrTabBarSecondary?

```ts theme={null}
optional qrTabBarSecondary: string;
```

##### default.colors.skeletonPlaceholderBackground?

```ts theme={null}
optional skeletonPlaceholderBackground: string;
```

##### default.colors.skeletonPlaceholderHighlight?

```ts theme={null}
optional skeletonPlaceholderHighlight: string;
```

##### default.colors.softShadow?

```ts theme={null}
optional softShadow: string;
```

##### default.colors.successPrimary?

```ts theme={null}
optional successPrimary: string;
```

##### default.colors.successSecondary?

```ts theme={null}
optional successSecondary: string;
```

##### default.colors.textInputBackground?

```ts theme={null}
optional textInputBackground: string;
```

##### default.colors.textLink?

```ts theme={null}
optional textLink: string;
```

##### default.colors.warningPrimary?

```ts theme={null}
optional warningPrimary: string;
```

##### default.colors.warningSecondary?

```ts theme={null}
optional warningSecondary: string;
```

##### default.isDark?

```ts theme={null}
optional isDark: boolean;
```

<EditPage editUrl="https://github.com/divvi-xyz/divvi-mobile/edit/main/docs/reference/interfaces/PublicAppConfig.md" lastModified="2025-07-11T16:14:43.000Z" />
