All Projects

Feedback Widget SDK

Production

Multi-platform in-app feedback with screenshots, annotations, and offline support

Problem

Client apps need in-app feedback collection without building custom UI for each platform. Users should capture screenshots with annotations, optionally record sessions, and submit even when offline.

Solution

Two complementary SDKs: @sjforge/feedback-widget for web/Electron with full annotation and recording support, and @sjforge/feedback-widget-native for React Native with screenshot capture and offline queue. Both sync to the Client Feedback Portal.

Key Features

  • Screenshot capture with 5 annotation tools (draw, arrow, text, highlight, blur)
  • Session recording via rrweb with pixel-perfect replay
  • Auto-captured context (browser, OS, viewport, errors, network)
  • Offline queue with auto-sync and exponential backoff
  • Privacy controls (mask selectors, auto-mask passwords)
  • Floating button UI or programmatic API
  • Electron adapter with preload helpers
  • React Native components (FeedbackButton, FeedbackForm)
  • CDN bundle for script tag integration

Tech Stack

TypeScripthtml2canvasrrwebIndexedDBReact NativeAsyncStorage

Architecture

Two packages with shared design patterns. Web SDK is framework-agnostic vanilla TypeScript with platform adapters. React Native SDK built as React components with Expo compatibility. Both use transport layer for API communication, offline queue, and context collectors. Privacy settings applied at capture time.

Screenshots

Screenshots coming soon

Metrics

15 KB
Bundle (core)
45 KB
Bundle (+screenshots)
85 KB
Bundle (+recording)
3
Platforms

My Role

Sole developer. Designed the SDK architecture, implemented screenshot capture and annotation tools, built offline sync, and created adapters for three platforms.