{
  "id": 3447030,
  "title": "I built plugins for three editors. Everywhere, you're a guest in someone else's house",
  "url": "https://urgent.news/2026/08/26/i-built-plugins-for-three-editors-everywhere-youre-a-guest-in-someone",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-26T06:34:45.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/eugeniya_ivanova_4a58eadc/i-built-plugins-for-three-editors-everywhere-youre-a-guest-in-someone-elses-house-34ck"
  },
  "original_language": "en",
  "account": "During a recent project, I developed plugins for three different text and image editing applications - Obsidian, VS Code, and Figma. It quickly became apparent that despite all being desktop apps, each had its own unique approach and restrictions.\n\nTo create an integration, users must first install a program on their machine, after which the plugin runs within that program's environment. This runtime, along with its own set of rules, presents challenges for developers. The web, in contrast, typically allows for straightforward HTTP requests, but working within someone else's sandbox requires earning access to these resources.\n\nFigma proved to be the most restrictive host among the three. Despite the task seeming simple at first glance - select a frame, write a caption, choose social accounts, and publish without exporting the image - there were several complexities involved.\n\nFigma provided raw PNG bytes instead of a file, necessitating additional steps to upload it. The plugin first creates a post, obtains an upload URL, PUTs the PNG, completes the media, and then updates the post. This sequence ensures the image is correctly uploaded and processed.\n\nAdditionally, the plugin UI runs in a sandboxed iframe with Origin: null, making it impossible for the plugin to directly communicate with the API. A Cloudflare Worker was implemented to forward requests and add the necessary CORS headers.\n\nOther considerations include handling character limits across different social media platforms - LinkedIn allows more text than X, so the plugin uses the strictest limit among the selected networks. The plugin also prevents users from scheduling posts if the image fails to upload, ensuring a smooth user experience.",
  "summary": "Over the last while I've built integrations for three places where people work with text and images: Obsidian , VS Code, and Figma. Doing a few of them back to back, I noticed something you don't see from a single one. They're all desktop apps. For your integration to exist at all, the person first installs a program on their machine, and then, inside it, your plugin. You're not writing for the…",
  "key_points": [
    "Developed plugins for Obsidian, VS Code, and Figma",
    "Figma most restrictive host with complex upload process",
    "Implemented Cloudflare Worker for CORS headers"
  ],
  "editors_take": "Developing plugins for multiple platforms reveals that each treats external integrations as guests, subject to their own rules and restrictions, requiring developers to adapt and work within those constraints.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}