Jenkins core changed its form layout from <table> to <div> in 2.264 (weekly) and 2.277.1 (LTS).
Jenkins 2.263.x (LTS) releases did not change their form layout from <table> to <div>.
The vast majority of plugins do not require any changes at all because they use the standard Jelly tags in Jenkins for their forms, such as <f:entry>, <f:textbox>, and <f:checkbox>.
Debugging
If you are experiencing configuration form problems (e.g., form controls not working, the save button not working, etc.):
Verify that you followed the instructions in the Jenkins 2.277.1 upgrade guide, including updating plugins after installing Jenkins 2.277.1.
Refer to the known broken plugins dashboard; if you are using a plugin that is known to be broken, disable it and upvote the issue.
Provide steps to reproduce the problem on a minimal Jenkins installation; the scenario should fail when the broken plugin is enabled and pass when the broken plugin is disabled.
Use the tables-to-divs-regression label.
Examples of area which may require changes
Below are some areas that may require you to adjust the form layout or JavaScript in your plugin:
Adding td / tr elements directly instead of using the f:entry tag, e.g. config-rotator-plugin#2
Custom JavaScript that is brittle to the Jenkins form UI layout. We’ve done our best to introduce shims, to not cause breakage here,
but if you have written JavaScript that is reliant on the DOM structure you may need to make adjustments,
take a look at the JavaScript changes in jenkins#3895.
Forking jelly taglibs from core and extending them, e.g. multiple-scms-plugin#25,
it would be good to contribute fixes or enhancements to core rather than doing this where possible.
Maintaining such support is preferred where it is easily possible, to allow plugins to be updated and used
on Jenkins deployments with older core versions (including current LTS 2.263.x at the time of this writing).
There is a jelly property set on Jenkins controllers that use div’s for form layout called divBasedFormLayout,
so you can adapt your plugin UI based on the presence of this property.
Note: This property is only set if the form tag uses the f:form jelly tag, and not the HTML form tag,
this will be done automatically for you in form sections but not in actions or custom views.
This will use a table on Jenkins controllers that don’t have divBasedFormLayout and will use a div when it is set.
Note: You will likely need more tags to adapt the tr and td tags to divs see multiple-scms-plugin#25 for a full example, or notification-plugin#40 for an even more extensive example of different wrapper types (note they are shipped in separate files, included from the jelly files to edit with references like xmlns:p="/lib/notification" with a path part relative to src/main/resources/ directory).