As WooCommerce Payments continues to grow, ensuring that we provide a stable, secure, and efficient experience for merchants is a top priority. One area we’re evaluating is the policy around which versions of WordPress we support—specifically, whether to adopt a stricter L-2 policy, meaning official support only for the latest two major WordPress versions. This shift would help streamline development and testing, but it comes with tradeoffs we want to carefully consider.
Why Haven’t We Implemented a Stricter L-2 Policy Yet?
The main reason we’ve held off on enforcing a stricter L-2 policy is to support as many merchants as possible. Some stores don’t update WordPress immediately for a variety of reasons—compatibility concerns, customizations, or just caution around change. Our current “loose” L-2 policy reflects this: we say we support the latest two versions, but in practice, we don’t block older versions from running WooPayments, and our CI still runs tests against them in some cases.
Maintaining this broader support helps minimize friction for merchants and gives them more flexibility in how and when they upgrade.
Challenges If We Do Not Enforce a Stricter L-2
While broad compatibility is beneficial for users, it creates real challenges for development and testing:
- Increased Maintenance Overhead: Supporting older WordPress versions often means keeping legacy compatibility code around, which increases the complexity of our codebase.
- Testing Complexity: Different WordPress and PHP combinations require specific versions of PHPUnit. Our CI pipeline has to include hacks to install and configure the right versions, making the system fragile and hard to maintain.
- Reduced Developer Velocity: Supporting many combinations means slower builds, more bugs slipping through, and more time spent troubleshooting issues that don’t affect the majority of users.
- Inability to Adopt Modern APIs: We’re often blocked from using newer WordPress features until we drop support for versions that don’t include them.
In short, the more versions we support, the more technical debt we accumulate—and that makes it harder to build new features confidently and efficiently.
How Do We Make the Decision?
To make a responsible choice, data must drive the decision. Specifically, we need to understand how many active merchants are running WooPayments on older versions of WordPress. If that number is small—say, under 1%—then the impact of enforcing a stricter L-2 policy would be minimal.
This data could come from usage tracking, opt-in telemetry, or marketplace stats. The goal is to quantify the tradeoff: how many users would be affected vs. how much complexity we remove by dropping support.
We’re also considering what the test matrix should look like. It’s not just about which versions are supported, but also which ones we validate in CI. A leaner, more focused CI pipeline makes our code more reliable and our releases more predictable.
What We Will Do Next
Our next steps will focus on data gathering and planning:
- Collect usage data to see which WordPress versions are most common among WooPayments users.
- Define our support baseline based on that data, likely aiming to officially support only the latest two versions.
- Simplify our CI strategy to only cover supported versions, removing outdated PHPUnit workarounds.
- Introduce runtime checks in WooPayments to block usage on unsupported WordPress versions with helpful error messages.
- Communicate the change clearly and in advance so merchants and developers have time to adjust.
This is part of our broader effort to modernize the WooPayments plugin, reduce technical debt, and provide a better experience for everyone—from merchants to developers.