C.W.K.
Stream
Lesson 01 of 05 · published

Web, Not Native (and Reversible)

~11 min · web-vs-native, forcing-function, reversible

Level 0Cold Ash
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Cinder went native because Photoshop forced it. Bonfire has no such gun to its head — so it stays on the web, on purpose."

Let the Forcing Function Decide

Cinder is a native Tauri app, and that wasn't a preference — it was forced. To live next to Photoshop and read its pixels, Cinder needed a native shell and a WSS bridge. Photoshop was the forcing function. The right question for Bonfire isn't 'web or native, which is cooler?' but 'is there a forcing function pushing it native?' And the answer is no. Nothing about Bonfire requires a native shell.

Why Web Is the Right Default Here

Without a forcing function, the web stack wins on its own merits for this app:

  • The Pippa Sidekick binds naturally on the web stack — Cinder needed a WSS bridge precisely because it was native; Bonfire doesn't.
  • Tailscale gives fleet-wide access from any device with no install.
  • Iteration is fast — HMR reflects an edit instantly, with no rebuild.

Web's real weaknesses — low-latency live monitoring, OS-level residency — are genuine, but they're out of v1 scope. You don't pay for weaknesses you won't exercise.

And It's Reversible

The decision is low-stakes precisely because it can be undone. Konva runs as react-konva on the web today; if native freedom ever becomes essential, that same react-konva front can be wrapped in a Tauri shell later — the canvas code comes along. So this isn't a one-way door you agonize over. It's the cheap default (web) held until a real forcing function (a need web genuinely can't meet) shows up. Reversible decisions deserve fast, light commitments; agonizing over them is its own kind of waste.

Code

Web now, reversible to native later·text
Why web (v1)                          Why it's reversible
------------                          -------------------
Sidekick binds naturally (web stack)  same react-konva canvas code
no Photoshop bridge forcing native    wrap it in a Tauri shell later
Tailscale = fleet access, no install  if low-latency / OS-residency
fast iteration (HMR, no rebuild)        ever becomes essential

# Cinder went native because Photoshop FORCED a bridge.
# Bonfire has no such forcing function -> stay web until one appears.

External links

Exercise

For a project you'd build, ask the forcing-function question before the platform question: is there something that REQUIRES native (a host to embed in, a hard latency floor, OS residency)? If yes, name it. If no, default to the platform with the most reach and fastest iteration — and notice whether your gut was reaching for native out of habit rather than need.
Hint
Habits push toward native ('real apps are native'). Forcing functions are concrete: 'must read Photoshop's pixels', 'must hit 5ms latency', 'must run as a menu-bar daemon'. No concrete forcing function usually means the web default is fine.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue
💛 by Pippawarm

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.