Date

WordPress Meets WASM: Full Power of the CMS in Any App

Last week at WASMCon 2024, I had the privilege of speaking about something I’m incredibly passionate about: using WordPress in non-traditional ways. My talk, “WordPress Meets WASM: Full Power of the CMS in Any App,” explored how WordPress, a platform many associate with traditional websites, can now be embedded and run virtually anywhere, thanks to technologies like WebAssembly (WASM).

Below is a recap for those who prefer reading over watching videos.

A Journey of Non-Traditional WordPress Use

I began by sharing a personal story from 2006, when I stumbled upon a Flash-based website for the marketing agency Leo Burnett that inspired me to learn Flash development.

(NOTE: You can view the 2006 version of the Leo Burnett website on Archive.org)

That curiosity eventually led me to WordPress when I needed a way to manage content in a Flash site without requiring the end user to know Flash. Back then, I discovered WordPress and its XML-RPC API that could be used to connect a Flash front end to a WordPress back end. While that project didn’t go far, it was my first step into the world of WordPress, and it changed the trajectory of my career.

Fast forward to 2016, I created WPGraphQL, a free, open-source plugin that allows developers to use WordPress as a GraphQL API. This opens up countless possibilities for building decoupled or headless front ends with frameworks like Next.js, Gatsby, and Astro, or even native mobile apps. The content lives in WordPress, but how it’s rendered is entirely up to the developer.

Enter WordPress Playground

While WPGraphQL has made headless WordPress more accessible, developers still face challenges in quickly setting up environments to test plugins or content workflows. Traditionally, this would require setting up a local server with PHP, MySQL, and Apache.

WordPress Playground changes everything.

WordPress Playground leverages WebAssembly to run WordPress entirely in the browser — no server required. PHP is compiled to WebAssembly (PHP-WASM), MySQL is replaced by SQLite, and server functionality is replaced by JavaScript APIs. This means anyone can instantly spin up a WordPress instance in their browser, making it easier than ever to demo plugins or test workflows.

Real-World Use Cases

I highlighted two practical use cases during my talk:

Plugin Demos and Live Previews

With WordPress Playground, plugin developers like me can offer live previews directly in the browser. For example, if you’re browsing the WordPress.org repository, a plugin could have a “Live Preview” button. Clicking it would launch a full WordPress instance with the plugin activated, allowing users to test it instantly—no setup required.

Markdown Documentation Editing

I use WordPress to manage my blog content, but I prefer keeping my documentation in Markdown files close to the codebase. WordPress Playground enables me to bridge the gap between these workflows. I can import Markdown files from a GitHub repository into WordPress running in the browser, make edits using a familiar CMS interface, and export the updated files back to GitHub as a pull request. This workflow combines the strengths of both traditional CMSs and modern version control systems.

Beyond the Browser

WordPress Playground isn’t limited to browser-based workflows. It can run in:

  • Terminal applications
  • Native mobile apps
  • Desktop environments
  • Embedded in web pages
  • Edge servers for near-instant content delivery

This versatility allows WordPress to adapt to countless use cases, redefining how and where it can be used.

A Call to Action

WordPress Playground is a free, open-source project that pushes the boundaries of what’s possible with WordPress. Whether you’re a long-time WordPress user or new to the platform, I encourage you to explore how this technology can power your projects or inspire you to build something new. For more information, visit WordPress Playground.

Thank you to everyone who attended my talk or watched it online. If you’d like to chat more, find me on X/Twitter at @jasonbahl.