Our highlights from Nordic.js

Last week there were six of us at Nordic.js. We took the train via Hamburg to Stockholm. Here is a short wrap-up of what we took away from our trip to the north.
Node.js: ESM-only is now really in
Five years of ESM/CJS chaos? Ticked off. Thanks to Joyee Cheung's fix, Node.js can now run synchronously. require() on ESM packages - backported into current LTS versions. This means for all of us: ESM-only publishing is safe. Dragging CJS along? No longer necessary.
What does this mean in concrete terms for packages?
- New standard setup with
type: "module" - Clean
exportsMap (incl.types) - One entry for everything - no double-shipping
{
"type": "module",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"default": "./dist/index.js"
}
},
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"engines": { "node": "^20 || ^22.12" }
}Heads-up: Works with practically all libs - unless they use top-level await. This is rare - but check it out.
Read more: https://joyeecheung.github.io/blog/2024/03/18/require-esm-in-node-js/
Platform-First: Use what the browser can do
HTML/CSS can do more again in 2025. Tooltips, slideshows, offcanvas, popovers. Many things are now possible natively, without JavaScript overhead. Una Kravets has shown various patterns, e.g. "Follow the Anchor".
Read more: https://una.im/follow-the-anchor
AI, but pragmatic: small, local, in the browser
Nico zeigte, wie ein Personal AI Assistant komplett im Browser läuft: schlanke Modelle, WebGPU, keine Serverkosten. Für viele Use Cases reicht das locker und es braucht nicht immer ein Top-Notch Open-AI GPT 5.0:
- Speech-to-text and text-to-speech
- Image recognition
- On-device wizards for data protection-sensitive workflows
Read more: https://nico.dev/
AI for refactorings: code mods with a system
Maja showed how they used AI at Notion to make the big chunk of refactoring plannable. Having code mods written and using humans where things get tricky.
Your approach as a recipe:
- Migrate 1-2 components/files manually - document each step.
- Generate a codemod from Alt+New + Docu with AI.
- Review, run on a small scope.
- Iterate, increase the scope until it fits.
Read more: https://bsky.app/profile/majapw.bsky.social
AI interfaces that don't just chat
Conversation alone is rarely the best UX. Vitaly showed examples of how we can embed AI in work steps instead of letting users guess prompts: first clarify the scope, then define guard rails and incorporate a quick feedback loop. This makes AI noticeably faster and more useful than pure chat.
Read more: https://www.smashingmagazine.com/2025/07/design-patterns-ai-interfaces/
Further topics
... were accessibility, why passkeys are better than passwords, various lightning talks and other inputs.

Written by
Thilo Haas





