Running Frappe Entirely in the Browser with WASM, Pyodide and SQLite

Ajit Bohra Avatar
,

Exploring Different Ecosystems

We have always believed in using the right tools for the job.

That mindset naturally pushed us across ecosystems over the years, including WordPress, Laravel and Frappe. Each shaped how we think about products, tooling and developer experience.

And honestly, the cross-pollination has been one of the most exciting parts of our journey.

There is a lot to learn when you stop treating ecosystems like silos.

The Inspiration: WordPress Playground

WordPress has always fascinated us. Not just because of its scale, but because of how approachable it makes the web. Better tooling. Better workflows. Better onboarding. One project that especially caught our attention was WordPress Playground.

A full WordPress instance running entirely in the browser using WebAssembly and SQLite.

  • No server setup.
  • No DevOps.
  • No onboarding friction.

Just open a URL and WordPress boots instantly.

Falling Deeper into Frappe

We have been around the Frappe ecosystem for years now. What started as curiosity slowly became part of our internal systems and client work. And the deeper we went, the more possibilities we saw. Frappe has some genuinely powerful ideas baked into it, including rapid development, metadata-driven architecture and strong business primitives.

At the same time, working across ecosystems constantly makes you ask: “What if we could bring ideas from one ecosystem into another?” That question stayed with us.

Early Experiments

We started exploring this idea quite a while ago. Could Frappe run entirely client-side in the browser? At the time, the answer was mostly “not really.” Framework assumptions, dependencies and infrastructure requirements made it difficult. We experimented, hit walls, shelved it and came back later. But the idea never fully went away.

What Changed with Frappe v16

Then came Frappe v16 with SQLite support. That changed everything. Suddenly the idea felt possible again. We revisited earlier experiments, connected a few dots and started hacking on the concept again. And eventually, after a lot of workarounds and late-night tinkering, we got a working proof of concept.

Frappe running entirely in the browser.

  • Client-side
  • Powered by Pyodide
  • Using Python compiled to WebAssembly
  • Backed by SQLite

It is still highly experimental. And honestly, slightly cursed in places. But it works. And seeing Frappe boot inside the browser for the first time felt magical.

Why This Matters

Ideas like this open a lot of doors.

  • For onboarding.
  • For demos.
  • For education.
  • For experimentation.
  • For disposable environments.
  • For interactive documentation.

A lot becomes possible when setup friction disappears. Instead of asking someone to install five things before trying Frappe, you just send them a link.

What We Learned Along the Way

This process also gave us a deeper understanding of Frappe itself.

When you force a framework into an unusual environment, you quickly discover which assumptions are deeply baked into the architecture. Some parts adapted beautifully. Some resisted hard.

That exploration gave us valuable insights into areas where Frappe could become lighter, more modular and more flexible over time. We plan to share many of these learnings publicly and contribute improvements back wherever possible.

Because that is the fun part of open source.

  • You experiment.
  • You break things.
  • You learn.
  • You contribute back.

And the ecosystem gets better for everyone.

What Comes Next

This is still just the beginning. Right now it is a small proof of concept taking its first steps. But we already have a long list of ideas we want to explore around it:

  • Better packaging
  • Smoother boot flows
  • Snapshots
  • Template environments
  • Embedded demos
  • Education tooling
  • Instant playgrounds

And probably a few weird experiments in between.

Frappe often gets called “WordPress for ERPs.” So we thought: why not bring some of the browser-powered magic around WordPress into the Frappe ecosystem too?

Try It Yourself

You can try the working POC here: https://frappe-playground.lubus.in/

The project is fully open source: https://github.com/lubusIN/frappe-playground

If this kind of experimentation excites you, do star the repo and follow along as we continue building.

Still early. Still rough around the edges. But sometimes the most interesting ideas start exactly like this.

We build ERPNext customisations, Frappe apps, and internal business tools – and we liked Frappe enough to build our own local dev tool for it. Tell us what you’re trying to solve and where you want to go next – we’ll help you find the sensible next step.