WordPress 7.0 lands soon, and while most of the coverage is about the Interactivity API, anyone who builds admin tools for a living is watching a different part of the release: WordPress 7.0 DataViews and DataForm. If your custom list tables and settings pages are still built the old PHP way, you already know how that goes. Every screen behaves a little differently, the JS breaks when you look at it, and there is no standard validation anywhere.
I have spent about ten years on custom admin screens that fall over the moment a client updates a plugin, so I read these APIs with some relief. There is finally a structure to build against. That said, a few things changed in ways that will break your code if you copy from older documentation.
The Field API and formatting
The Field API expansion is the part of WordPress 7.0 DataViews I expect to lean on most. Previously, showing a file size or a currency format meant writing a custom component for it. Date formatting was worse: you kept PHP date strings and a JS library in sync and hoped they agreed.
There is now a declarative format property and a getValueFormatted hook, so you can define how a value appears without going into the React component. The new adaptiveSelect control is the other one worth knowing about. It switches from a plain select to a combobox once the elements list gets long, which keeps the browser from choking on thousands of DOM nodes.
const fileSizeField = {
id: "filesize",
label: "Storage Used",
type: "integer",
getValueFormatted: ( { item, field } ) => {
const bytes = field.getValue( { item } );
if (!bytes) return "0 B";
const units = ["B", "KB", "MB", "GB"];
let i = 0;
let size = bytes;
while (size >= 1024 && i < units.length - 1) {
size /= 1024;
i++;
}
return `${size.toFixed(1)} ${units[i]}`;
},
};
The groupBy breaking change
If you already shipped something against WordPress 6.9, this is the one to check. The groupByField string is gone, replaced by a groupBy object. Leave your view configuration as it is and the grouping simply disappears, with no error to tell you why. The object version does buy you something: direction and label visibility now live in the same config block.
// WordPress 6.9 (Old Way - Will Break)
const oldView = { groupByField: 'status' };
// WordPress 7.0 (The Fix)
const newView = {
groupBy: {
field: 'status',
direction: 'desc',
showLabel: true
}
};
DataForm and layout standardization
DataForm also changed how it handles complex metadata. The new details layout renders native HTML <details> elements, which helps both performance and accessibility. I have seen developers write 50 lines of JS for a collapsible accordion that WordPress 7.0 now covers with a single layout property, which leaves you free to spend the time on validation instead of UI animation.
Validation got a real upgrade too. The isValid property handles regex pattern, minLength and max natively, so no more custom save hooks written purely to check that a phone number is sane before it reaches the REST API.
If you want the wider picture, I wrote about why the WordPress 7.0 release changes everything for core developers, and there is a companion piece on the admin refresh insights if you want to see where the UI is headed.
If WordPress 7.0 DataViews work is eating your dev hours, hand it over. I have been doing WordPress since the 4.x days, and I watched every earlier attempt at a standard admin UI fizzle out before this one.
What to do about it
The direction here is a structured, data driven admin. The learning curve on these React APIs is steeper than WP_List_Table ever was, and the payoff is real: interfaces that feel faster, and validation that behaves the same on every screen. Refactor the groupBy config first, since that is the one that breaks silently. After that, move your formatting into the Field API and delete the custom components Core now covers for you.