Skip to content

Repository files navigation

Migrate Local to WordPress Studio

A desktop app that migrates WordPress sites from Local (by Flywheel) to WordPress Studio — packaging and importing them automatically.

Migrate Local to WordPress Studio

Why

Many WordPress developers run their local sites in Local, but Automattic's Studio is a lighter, faster alternative for local WordPress development. Moving a site between them by hand means exporting the database, filtering out incompatible data, copying wp-content, writing a meta.json / wp-config.php for Studio's importer, and running the CLI commands yourself — for every single site.

This app automates that entire process end to end: point it at your existing Local installation, pick a site, and it packages and imports it into Studio, tracking which sites have already been migrated so you never redo work by mistake.

Features

  • Scans your Local installation (its sites.json) and lists every site with its status: Pending / Packaged / Migrated.
  • Generates an editable meta.json (site URL, PHP/WordPress versions, plugins/themes with active state) from disk — no need to boot the site.
  • Packages the .zip Studio's importer expects, filtering out SQL tables with binary/varbinary columns that would break the import.
  • Runs studio create + studio import for you, with live progress bars and streaming CLI output — long migrations never look frozen.
  • Preflight checks before touching anything: Studio app/CLI presence, duplicate detection against studio list, PHP version compatibility.
  • Once a site is confirmed migrated (cross-checked live against studio list), you can delete it from Local — folder and sites.json entry — directly from the app. Studio is never touched by deletion.
  • Translatable UI (English + Spanish included); adding a language is a single JSON file.

The Studio CLI (studio) ships bundled with the Studio desktop app; this app detects it automatically and shows install instructions if missing.

Quickstart

make install  # install all dependencies
make dev      # run in development mode (hot reload)
make build    # production build for the current platform

See docs/development.md for prerequisites and details, and make help for all targets.

How the migration flow works

Local site (sites.json + app/public + app/sql/local.sql)
        │
        ▼
  1. Scan & meta.json         reads wp-config/theme/plugin state from disk
        │                     and cross-references the SQL dump for active
        │                     plugins/theme
        ▼
  2. Package (.zip)           filters the SQL dump (drops binary/varbinary
        │                     columns that break Studio's importer), copies
        │                     wp-content, writes wp-config.php stub
        ▼
  3. studio create            creates an empty site in ~/Studio/<slug>
        │
        ▼
  4. studio import <zip>      imports the packaged site into it
        │
        ▼
  Site marked "Migrated"      cross-checked live against `studio list`

Every step streams live progress and CLI output back to the UI. The full picture — modules, events, state file — is in docs/architecture.md.

Stack, and why

  • Tauri v2 — a small native binary instead of an Electron app. The app spends its time on file I/O and spawning an external CLI; Tauri's Rust backend does that natively, and the bundle stays tiny.
  • Rust (backend) — scanning, SQL filtering, copying/zipping, and CLI process management are CPU/IO-bound work that benefits from Rust's performance and safety, with no extra IPC layer to maintain.
  • React 18 + TypeScript + Vite (frontend) — a simple, fast-refreshing UI with type-safe Tauri command payloads on both ends.

Translations

The UI ships in English (default) and Spanish. Adding a language is dropping one JSON file into src/i18n/ — it's auto-discovered, appears in the language selector automatically, and missing keys fall back to English. Full guide: docs/translations.md.

Documentation

Notes and edge cases

  • Multisite sites are packaged the same way, but the app warns that the import may need manual follow-up.
  • Sites without app/public or a SQL dump can't be migrated (the button is disabled).
  • Migration state, staging directories, and generated .zip files live under ~/.migrate-local-wpstudio/.

Contributing

Contributions are welcome — translations are the easiest way to start. See CONTRIBUTING.md.

License

GPL-2.0 — the same license as Automattic's Studio.

About

Mac App to migrate Local sites to WordPress Studio

Resources

Contributing

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages