Skip to content

Enable content versioning and review workflow in Strapi 5 with Revisionary

Learn step‑by‑step how to install Revisionary, configure versioned content types, use the version history panel, set up reviews, and expose history via the Content API.

By the Revisionary team · · 5 min read

turned-on MacBook Pro wit programming codes display
Photo by Arnold Francisca on Unsplash

You can enable full content versioning and a review workflow in Strapi 5 by installing the Revisionary plugin, marking the desired content types as versioned, and using the built‑in panels for history, reviews, and trash. The plugin records every change, lets multiple editors collaborate safely, and exposes the version data through the Content API.

1. Why use Revisionary for versioning and reviews?

Revisionary turns a plain Strapi project into a collaborative publishing platform. It:

  • Stores a complete history for each entry, down to field‑level changes.
  • Provides a visual Version history panel in the Content Manager.
  • Offers a Review space where editors can approve or reject pending changes.
  • Keeps deleted entries in a Trash per locale, so accidental deletions are recoverable.
  • Logs every sensitive action in an Audit log for compliance. All of these features are configurable without writing custom code, making them ideal for agencies and teams that need traceability and editorial control.
watercolor wireframe sketches of website layouts
Photo by Hal Gatewood on Unsplash

2. Installing Revisionary

  1. Download the latest Revisionary zip from your account portal.
  2. Extract the zip into the ./plugins folder of your Strapi project.
  3. Run the installation command:
bash
npm run strapi build && npm run strapi develop

The plugin will detect the existing Strapi 5 installation, migrate any previous data, and record an Plugin updated entry in the audit log. See the official install guide for details: /docs/getting-started/install.

3. Configuring versioned content types

After the plugin is active, you must decide which content types should keep a version history.

  1. Open Settings → Plugins → Revisionary in the Strapi admin.
  2. In the Content types tab, toggle the switch for each collection type you want to version.
  3. Click Save at the bottom of the page (the General settings page) to apply the changes. The configuration is stored in config/plugins.ts. A minimal example:
ts
export default ({ env }) => ({
  // other plugins …
  revisionary: {
    enabled: true,
    versionedContentTypes: ['api::article.article', 'api::page.page'],
    // optional: retention policy in days
    retentionDays: 365,
  },
});

For a full list of configuration options, refer to /docs/reference/configuration.

4. Using the Version history panel

When you open an entry of a versioned type, the right column shows the Version history panel. It lists every saved version, grouped by day, with the most recent at the top. Features:

  • Field‑level diff: Hover a field and click the clock icon to see what changed.
  • Compare two versions: Select any version and click Compare to view differences against the current entry.
  • Restore: Click Restore or press R on a version to roll back the entry to that state.
  • Milestones: Name a version (e.g., “Approved by legal”) for quick retrieval. These actions are recorded in the audit log, which you can inspect under /docs/recover-and-audit/audit.

5. Setting up a review workflow

The Review space lets editors submit changes for approval before they go live.

  1. In Settings → Roles → Plugins → Revisionary, ensure the permission "Can submit for review" is granted to the appropriate roles.
  2. When editing an entry, click Submit for review instead of Publish. The entry moves to the Review space, visible under the Reviews tab.
  3. Reviewers see a list of pending entries, each with a Diff view and buttons to Approve, Reject, or Request changes.
  4. Approving a review automatically publishes the entry and records the action in the audit log. Rejecting returns the entry to draft status, preserving the version history. The review process integrates with the Collaboration features: if two users open the same entry, the first user holds an edit lock, and the second sees a notification. Learn more about edit locks at /docs/teamwork/locks.

6. Managing deleted content – Trash and retention

When a versioned entry is deleted, Revisionary moves its last state to the Trash for each locale. This prevents permanent loss and allows selective restores.

  • Open the Trash panel from the left navigation.
  • Locate the deleted entry, preview its content, and click Restore to bring it back.
  • Trash entries respect the Retention and storage settings (see /docs/settings/retention). You can configure how many days autosaves and trash items are kept before automatic purging.

7. Exposing version history via the Content API

Front‑end applications often need to display change logs or roll back to a previous version. Revisionary extends the default Content API with version endpoints. Example request to fetch the history of an article (replace ARTICLE_ID):

bash
GET /api/articles/ARTICLE_ID/versions?populate=*

The response includes an array of version objects, each containing:

  • id – version identifier
  • createdAt – timestamp of the save
  • locale – locale code
  • data – the full snapshot of the entry at that moment
  • diff – a list of changed fields (optional, enabled via query param) Front‑ends built with Next.js can call this endpoint during server‑side rendering or in ISR revalidation to show a “last updated” log. For the full API reference, see /docs/reference/content-api.

8. Best practices for teams

PracticeReason
Version only essential typesReduces storage overhead and keeps the audit log focused.
Set a realistic retention periodAligns with compliance requirements and prevents unbounded growth.
Assign dedicated reviewersStreamlines the approval process and avoids bottlenecks.
Use Milestones for legal or marketing sign‑offsMakes it easy to locate the exact version needed for audits.
Monitor the audit log regularlyDetects unexpected restores or deletions early.
Enable edit‑lock notificationsPrevents two users from overwriting each other’s work.

9. Updating or removing Revisionary

When a new version of the plugin is released, you can update it via the Update, disable, uninstall page. The process automatically migrates existing version data and logs the update. See the step‑by‑step guide at /docs/reference/update-uninstall. If you ever need to uninstall, the plugin will clean up its tables but will keep a final audit entry for traceability.

black and silver laptop computer
Photo by Justin Morgan on Unsplash

10. Summary

Revisionary adds robust content versioning, a built‑in review workflow, trash handling, and a full audit trail to any Strapi 5 project. By installing the plugin, marking the right content types, and configuring review permissions, teams gain full editorial control without writing custom code. The version history panel, review space, and API extensions make it straightforward to collaborate, comply with regulations, and surface change information to front‑end applications.


For further reading, explore the other sections of the Revisionary documentation such as /docs/everyday-use/field-history for field‑level diff details, or /docs/teamwork/review for deeper workflow configurations.

TagsStrapiRevisionarycontent versioningreview workflowaudit log

The Revisionary team

Developers who build Revisionary, a version history plugin for Strapi 5. We write about Strapi, web development, AI and application security.

This article was written with the help of AI.

All articles