Blog

News from the versioned universe

VersionPress 2.0 Released

I'm happy to announce that VersionPress 2.0 has been released! This release brings the much awaited database sync functionality that is key for things like easy staging, team workflows etc., as well as a major update to a user interface that is now completely JavaScript-based. There were also a host of other improvements and generally, VersionPress 2.0 is a big update over the spring v1 release.

Database synchronization

One of the hardest things in WordPress is to handle multiple instances of a site. For example, you would ideally want to have a dev version of a site, then probably some sort of staging and then the live site. It is easy to create all these environments but really hard to merge between them. Why? Because of the database. Some tools help with that to some degree but it is generally an unpleasant task, until VersionPress 2.0.

db-merges

Database merge in action

Database synchronization is a culmination of our work so far. I've written a detailed blog post on it which I encourage you to read but the TL;DR is:

  • VersionPress can clone sites & merge them back together effortlessly. Not just their files but also their databases.
  • The merge is the killer feature here, as it just works most of the time. VersionPress avoids merge conflicts whenever possible.
  • The whole workflow is naturally integrated with Git workflows so for example when there is a real conflict, you can use Git tools & workflows to resolve it.
  • v2 implements the feature as a set of WP-CLI commands, full GUI is coming in a future update.

New GUI

With VersionPress 2.0, we're parting with the old way of creating WordPress plugins UI using a combination of PHP, HTML & CSS and are introducing a new stack that is heavily JavaScript-based. Specifically, we use React + WP REST API + TypeScript. As a result, the GUI can do much more, is more responsive and we can deliver richer functionality faster.

full-diff-view

New UI features, new UI stack

The main user interface element in v2 is still the main table with past changes and the undo / rollback buttons but every row can now be expanded to show a full diff and there are a couple of other nice features added in this release, see the blog post on the new UI.

Other notable changes

With every release, we try to make VersionPress more and more compatible with some of the challenging parts of WordPress or its broad ecosystem. This time, for example, we resolved a hard technical issue with the db.php drop-in. This means that VersionPress 2.0 is able to run side by side with some other popular plugins like W3 Total Cache or Query Monitor.

We have also improved the automatic change tracking of some less common actions like translation updates, certain bulk changes, menu updates, etc.

One other area that we also work continuously is performance. Especially challenging is the initial activation step as we need to commit everything into the internal Git repository and that can take a lot of time if the site is large. Our code there was rather simple and with performance optimization in v2, we saw sites dropping times required for initial activation from over 2 minutes down to 5 seconds.

VersionPress 2.0 also adds some minor compatibility fixes with WordPress 4.3.

You can find all the details in the release notes.

How to get VersionPress 2.0

The first couple of releases, including 2.0 (and possibly also a future 3.0) are distributed via the Early Access Program which you can join on our homepage. EAP is here for early adopters who want to get their hands on VersionPress and don't mind its relative immaturity and some limitations. It's also a great way for you to contribute to the project if you find it interesting.

What's next

We have already started working on VersionPress 3.0 and I'll publish a blog post soon on what to expect in that release.

Thanks for reading!

Discuss & subscribe on Reddit:

r/VersionPress