Imoran ai LogoImoran ai Logo

RPC

A Chrome MV3 extension I built to preview any URL inside realistic device frames on a zoomable, pannable canvas, with no dev tools or cloud service needed.

Services

Browser Extension Development & Tooling

Timeline

3 Weeks

Technologies
Vanilla TypeScriptWXT FrameworkChrome Extension APIPlaywrightTailwind CSS
View Live Project →

01

Introduction

A Chrome MV3 extension I built to preview any URL inside realistic device frames on a zoomable, pannable canvas, with no dev tools or cloud service needed.

02

Work Done

Chrome Extension architecture (Manifest V3), canvas interaction engineering, secure network header stripping, iframe message bridging, and cross-browser automation scripting.

03

Challenges

Standard iframes often block third-party websites due to security headers like X-Frame-Options and Content Security Policy (CSP). Additionally, standard HTML setups do not easily support full-page, multi-scroll stitching for automated screenshots.

04

Solutions

I engineered a background service worker using the Chrome declarativeNetRequest API to strip restrictive frames headers safely, but only for sub-frames inside the extension panel. I also used vanilla TypeScript to build a fully physical canvas using matrix transforms, and a custom postMessage script injected into the frame to manage tall, multi-scroll screenshot assembly.

05

Results

A high-performance, lightweight development tool packed into a clean Chrome panel. It includes accurate SVG device mockups, fluid panning/zooming, global keyboard shortcuts, responsive breakpoint lines, and reliable full-page image exports.

06

Details

The problem

Testing responsive layouts usually means wrestling with dev tools or paying for a slow cloud service. I built Responsive Point Check (RPC) to do it locally, in one click from the toolbar.

Getting past iframe blocking

The hard part of embedding live sites in a testing tool is that most platforms send `X-Frame-Options: DENY` or strict CSP headers to block iframes. I handled it with a Manifest V3 background service worker that uses the declarativeNetRequest API to strip those headers, but I scoped the rules tightly so they only fire for frames running inside the RPC panel. Your normal browsing security stays untouched.

No framework, on purpose

To keep the extension fast, offline-ready, and small, I skipped the heavy frontend frameworks and built it in vanilla TypeScript with a 30-line DOM helper of my own. The canvas uses CSS `translate3d` and scale transforms, so you can pan, drag, and zoom into device frames smoothly.

A few details I cared about:

  • Real device SVGs (iPhone, iPad, MacBook) instead of generic wireframe boxes, so frames scale without blurring.
  • Full-page capture: the panel talks to the iframe over postMessage, scrolls it step by step, snapshots each section, and stitches them into one tall PNG.
  • A Playwright workflow that checks everything from keyboard maps to the safety of the network rules on every build.

The result is a fast, framework-free browser tool built on modern extension standards.

Created by

Tope Akintola

Published

May 18, 2026

Role

Browser Extension Development & Tooling

Share

Let's Work
Together

Hand Reaching

Have a project in mind? We'd love to hear about it. Let's create something great together!

PRODUCT DEVELOPERUI ENGINEERMVP DEVELOPMENTFRONTEND DEVELOPMENTPRODUCT DEVELOPERUI ENGINEERMVP DEVELOPMENTFRONTEND DEVELOPMENTPRODUCT DEVELOPERUI ENGINEERMVP DEVELOPMENTFRONTEND DEVELOPMENT