An original weekly duty roster has Day, Person and Desk columns. An author inserts Thursday after Wednesday. The important result is that Thursday's person stays on Thursday's row and the column labels remain actual headers after saving.
Add table controls to the existing initialization
For an application that already loads and initializes a supported current TinyMCE installation, merge these options into its initialization:
tinymce.init({
selector: '#duty-roster',
plugins: 'table',
toolbar: 'undo redo | table',
table_toolbar: 'tableprops tabledelete | ' +
'tableinsertrowbefore tableinsertrowafter tabledeleterow | ' +
'tableinsertcolbefore tableinsertcolafter tabledeletecol'
});
Retain the application's actual loading, license configuration, other plugins and setup callback. This fragment configures table controls; it does not install TinyMCE or supply a save endpoint. If plugins and toolbar already contain other entries, add these identifiers to those lists.
Tiny's Table plugin reference, checked October 24, 2026, documents these identifiers and the contextual toolbar. Place the cursor inside a table to check the context controls. A missing toolbar may mean the cursor is outside the table or the configured controls have moved into an overflow menu.
Give the roster meaningful header cells
Use this authored HTML as a small input fixture:
<table>
<caption>Reception duty, week of November 2</caption>
<thead>
<tr>
<th scope="col">Day</th>
<th scope="col">Person</th>
<th scope="col">Desk</th>
</tr>
</thead>
<tbody>
<tr><td>Tuesday</td><td>Lee</td><td>North</td></tr>
<tr><td>Wednesday</td><td>Sam</td><td>West</td></tr>
</tbody>
</table>
In the running editor, place the cursor in Wednesday's row, choose insert row after, and enter Thursday, Alex, East. Read the preceding row again before saving. A correctly inserted blank row still needs the correct content.
Bold text in a regular cell does not turn it into a header cell. Inspect the stored HTML for th elements and appropriate header associations. Keep the caption outside the data rows so that merging a decorative title cell does not obscure the simple column structure.
Keep editor styling and reader styling aligned
TinyMCE's table options control table configuration. The editor content styles and receiving page styles still need an intentional border, padding and narrow-screen treatment. The content CSS guide explains why authoring content and the final page can look different.
For this three-column roster, test whether wrapping the short text keeps every association clear. If a wider table genuinely needs horizontal scrolling, confine it to a labeled table region so the surrounding article still fits. Do not assume a width set in the editor guarantees the recipient's phone layout.
Verify persistence through the real application
Save with the application's existing path, leave the document and reopen it. Confirm that the caption, header cells, Wednesday's original assignment and Thursday's new assignment survive. The TinyMCE extraction guide covers obtaining current content before the form payload is captured. Obtaining an HTML string alone is not a server save.
The Tiptap table guide uses a different editor model and commands; do not copy those APIs into TinyMCE. Finish this roster by reading the saved recipient view with the toolbar absent and confirming that Alex is still assigned to Thursday at the East desk.