🎯

1k-cross-platform

🎯Skill

from onekeyhq/app-monorepo

VibeIndex|
What it does

1k-cross-platform skill from onekeyhq/app-monorepo

πŸ“¦

Part of

onekeyhq/app-monorepo(31 items)

1k-cross-platform

Installation

πŸ“‹ No install commands found in docs. Showing default command. Check GitHub for actual instructions.
Quick InstallInstall with npx
npx skills add onekeyhq/app-monorepo --skill 1k-cross-platform
14Installs
2,277
-
Last UpdatedJan 26, 2026

Skill Details

SKILL.md

Cross-platform development patterns for OneKey. Use when writing platform-specific code, handling platform differences, or understanding platform extensions. Triggers on platform, native, web, desktop, extension, mobile, ios, android, electron, react native.

Overview

# OneKey Cross-Platform Development

Platform Extensions

Use platform extensions for platform-specific implementations:

  • .native.ts for React Native (iOS/Android)
  • .web.ts for web platform
  • .desktop.ts for desktop platform
  • .ext.ts for browser extension

Platform Detection

Use import platformEnv from '@onekeyhq/shared/src/platformEnv' for platform detection:

```typescript

import platformEnv from '@onekeyhq/shared/src/platformEnv';

if (platformEnv.isNative) {

// React Native specific code

}

if (platformEnv.isWeb) {

// Web specific code

}

if (platformEnv.isDesktop) {

// Desktop (Electron) specific code

}

if (platformEnv.isExtension) {

// Browser extension specific code

}

```

Key Principles

  • UI components should work consistently across all platforms
  • Keep platform-specific code in separate files with appropriate extensions
  • Minimize platform-specific code by keeping common logic separate
  • Test across all target platforms

Common Patterns

Platform-Specific File Structure

```

MyComponent/

β”œβ”€β”€ index.ts # Main entry, common logic

β”œβ”€β”€ MyComponent.tsx # Shared component

β”œβ”€β”€ MyComponent.native.tsx # React Native specific

β”œβ”€β”€ MyComponent.web.tsx # Web specific

β”œβ”€β”€ MyComponent.desktop.tsx # Desktop specific

└── MyComponent.ext.tsx # Extension specific

```

Conditional Platform Logic

```typescript

// GOOD: Use platformEnv

import platformEnv from '@onekeyhq/shared/src/platformEnv';

function getStoragePath() {

if (platformEnv.isNative) {

return 'file://...';

}

if (platformEnv.isDesktop) {

return '/path/to/storage';

}

return 'indexeddb://...';

}

// BAD: Direct platform checks

if (typeof window !== 'undefined') { } // ❌

if (process.env.REACT_APP_PLATFORM === 'web') { } // ❌

```

Platform-Specific Imports

```typescript

// index.ts - Auto-resolves based on platform

export * from './MyComponent';

// The bundler will automatically pick:

// - MyComponent.native.ts on mobile

// - MyComponent.web.ts on web

// - MyComponent.desktop.ts on desktop

// - MyComponent.ext.ts on extension

```

Platform Considerations

Extension (Chrome, Firefox, Edge, Brave)

  • MV3/service worker lifetimes
  • Permissions and CSP
  • Background script limitations
  • Cross-origin restrictions

Mobile (iOS/Android)

  • WebView limitations
  • Native modules
  • Background/foreground states
  • Deep linking

Desktop (Electron)

  • Security boundaries
  • IPC communication
  • nodeIntegration settings
  • File system access

Web

  • CORS restrictions
  • Storage limitations (localStorage, IndexedDB)
  • XSS prevention
  • Bundle size optimization