One Year In: How SVG Path Editor evolved into Subpath featured image

One Year In: How SVG Path Editor evolved into Subpath

August 17, 2026 · 6 min read

A weekend tool went quiet for four months, then in six weeks became a real product with a new name.

Back in June 2025 I wrote about rolling my own SVG path editor. I was sick of switching between three different tools, each with its own ads and paywalled feature, just to clean up one icon, so I built the thing myself over a weekend and kept using it. I said in that post that I used it daily, and for a while that was true.

Then, if I am honest, I mostly left it alone. Life happens to side projects. But I recently sat down and looked at the repo, and the numbers surprised me: 474 commits, 19 tagged releases, and about sixteen months of on-and-off work since the first commit on April 22, 2025. This was not just “weekend hack, still alive.” It had turned into a different thing, with a different name: Subpath. (The 2025 project page is still up, unedited, if you want to see where this started.)

The quiet stretch

The first real burst of work came in October 2025. Over a handful of releases (v1.0 through v1.4) the editor got the bones of a real tool: multi-path selection with alignment and distribution, drag-and-drop SVG upload that pulled every path out of a multi-path file, a dynamic grid with point and grid snapping, and full support for SVG transforms on import, so nested groups and matrix transforms did not get mangled on the way in.

Then it went quiet. One release in February 2026, a security patch (v1.5.0), and then nothing for months. No grand plan, no burnout post, just a side project that lost its slot in my attention for a while. I do not think that needs defending. It is what happens to most side projects, and this one just happened to come back.

Going all in

Starting June 26, 2026, something changed. Over about six weeks I shipped ten releases (v2.0 through v2.10, landing August 11), and that stretch is really the whole story of how this became Subpath.

The editor got serious

The editing surface grew up first: selection handles you can resize directly on canvas, a command palette (Cmd+K) for finding any action without hunting through menus, named local snapshots, guides and rulers with snap-to-guide, marquee selection for grabbing multiple points at once, and full touch and tablet support. Underneath, a real path engine showed up: boolean operations (union, subtract, intersect, exclude), stroke-to-outline, and normalize, offset, and simplify operations that used to mean dropping into a different tool entirely.

Export turned into an actual pipeline instead of a single “copy SVG” button: raw or optimized SVG, a React component, Vue, Svelte, SwiftUI, CSS, a data URI, sprite sheets, a ZIP bundle, or a direct push to a GitHub Gist. That is the part I did not expect to matter as much as it does; half the friction in my old workflow was converting one SVG into five different formats by hand.

AI stopped being a demo

The original post mentioned an AI experiment: generating SVG paths from a text description using Grok, mostly for fun, mostly for simple icons. That is not what is running today. AI generation is now a paid, metered feature with three quality tiers priced roughly in proportion to their real cost (about 1, 10, and 100 credits for standard, high-fidelity, and frontier), constrained generation and edit-by-prompt (select a path, describe the change), and quality scoring across multiple variants. If a request cannot be charged, it gets refused, not silently downgraded to a worse model. That was a deliberate call, and I think it is the right one, but it does mean this is a real product feature now, not a novelty. Current plans and credit pricing are at subpath.dev/pricing.

The newest piece, shipped August 11, is Refine: a second AI pass for the top tier that sends the rendered image, not just the underlying path code, to a vision model for critique, then revises the geometry against that critique. Up to two passes, and a failed pass never destroys what you already had.

It stayed local first, but grew a cloud

This is the part I went back and forth on. The whole appeal of the original tool was that nothing left your browser: no account, no upload, no server round trip. Adding cloud sync risked breaking that. What I landed on is that local-first stays the default and cloud stays optional: Supabase-backed sync, magic-link or GitHub sign-in, a real document library with rename, duplicate, and trash, and version history, but moving a document to the cloud is something you do on purpose. It is an explicit copy, not an automatic one, and it never touches or deletes the local original. Full editing still works with zero account.

It became a desktop app

Subpath also runs as a native app now, built on Tauri, currently in private beta. It gets you real file handling (Open, Save, Save As, export through a native picker), one document per window with its own crash recovery, and full offline editing with the same editor core as the browser version. The local-to-cloud copy stays explicit here too; opening the app never uploads anything on its own.

The rename

The name change was not cosmetic. Landing between July 30 and August 1, 2026, “SVG Path Editor” became “Subpath”: the repo and package slugs changed, the subdomain moved from svg-editor.griffen.codes to subpath.dev, and the desktop app’s not-yet-shipped bundle identity had to get locked in right on the first try. The old domain still works; it redirects. Nothing broke, including the documents already sitting in people’s browsers under the old keys, which took more than a find and replace. I wrote up how that part actually worked: Renaming a live product without losing anyone’s data.

It also landed the same week as the desktop app’s first public beta milestone, which feels right. That is the week this stopped being a side project with a URL and started being a product with an identity.

What’s next: the desktop app

The desktop app is close. According to the current spec, the engineering is done through what the team (which is just me) calls Milestone 5A: native files, per-window recovery, hosted auth and AI, account and billing links, version-bump scripting, a tag-triggered signed build workflow, updater UI, and draft-release automation are all implemented in code.

What is left is not more engineering, it is administrative: signing and release infrastructure that has to be set up once, correctly, and then stays out of the way. In plain terms, I am waiting on publishing keys, not writing more code. macOS is the release candidate, Windows is right behind it, and Linux is planned after that.

The original problem was tool fragmentation: I was tabbing between a path editor, an optimizer, and a measurement tool just to finish one icon. A year later, that problem got solved inside one tool instead of by staying a single-purpose page: import from anywhere, edit with real boolean operations, get AI assistance when you want it, export to ten different formats, sync across devices if you choose to, and now, soon, a native app to do it all in.

The editor at subpath.dev is still free and still works without an account. If you check it out, I would be curious whether the export pipeline actually saves you the copy-paste dance I built it to kill, or whether I am the only one who found that dance annoying.

Griffen Fargo headshot

Griffen Fargo

Published

Share
Keep Reading

Discussion

Have thoughts? Drop them in.

Comments are powered by Disqus. Sign in once, comment anywhere.

Loading comments…