따꿍의 프로젝트

[2026.01.18] 에디터 TF팀을 위한 TipTap 조사 본문

웹프로젝트/스노로즈

[2026.01.18] 에디터 TF팀을 위한 TipTap 조사

공장 주인 따꿍 2026. 1. 18. 10:46

TipTap 기능

종류 컴포넌트 유무 컴포넌트 설명 URL
폰트 종류 선택 없음 없음 에디터 내에서 구현해야 함
extension 활용
https://tiptap.dev/docs/editor/extensions/functionality/fontfamily,https://tiptap.dev/docs/editor/extensions/marks/text-style
폰트 크기 있음 Heading button
노션처럼 H1/H2/H3/H4에 따라서 크기가 다름
  https://tiptap.dev/docs/editor/extensions/functionality/fontsize
폰트 굵기 있음 Mark button   https://tiptap.dev/docs/ui-components/components/mark-button
폰트 기울이기 있음 Mark button   https://tiptap.dev/docs/ui-components/components/mark-button
폰트 밑줄 있음 Mark button   https://tiptap.dev/docs/ui-components/components/mark-button
폰트 취소선 있음  Mark button   https://tiptap.dev/docs/ui-components/components/mark-button
폰트 색 (배경, 글자) 있음 Color text popover   https://tiptap.dev/docs/ui-components/components/color-text-popover
서식 정렬(왼쪽, 가운데, 오른쪽) 있음 Text align button   https://tiptap.dev/docs/ui-components/components/text-align-button
서식 줄간격 없음 없음 에디터 내에서 구현해야 함
extension 활용
https://tiptap.dev/docs/editor/extensions/functionality/line-height#page-title
서식 목록 있음 List Button
List dropdown
  https://tiptap.dev/docs/ui-components/components/list-button,https://tiptap.dev/docs/ui-components/components/list-dropdown-menu
폰트 수 제한 기준 없음 없음 에디터 내에서 구현해야 함
extension 활용
https://tiptap.dev/docs/editor/extensions/functionality/character-count#page-title
이미지 추가 있음  image upload button   https://tiptap.dev/docs/ui-components/components/image-upload-button
이미지 주석 없음    직접 구현해야 함 https://tiptap.dev/docs/ui-components/components/image-upload-button
확장성: 링크 있음 Link popover 1. 이미지 extension 활용
2. 커스텀 이모티콘 노드 구현
https://tiptap.dev/docs/ui-components/components/link-popover
확장성: 이모티콘 없음   1. 에디터 내 커스텀 노드 구현
2. 컴포넌트 따로 구현
 
확장성: 지도 없음   1. iframe 활용 -> 지도 임베드
2. 커스텀 지도 노드 구현
 

 

TipTap Install 방식

npm install @tiptap/react @tiptap/pm @tiptap/starter-kit

@tiptap/react: The React bindings for Tiptap including Tiptap's core functionality.
@tiptap/pm: Tiptap's ProseMirror dependencies, which are required for the editor to function.
@tiptap/starter-kit: A collection of commonly used extensions that provide basic functionality like paragraphs, headings, bold, italic, and more.

 

To actually start using Tiptap we need to create a new component. Let's call it Tiptap and add the following example code in src/Tiptap.tsx.

// src/Tiptap.tsx
import { useEditor, EditorContent } from '@tiptap/react'
import { FloatingMenu, BubbleMenu } from '@tiptap/react/menus'
import StarterKit from '@tiptap/starter-kit'

const Tiptap = () => {
  const editor = useEditor({
    extensions: [StarterKit], // define your extension array
    content: '<p>Hello World!</p>', // initial content
  })

  return (
    <>
      <EditorContent editor={editor} />
      <FloatingMenu editor={editor}>This is the floating menu</FloatingMenu>
      <BubbleMenu editor={editor}>This is the bubble menu</BubbleMenu>
    </>
  )
}

export default Tiptap

스노로즈 에디터에서 필요한 기능

  • 기본 에디터:
    • 글꾸: 폰트종류/크기/굵기/기울이기/밑줄/취소/색(배경, 글자)
    • 서식: 정렬/줄간격/목록
    • 그림: 그림 추가(글 사이), 주석
  • 확장성: 투표, 지도, 링크, 이모티콘 등