---
title: "Breaking: The editor configuration is an ES module"
manual: "Academic Jobs"
version: "main"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-jobs:breaking-ckeditor-configuration-is-a-module@main"
source: "Changelog/3.0/Breaking-FrontendAssetBuild.rst"
rendered: "2026-10-12T10:12:12+00:00"
---

# Breaking: The editor configuration is an ES module {#breaking-ckeditor-configuration-is-a-module}

## Description {#description}

Version 2.4 moved the script configuring the CKEditor instances of the frontend
form to `frontend/ckeditor.js` and kept it a classic script, see
[Breaking: The editor configuration moved](https://docs.typo3.org/permalink/fgtclb/academic-jobs:breaking-ckeditor-configuration-moved@main). It is an **ES module** now, under
another name:

```text
EXT:academic_jobs/Resources/Public/JavaScript/frontend/ckeditor.js
->  EXT:academic_jobs/Resources/Public/JavaScript/frontend/rich-text.js
```

It is registered in `Configuration/JavaScriptModules.php` and addressed by
the bare specifier `@fgtclb/academic-jobs/frontend/rich-text.js`.

The name avoids `ckeditor.js` on purpose. CKEditor 4 derives its own
installation directory from the first script tag of the document whose source
ends in that name, and an import mapped module is rendered before the plain
script assets of a page. A module of that name would send the editor looking for
its skin and its language files below this extension.

CKEditor itself is still loaded from a content delivery network by the same
template, unchanged.

## Impact {#impact}

An installation that uses the shipped template needs to do nothing.

An installation that loads `frontend/ckeditor.js` loads a file that no
longer exists, and the rich text fields fall back to plain textareas.

## Affected Installations {#affected-installations}

Installations that override `Templates/Job/New.html` or reference the
script from their own site package.

## Migration {#migration}

In an overridden template, replace the reference:

```html
<f:asset.module identifier="@fgtclb/academic-jobs/frontend/rich-text.js" />
```

`<f:asset.script>` cannot be used any more, because a classic script tag
does not execute an ES module. The `frontend-editor` identifier and the
`async`/`defer` attributes are gone with it: a module is deferred by
definition.
