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.
Matching moments
20:14 MIN
Live coding an editable list with web components
Frameworkless: How to use Web-Components in production?
23:01 MIN
Introducing progressive decoupling as an alternative strategy
Decoupling 101 - Why decouple, when not to, progressive decoupling and success stories in decoupling
17:41 MIN
Presenting live web scraping demos at a developer conference
Tech with Tim at WeAreDevelopers World Congress 2024
41:37 MIN
Modern developer tools and debugging workflows
WeAreDevelopers LIVE - Whats Nuxt and Next for app development, 20 years AJAX and more
1:04:01 MIN
Exploring modern tools for web interaction and analysis
WeAreDevelopers LIVE - the weekly developer show with Chris Heilmann and Daniel Cranney
30:46 MIN
Q&A on web components, SEO, and state management
Interactive server side components
21:28 MIN
How developers can prevent browser AI interference
Exploring the Future of Web AI with Google
17:00 MIN
Designing developer tools and documentation for LLMs
WAD Live 22/01/2025: Exploring AI, Web Development, and Accessibility in Tech with Stefan Judis
Featured Partners
Related Videos
Catching up on the basics you don't really need that much code
Chris Heilmann
WAD Live 22/01/2025: Exploring AI, Web Development, and Accessibility in Tech with Stefan Judis
Dev Digest End of Year Recap
Daniel Cranney & Chris Heilmann
The Collaborative Edge for AI Assistants in Content Creation Workflows
WeAreDevelopers LIVE – Inclusion, Accessibility & Automation
Chris Heilmann, Daniel Cranney & Daniela Kubesch
Accessibility in React Application
Julia Undeutsch
Extending HTML with Web Components
Rowdy Rabouw
TDD for Vue.js Developers
Markus Oberlehner
From learning to earning
Jobs that call for the skills explored in this talk.

Senior Machine Learning Engineer (f/m/d)
MARKT-PILOT GmbH
Stuttgart, Germany
Remote
€75-90K
Senior
Python
Docker
Machine Learning

Backend Engineer (m/w/d)
fulfillmenttools
Köln, Germany
€35-65K
Intermediate
TypeScript
Agile Methodologies
Google Cloud Platform
![Senior Software Engineer [TypeScript] (Prisma Postgres)](https://wearedevelopers.imgix.net/company/283ba9dbbab3649de02b9b49e6284fd9/cover/oKWz2s90Z218LE8pFthP.png?w=400&ar=3.55&fit=crop&crop=entropy&auto=compress,format)
Senior Software Engineer [TypeScript] (Prisma Postgres)
Prisma
Remote
Senior
Node.js
TypeScript
PostgreSQL





Senior Research Data Engineer
DeepL GmbH
Remote
Senior
Python
Kubernetes
Data analysis
Amazon Web Services (AWS)
