Title: Limitations
Published: July 15, 2026
Last modified: July 16, 2026

---

# Limitations

## In this article

 * [In the browser](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#in-the-browser)
    - [Temporary by design](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#temporary-by-design)
    - [Browser support](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#browser-support)
    - [Performance expectations](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#performance-expectations)
 * [When developing with Playground](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#when-developing-with-playground)
    - [Iframe quirks](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#iframe-quirks)
    - [Run WordPress PHP functions](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#run-wordpress-php-functions)
    - [Using WP-CLI](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#using-wp-cli)

[ Back to top](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#wp--skip-link--target)

WordPress Playground is under active development and has some limitations you should
keep in mind when running it and developing with it.

You can track the status of these issues on the [Playground Project board](https://github.com/orgs/WordPress/projects/180).

## 󠀁[In the browser](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#in-the-browser)󠁿

### 󠀁[Temporary by design](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#temporary-by-design)󠁿

Playground creates fresh WordPress instances on each page load. Refreshing the browser
page discards all database changes, uploads, and modifications.

**Why this happens**: Playground streams WordPress directly to your browser rather
than serving it from a traditional server. Each refresh starts a clean slate.

**To persist your work:**

 * **Save**: Enable browser storage via the “Save” button (top right, next to address
   bar), before refreshing the page via the browser bar.
 * **For development**: Use [Playground CLI](https://developer.wordpress.org/playground/developers/local-development/wp-playground-cli)
   which supports persistent local storage

The dedicated refresh button inside Playground only reloads WordPress content—it
preserves your PHP/WP state. The browser’s refresh button (F5 or Cmd+R) destroys
the entire instance.

![Refresh Playground Button](https://i0.wp.com/raw.githubusercontent.com/WordPress/
wordpress-playground/refs/heads/trunk/packages/docs/site/static/img/refresh-playground-
button.webp?ssl=1)

> _1. Exporting Playground:_
> ![Save Button](https://raw.githubusercontent.com/WordPress/wordpress-playground/
> refs/heads/trunk/packages/docs/site/static/img/export-playground.webp)
> _2. Save button:_
> ![Save Button](https://raw.githubusercontent.com/WordPress/wordpress-playground/
> refs/heads/trunk/packages/docs/site/static/img/saving-playground.webp)

### 󠀁[Browser support](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#browser-support)󠁿

WordPress Playground is designed to work across all major desktop and mobile browsers.
This includes:

 * **Desktop browsers**: Chrome, Firefox, Safari, Edge, and other Chromium-based
   browsers
 * **Mobile browsers**: Safari (iOS), Chrome (Android), and other mobile browser
   variants

Playground leverages modern web technologies and should function consistently across
these browser environments. However, some advanced features may have varying levels
of support depending on the specific browser and its version.

### 󠀁[Performance expectations](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#performance-expectations)󠁿

Loading times vary based on what Playground needs to set up:

  |  Scenario |  Typical Load Time |  
   |  Fresh WordPress (no plugins) |  5-10 seconds |  
 |  With small plugins |  10-20 seconds |  
 |  With large plugins (e.g., WooCommerce) |  30-60 seconds |  
 |  On mobile devices |  1.5-2x slower than desktop |

![Save Button](https://i0.wp.com/raw.githubusercontent.com/WordPress/wordpress-playground/
refs/heads/trunk/packages/docs/site/static/img/playground-performance-graph.webp?
ssl=1)

**Factors that affect performance:**

 * **Plugin size**: Large plugins take longer to install at runtime
 * **Network speed**: WASM files are 15-30MB
 * **Device memory**: Low-memory devices may experience slowdowns
 * **Browser**: Chrome/Edge perform best; Safari slightly slower

>  **Note:** Opera Mini support is not currently confirmed.

## 󠀁[When developing with Playground](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#when-developing-with-playground)󠁿

### 󠀁[Iframe quirks](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#iframe-quirks)󠁿

Playground renders WordPress in an [`iframe`](https://developer.wordpress.org/playground/developers/architecture/browser-iframe-rendering)
so clicking links with `target="_top"` will reload the page you’re working on.
 
Also, JavaScript popups originating in the `iframe` may not always display.

### 󠀁[Run WordPress PHP functions](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#run-wordpress-php-functions)󠁿

Playground supports running PHP code in Blueprints using the [`runPHP` step](https://developer.wordpress.org/playground/blueprints/steps#RunPHPStep).
To run WordPress-specific PHP functions, you’d need to first require [wp-load.php](https://github.com/WordPress/WordPress/blob/master/wp-load.php):

    ```language-json
    {
        "step": "runPHP",
        "code": "<?php require_once('wordpress/wp-load.php'); OTHER_CODE ?>"
    }
    ```

### 󠀁[Using WP-CLI](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#using-wp-cli)󠁿

You can execute `wp-cli` commands via the Blueprints [`wp-cli`](https://developer.wordpress.org/playground/blueprints/steps#WPCLIStep)
step. However, since Playground runs in the browser, it doesn’t support the [full array](https://developer.wordpress.org/cli/commands/)
of available commands. While there is no definite list of supported commands, experimenting
in [the online demo](https://playground.wordpress.net/demos/wp-cli.html) will help
you assess what’s possible.

First published

July 15, 2026

Last updated

July 16, 2026

Edit article

[ Improve it on GitHub: Limitations ](https://raw.githubusercontent.com/WordPress/wordpress-playground/trunk/packages/docs/site/docs/developers/24-limitations/01-index.md)

Changelog

[ See list of changes: Limitations ](https://developer.wordpress.org/playground/developers/limitations/?output_format=md#)

[  Previous: Host your own Playground](https://developer.wordpress.org/playground/developers/architecture/host-your-own-playground/)