diff --git a/apps/client/src/widgets/collections/board/api.ts b/apps/client/src/widgets/collections/board/api.ts
index cc00b5495..7188ef699 100644
--- a/apps/client/src/widgets/collections/board/api.ts
+++ b/apps/client/src/widgets/collections/board/api.ts
@@ -43,6 +43,27 @@ export default class BoardApi {
         await attributes.setLabel(noteId, this.statusAttribute, newColumn);
     }
 
+    async addNewColumn(columnName: string) {
+        if (!columnName.trim()) {
+            return;
+        }
+
+        if (!this.viewConfig) {
+            this.viewConfig = {};
+        }
+
+        if (!this.viewConfig.columns) {
+            this.viewConfig.columns = [];
+        }
+
+        // Add the new column to persisted data if it doesn't exist
+        const existingColumn = this.viewConfig.columns.find(col => col.value === columnName);
+        if (!existingColumn) {
+            this.viewConfig.columns.push({ value: columnName });
+            this.saveConfig(this.viewConfig);
+        }
+    }
+
     async removeColumn(column: string) {
         // Remove the value from the notes.
         const noteIds = this.byColumn?.get(column)?.map(item => item.note.noteId) || [];
diff --git a/apps/client/src/widgets/collections/board/index.tsx b/apps/client/src/widgets/collections/board/index.tsx
index df3fcf6cd..483703552 100644
--- a/apps/client/src/widgets/collections/board/index.tsx
+++ b/apps/client/src/widgets/collections/board/index.tsx
@@ -189,46 +189,20 @@ export default function BoardView({ note: parentNote, noteIds, viewConfig, saveC
                         
                     )}
 
-                    
+                    
                 
             
         
     )
 }
 
-function AddNewColumn({ viewConfig, saveConfig }: { viewConfig?: BoardViewData, saveConfig: (data: BoardViewData) => void }) {
+function AddNewColumn({ api }: { api: BoardApi }) {
     const [ isCreatingNewColumn, setIsCreatingNewColumn ] = useState(false);
-    const columnNameRef = useRef(null);
 
     const addColumnCallback = useCallback(() => {
         setIsCreatingNewColumn(true);
     }, []);
 
-    const finishEdit = useCallback((save: boolean) => {
-        const columnName = columnNameRef.current?.value;
-        if (!columnName || !save) {
-            setIsCreatingNewColumn(false);
-            return;
-        }
-
-        // Add the new column to persisted data if it doesn't exist
-        if (!viewConfig) {
-            viewConfig = {};
-        }
-
-        if (!viewConfig.columns) {
-            viewConfig.columns = [];
-        }
-
-        const existingColumn = viewConfig.columns.find(col => col.value === columnName);
-        if (!existingColumn) {
-            viewConfig.columns.push({ value: columnName });
-            saveConfig(viewConfig);
-        }
-
-        setIsCreatingNewColumn(false);
-    }, [ viewConfig, saveConfig ]);
-
     return (
         
             {!isCreatingNewColumn
@@ -236,33 +210,25 @@ function AddNewColumn({ viewConfig, saveConfig }: { viewConfig?: BoardViewData,
                 {" "}
                 {t("board_view.add-column")}
             >
-            : <>
-                 finishEdit(true)}
-                    onKeyDown={(e: KeyboardEvent) => {
-                        if (e.key === "Enter") {
-                            e.preventDefault();
-                            finishEdit(true);
-                        } else if (e.key === "Escape") {
-                            e.preventDefault();
-                            finishEdit(false);
-                        }
-                    }}
+                    save={(columnName) => api.addNewColumn(columnName)}
+                    dismiss={() => setIsCreatingNewColumn(false)}
+                    isNewItem
                 />
-            >}
+            )}
         
     )
 }
 
-export function TitleEditor({ currentValue, save, dismiss, multiline, isNewItem }: {
-    currentValue: string,
-    save: (newValue: string) => void,
-    dismiss: () => void,
-    multiline?: boolean,
-    isNewItem?: boolean
+export function TitleEditor({ currentValue, placeholder, save, dismiss, multiline, isNewItem }: {
+    currentValue?: string;
+    placeholder?: string;
+    save: (newValue: string) => void;
+    dismiss: () => void;
+    multiline?: boolean;
+    isNewItem?: boolean;
 }) {
     const inputRef = useRef(null);
 
@@ -276,7 +242,8 @@ export function TitleEditor({ currentValue, save, dismiss, multiline, isNewItem
     return (
          {
                 if (e.key === "Enter") {
@@ -298,5 +265,5 @@ export function TitleEditor({ currentValue, save, dismiss, multiline, isNewItem
                 dismiss();
             }}
         />
-    )
+    );
 }