A Chrome extension that records user interactions (clicks, inputs, navigation) with screenshots and optional audio narration, then exports them as step-by-step documentation.
- 📸 Screenshot Capture - Automatically captures screenshots during interactions
- 🎯 Smart Element Detection - Tracks clicks and inputs with intelligent selectors
- 🔒 Sensitive Data Protection - Automatically masks passwords and sensitive fields
- 📝 Multiple Export Formats - JSON, Markdown, and ZIP with images
- 🎨 Visual Timeline - Side panel interface for managing recordings
- 🎙️ Audio Support (planned) - Add voice narration to recordings
-
Clone the repository
git clone https://github.com/AStevensTaylor/how-to-recorder.git cd how-to-recorder -
Install dependencies
bun install
-
Build the extension
bun run build
-
Load in Chrome
- Open
chrome://extensions/ - Enable "Developer mode" (top right)
- Click "Load unpacked"
- Select the
build/directory
- Open
- Download the latest
.crxfile from Releases - Open
chrome://extensions/ - Enable "Developer mode"
- Drag and drop the
.crxfile onto the extensions page
-
Start Recording
- Click the extension icon or open the side panel
- Click "Start Recording"
-
Perform Actions
- Navigate websites, click buttons, fill forms
- Each action is captured with a screenshot
-
Stop Recording
- Click "Stop Recording" in the side panel
-
Export
- Choose from JSON, Markdown, or ZIP formats
- Review and download your documentation
- Bun v1.3.5 or higher
- Chrome/Chromium browser
bun install # Install dependencies
bun run dev # Start dev server with HMR
bun run build # Build for production
bun run test # Run tests
bun run check # Lint and format check
bun run check:fix # Auto-fix lint/format issues
bun run zip # Build and create distributable ZIPsrc/
├── background/ # Service worker (orchestrates recording)
├── contentScript/ # Injected scripts (track interactions)
├── sidepanel/ # React UI (control panel and timeline)
│ ├── components/ # UI components
│ └── context/ # React context providers
├── types/ # TypeScript definitions
├── utils/ # Export and utility functions
└── manifest.ts # Extension manifest configuration
- Runtime: Bun
- Framework: React 18 + TypeScript
- Build Tool: Vite + @crxjs/vite-plugin
- Linting/Formatting: Biome
- Storage: IndexedDB (via idb)
- Bundling: JSZip for exports
This project uses GitHub Actions for automated testing and releases:
- PR Checks: Automatic linting, type checking, and testing on pull requests
- Releases: Automatic
.crxpackaging and GitHub releases on merge tomain - Chrome Web Store: Automated publishing (requires setup)
See CI.md for detailed CI/CD configuration and setup instructions.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linting (
bun run test && bun run check) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See AGENTS.md for detailed development guidelines and code style conventions.
MIT License - see LICENSE for details.
Ahren Stevens-Taylor github+how-to-recorder@stevenstaylor.dev
Built with: