# 1k Browser Module

> OneKey Browser/Discovery development for WebView tabs, bookmarks, history, search, URL risk checks, DApp connections, and JSBridge behavior.

- Skill: `onekeyhq/1k-browser-module` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add onekeyhq/1k-browser-module`
- Raw SKILL.md: https://api.skillmd.com/api/skills/onekeyhq/1k-browser-module/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: onekeyhq (https://skillmd.com/u/onekeyhq)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/onekeyhq/1k-browser-module

---


# Browser Module

Use this for desktop/mobile Discovery Browser and MultiTabBrowser work: WebView lifecycle, DApp connections, bookmarks/history, search, URL validation, and analytics.

## Quick Reference

| Topic | Guide | Key Files |
|-------|-------|-----------|
| Module map | [module-map.md](references/rules/module-map.md) | `packages/kit/src/views/Discovery/`, `packages/kit-bg/src/services/ServiceDiscovery.ts` |
| Tabs and navigation | [tabs-navigation.md](references/rules/tabs-navigation.md) | `packages/kit/src/states/jotai/contexts/discovery/` |
| WebView and security | [webview-security.md](references/rules/webview-security.md) | `packages/kit/src/views/Discovery/components/WebContent/` |
| DApp connection | [dapp-connection.md](references/rules/dapp-connection.md) | `packages/kit-bg/src/services/ServiceDApp.ts`, `packages/kit/src/views/DAppConnection/` |
| Data, search, bookmarks | [data-search-bookmarks.md](references/rules/data-search-bookmarks.md) | `ServiceDiscovery.ts`, `useSearchModalData.ts`, SimpleDB browser entities |
| Testing and review | [testing-review.md](references/rules/testing-review.md) | `*.test.ts`, `*.test.tsx`, discovery logger scenes |

## Default Workflow

1. Identify the enabled platform surface: native mobile Discovery tab or desktop MultiTabBrowser.
2. Read [module-map.md](references/rules/module-map.md), then open only the rule file matching the requested change.
3. Trace state through `useBrowserTabActions`, `useBrowserAction`, and `ServiceDiscovery` before UI edits.
4. Preserve platform-specific files: `.native.tsx`, `.desktop.tsx`, `.ext.tsx`, and unsuffixed fallbacks have different behavior.
5. Treat extension/web paths as fallback or shared infrastructure unless the request explicitly enables browser behavior there.
6. Verify URL validation, deep link handling, DApp provider notifications, and persisted SimpleDB data are still coherent.

## Hard Rules

- Do not bypass `uriUtils.validateUrl`, `parseDappRedirect`, `validateWebviewSrc`, or deep link handling when loading arbitrary URLs.
- Do not mutate tabs without `buildWebTabs`/`setWebTabData`; persistence and active-tab maps depend on that path.
- Do not clear shared Electron webview session cache from per-tab cleanup; webviews share `partition="persist:onekey"`.
- Do not pass secrets, raw clipboard text, or unbounded payloads through modal params or `defaultLogger`.
- For analytics changes, also use `/1k-analytics`.

## Related Skills

- `/1k-cross-platform` - Platform suffixes.
- `/1k-state-management` - Jotai atoms.
- `/1k-feature-guides` - Routes/modals.
- `/1k-i18n` - Translations.
- `/1k-analytics` - Discovery logging.
- `/1k-performance` - WebView/tab/list performance.

