Markus Over
Developing the Rich Text Editor for DeepL.com
#1about 3 minutes
Why DeepL needed a custom rich text editor
Standard HTML textareas are insufficient for advanced features like word suggestions, rich text formatting, and visual diffs for the writing assistant.
#2about 4 minutes
The decision to build the DTextArea component
DeepL chose to build its own component to meet specific requirements like full customizability, a separate visual layer, and synchronized text areas.
#3about 1 minute
Using a virtual DOM for text representation
The editor uses a custom, minimal tree structure inspired by the DOM to represent text content and a separate visual layer for highlights.
#4about 6 minutes
The surprising complexity of handling line breaks
Line breaks are often implied by the HTML structure rather than explicit, requiring the editor to perfectly mimic inconsistent browser behavior.
#5about 6 minutes
Managing cursor position in a volatile DOM
To prevent the cursor from jumping during DOM cleanup, its position is converted from a node-offset pair to a stable character offset and back.
#6about 2 minutes
Supporting the Input Method Editor for non-latin languages
The Input Method Editor (IME) for languages like Japanese can break if the DOM is modified, requiring the editor to pause manipulations during composition.
#7about 4 minutes
Navigating browser bugs and external content issues
Challenges include browsers generating invalid HTML, inconsistent event orders, interference from browser plugins, and sanitizing complex clipboard content from apps like Microsoft Word.
#8about 2 minutes
Key learnings from building a rich text editor
The project revealed the deceptive nature of the 80/20 rule, as the final 20% of features required 80% of the effort.
#9about 2 minutes
Q&A on testing strategies and alternative editors
The team uses a full testing stack including unit, end-to-end, and property-based tests to find edge cases in the editor's behavior.
Related jobs
Jobs that call for the skills explored in this talk.
Hubert Burda Media
München, Germany
€80-95K
Intermediate
Senior
JavaScript
Node.js
+1
MARKT-PILOT GmbH
Stuttgart, Germany
Remote
€75-90K
Senior
Java
TypeScript
+1
Matching moments
11:32 MIN
The industry's focus on frameworks over web fundamentals
WeAreDevelopers LIVE – Frontend Inspirations, Web Standards and more
06:44 MIN
Using Chrome's built-in AI for on-device features
Devs vs. Marketers, COBOL and Copilot, Make Live Coding Easy and more - The Best of LIVE 2025 - Part 3
11:10 MIN
The only frontend stack that truly matters
WeAreDevelopers LIVE – Frontend Inspirations, Web Standards and more
04:57 MIN
Increasing the value of talk recordings post-event
Cat Herding with Lions and Tigers - Christian Heilmann
03:05 MIN
Building collaborative design tools and the neo-brutalism trend
Slopquatting, API Keys, Fun with Fonts, Recruiters vs AI and more - The Best of LIVE 2025 - Part 2
04:02 MIN
How a broken frontend culture impacts the web
WeAreDevelopers LIVE – Frontend Inspirations, Web Standards and more
14:14 MIN
Scripting presentations and demos in VS Code
Devs vs. Marketers, COBOL and Copilot, Make Live Coding Easy and more - The Best of LIVE 2025 - Part 3
05:03 MIN
Building and iterating on an LLM-powered product
Slopquatting, API Keys, Fun with Fonts, Recruiters vs AI and more - The Best of LIVE 2025 - Part 2
Featured Partners
Related Videos
WeAreDevelopers LIVE – Frontend Inspirations, Web Standards and more
Chris Heilmann, Daniel Cranney & Jan Deppisch
WAD Live 22/01/2025: Exploring AI, Web Development, and Accessibility in Tech with Stefan Judis
Catching up on the basics you don't really need that much code
Chris Heilmann
The Collaborative Edge for AI Assistants in Content Creation Workflows
TDD for Vue.js Developers
Markus Oberlehner
Extending HTML with Web Components
Rowdy Rabouw
Dev Digest End of Year Recap
Daniel Cranney & Chris Heilmann
Accessibility in React Application
Julia Undeutsch
Related Articles
View all articles



From learning to earning
Jobs that call for the skills explored in this talk.


Visonum GmbH
Remote
Junior
Intermediate
React
Redux
TypeScript

Twin.Link GmbH
Osnabrück, Germany
Intermediate
Senior
React
TypeScript

Confideck GmbH
Vienna, Austria
Remote
Intermediate
Senior
Node.js
MongoDB
TypeScript


DeepL
Amsterdam, Netherlands
Remote
.NET
React
Kafka
Node.js
+3

DeepL
London
Contract
Published: 9 hours ago
Competitive
Charing Cross, United Kingdom
Remote
Redis
Python
Grafana
FastAPI
+6


Dokuwerk KG
Eriskirch-Kressbronn am Bodensee-Langenargen GVV, Germany
XML
HTML
JSON