Skip to content

ImageGif

Search for animated GIFs and insert one into the document.

Setup

Start with the packages in Getting Started. This complete example registers the feature and renders its UI. In an existing editor, merge the imports and extension entries into your setup, and place the controls inside your existing RichTextProvider.

tsx
'use client';

import { EditorContent, useEditor } from '@tiptap/react';
import { Document } from '@tiptap/extension-document';
import { Paragraph } from '@tiptap/extension-paragraph';
import { Text } from '@tiptap/extension-text';
import { RichTextProvider } from 'reactjs-tiptap-editor';
import { ImageGif, RichTextImageGif } from 'reactjs-tiptap-editor/imagegif';
import { RichTextBubbleImageGif } from 'reactjs-tiptap-editor/bubble/media';
import 'reactjs-tiptap-editor/style.css';

const extensions = [
  Document,
  Paragraph,
  Text,
  ImageGif.configure({ provider: 'giphy', API_KEY: 'YOUR_GIPHY_API_KEY' }),
];

export default function ImageGifExample() {
  const editor = useEditor({
    extensions,
    content: '<p>Try this feature here.</p>',
    immediatelyRender: false,
  });

  if (!editor) return null;

  return (
    <RichTextProvider editor={editor}>
      <RichTextImageGif />
      <RichTextBubbleImageGif />
      <EditorContent editor={editor} />
    </RichTextProvider>
  );
}

How to use

Set provider to "giphy" (the default) or "tenor", and supply that provider’s API_KEY. The placeholder in the example must be replaced for search to work. Click the GIF button, search, and choose a result. Mount RichTextBubbleImageGif for contextual editing.

Source

SourceDocs

Contributors

Changelog

v1.0.31 on 7/29/2026
91573 - fix: preserve GIF size after reload
v1.0.0 on 12/7/2025
c67ed - fix: conflict
51948 - feat: refactor code, dynamic bubble, toolbar, fix error
v0.4.0 on 12/4/2025
6a3a7 - feat: migrate tiptap v2 to v3
v0.3.29 on 10/22/2025
72c36 - feat: intergrate tenor gif api

Made with ❤️