← Back to basecamp/trix

How to Deploy & Use basecamp/trix

Trix Rich Text Editor Deployment and Usage Guide

Prerequisites

  • Runtime: Modern web browser (Chrome, Firefox, Safari, Edge) with support for Custom Elements, Element Internals, Mutation Observer, and Promises
  • Package Manager: npm or yarn for installation
  • Development Tools: Any modern code editor (VS Code, Sublime Text, etc.)

Installation

Option 1: CDN (Quick Start)

Include Trix directly in your HTML <head>:

<head>
  <link rel="stylesheet" type="text/css" href="https://unpkg.com/trix@2.0.8/dist/trix.css">
  <script type="text/javascript" src="https://unpkg.com/trix@2.0.8/dist/trix.umd.min.js"></script>
</head>

Option 2: npm Package

Install via npm:

npm install trix

Then import in your application:

import Trix from "trix"

document.addEventListener("trix-before-initialize", () => {
  // Change Trix.config if you need
})

Configuration

Customizing the Toolbar

Override the default toolbar HTML by replacing the Trix.config.toolbar.getDefaultHTML() function. The default toolbar HTML is located in config/toolbar.js.

Custom Text Attributes

Configure text attributes in Trix.config.textAttributes (found in config/text_attributes.js).

Block Attributes

Configure block attributes in Trix.config.blockAttributes.

Element Internals Support

To disable Element Internals support:

import Trix from "trix"

Trix.elements.TrixEditorElement.formAssociated = false

To prevent creation of hidden input element:

addEventListener("before-trix-initialize", (event) => {
  const trixEditor = event.target
  trixEditor.willCreateInput = false
})

Build & Run

Local Development

  1. Create an HTML file with a <trix-editor> element:
<trix-editor></trix-editor>
  1. Open the HTML file in your browser.

Production Usage

Trix is production-ready and can be used directly from the CDN or built into your application bundle.

Deployment

Trix is a client-side JavaScript library and can be deployed with any static hosting service:

  • Vercel - Perfect for static sites
  • Netlify - Easy static site hosting
  • GitHub Pages - Free hosting for open source projects
  • AWS S3 - Scalable object storage with static website hosting
  • Cloudflare Pages - Fast global CDN

Simply include the Trix CSS and JavaScript files in your deployed HTML files.

Troubleshooting

Common Issues

Issue: Toolbar not appearing Solution: Ensure you have included both trix.css and trix.umd.min.js files.

Issue: Editor not responding to input Solution: Check browser compatibility. Trix requires support for Custom Elements, Element Internals, Mutation Observer, and Promises.

Issue: Attachments not working Solution: Verify that the attachFiles method is properly implemented in your configuration.

Issue: Form submission not working Solution: Ensure the <trix-editor> element has a corresponding <input type="hidden"> element or configure Element Internals support properly.

Browser Compatibility

Trix supports all evergreen, self-updating desktop and mobile browsers. For detailed browser support matrix, refer to the Sauce Labs browser matrix badge in the README.

Debugging

  • Use browser developer tools to inspect the <trix-editor> element
  • Check the browser console for JavaScript errors
  • Verify that all required CSS and JavaScript files are loading correctly

Performance

Trix is optimized for performance. If you experience issues:

  • Ensure you're using the minified version (trix.umd.min.js) in production
  • Consider lazy loading the editor if it's not immediately visible on page load
  • Monitor memory usage with large documents containing many attachments