Pembukaan: Masih Install Library Segambreng?
Kalau kamu developer Node.js, coba deh cek folder node_modules kamu. Berat kan? Kadang rasanya install library cuma buat hal-hal yang seharusnya udah built-in. TypeScript? Install ts-node. Testing? Install jest. Environment variables? Install dotenv. Auto-reload? Install nodemon.
Nah, kabar baiknya — Node.js 24 dateng bawa solusi. Banyak fitur yang dulunya kita andalkan dari library pihak ketiga, sekarang udah native di Node.js. Dan yang bikin makin mantap, sejak Oktober 2025, Node.js 24 udah masuk Long-Term Support (LTS), jadi aman buat production.
Yuk, kita bahas 10 fitur Node.js 24 yang mungkin belum kamu pake — tapi harusnya udah kamu pake dari kemarin!
Persiapan: Install Node.js 24
Gue rekomendasiin pake NVM (Node Version Manager) biar gampang switch versi.
Install NVM:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
Install Node.js 24:
nvm install 24
nvm use 24
Cek versi:
node -v
# v24.x.x ✅
Oke, siap? Let’s go! 🚀
1. TypeScript Tanpa Ribet — Langsung Jalan!
Ini yang paling ditunggu-tunggu. Dulu mau jalanin file .ts di Node.js? Harus install ts-node, tsx, atau compile dulu pake tsc. Ribet.
Sekarang di Node.js 24:
node index.ts
Ya, sesimpel itu. Node.js 24 punya fitur type stripping — dia bisa “buang” type annotation TypeScript dan langsung jalanin kodenya.
Contoh, bikin file hello.ts:
function greet(name: string): string {
return `Halo, ${name}! Selamat datang di Node.js 24 🎉`;
}
console.log(greet("Teguh"));
Jalanin:
node hello.ts
# Output: Halo, Teguh! Selamat datang di Node.js 24 🎉
⚠️ Catatan: Fitur yang butuh transformasi JavaScript kayak enum, namespace, atau parameter properties, perlu flag tambahan:
node --experimental-transform-types index.ts
Buat project yang butuh full TypeScript support (decorators, JSX, path aliases), tetep pake tsc ya.
2. Promise-Based API — Bye Bye Callback Hell
Modul standar Node.js kayak fs, path, http sekarang punya versi promise-based. Artinya kamu bisa pake async/await tanpa wrapper tambahan.
import * as fs from 'node:fs/promises';
const content = await fs.readFile('catatan.txt', 'utf-8');
console.log(content);
Dan yang keren, Node.js 24 support top-level await — gak perlu bungkus pake async function lagi:
// Langsung di top-level, tanpa async wrapper
const data = await fetch('https://api.github.com/users/teguhwin8');
const user = await data.json();
console.log(user.name);
Clean. Simple. No drama.
3. Flag –env-file — Goodbye dotenv!
Pernah gak sih setiap bikin project baru, hal pertama yang di-install itu dotenv? Sekarang gak perlu lagi!
Bikin file .env:
DB_HOST=localhost
DB_PORT=5432
SECRET_KEY=rahasia-banget
Akses di kode:
console.log(process.env.SECRET_KEY);
// Output: rahasia-banget
Jalanin pake flag:
node --env-file=.env index.js
Satu dependency berkurang dari package.json. Seneng gak? 😄
4. ESM Jadi Standar Resmi
Node.js 24 sekarang fully embrace ECMAScript Modules. Kamu bisa pake import/export langsung tanpa drama.
Tinggal set di package.json:
{
"type": "module"
}
Bikin modul:
// auth.js
export const login = (user) => {
return `${user} berhasil login! 🎉`;
};
Import dan pake:
// index.js
import { login } from './auth.js';
console.log(login('Teguh'));
// Output: Teguh berhasil login! 🎉
Bonus: CommonJS dan ESM sekarang bisa interop dengan lebih mulus. Kamu bisa import file .cjs di dalam ESM, dan sebaliknya pake dynamic import().
5. Built-in Test Runner — Bye Jest, Bye Mocha!
Ini game changer. Node.js 24 punya test runner bawaan. Gak perlu install Jest, Mocha, Chai, atau apapun lagi.
Bikin file utils.ts:
export function isEmailValid(email: string): boolean {
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}
export function truncateText(text: string, maxLength: number): string {
if (text.length <= maxLength) return text;
return text.slice(0, maxLength) + '...';
}
Bikin test file utils.test.ts:
import { describe, it } from 'node:test';
import assert from 'node:assert';
import { isEmailValid, truncateText } from './utils.ts';
describe('isEmailValid', () => {
it('email valid harus return true', () => {
assert.ok(isEmailValid('teguh@coding.com'));
});
it('email invalid harus return false', () => {
assert.ok(!isEmailValid('bukan-email'));
});
});
describe('truncateText', () => {
it('text pendek gak dipotong', () => {
assert.strictEqual(truncateText('Halo', 10), 'Halo');
});
it('text panjang dipotong + dikasih ...', () => {
assert.strictEqual(truncateText('Ini teks yang panjang banget', 10), 'Ini teks y...');
});
});
Jalanin test:
node --test
Mau sekalian cek coverage?
node --test --experimental-test-coverage
Simpel, native, dan gak perlu config apa-apa. 🔥
6. Flag --watch — Nodemon? Gak Perlu Lagi!
Kalau kamu frontend developer, pasti familiar sama hot reload. Di backend Node.js, kita biasanya pake nodemon buat auto-restart tiap kode berubah.
Sekarang cukup:
node --watch index.js
Atau gabungin sama test runner:
node --watch --test
Setiap kamu save file, Node.js otomatis restart. Simple, tanpa install apa-apa.
7. AsyncLocalStorage yang Lebih Stabil
Pernah ngalamin bug di mana session data tiba-tiba undefined atau malah ketuker sama user lain? Itu masalah klasik AsyncLocalStorage di versi lama.
Node.js 24 switch internal implementation ke AsyncContextFrame, yang bikin context tracking jauh lebih reliable.
Contoh: tracking request ID di HTTP server:
import http from 'node:http';
import { AsyncLocalStorage } from 'node:async_hooks';
import { randomUUID } from 'node:crypto';
const asyncLocalStorage = new AsyncLocalStorage();
function log(message) {
const requestId = asyncLocalStorage.getStore();
console.log(`[${requestId}] ${message}`);
}
const server = http.createServer((req, res) => {
const requestId = randomUUID();
asyncLocalStorage.run(requestId, () => {
log('Request masuk');
setTimeout(() => {
log('Selesai diproses');
res.writeHead(200);
res.end(`Request ID kamu: ${requestId}\n`);
}, 100);
});
});
server.listen(3000, () => {
console.log('Server jalan di http://localhost:3000');
});
Sekarang, mau se-nested apapun async operation kamu, context-nya gak bakal ilang. ✅
8. Built-in SQLite — Database Tanpa Install Apa-apa
Yes, kamu baca itu bener. Node.js 24 punya modul SQLite bawaan. Gak perlu install better-sqlite3 atau sqlite3 lagi.
⚠️ Masih experimental, pake flag:
node --experimental-sqlite index.js
Contoh penggunaan:
import { DatabaseSync } from 'node:sqlite';
const db = new DatabaseSync(':memory:');
db.exec(`
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT
) STRICT
`);
const insert = db.prepare('INSERT INTO users (id, name, email) VALUES (?, ?, ?)');
insert.run(1, 'Teguh', 'teguh@coding.com');
insert.run(2, 'OpenClaw', 'claw@openclaw.ai');
const query = db.prepare('SELECT * FROM users ORDER BY id');
console.log(query.all());
// Output: [ { id: 1, name: 'Teguh', ... }, { id: 2, name: 'OpenClaw', ... } ]
Cocok banget buat prototyping, CLI tools, atau aplikasi kecil yang butuh database lokal tanpa ribet setup.
9. Built-in Debugger — Debug Pake Chrome DevTools
Debugging Node.js sekarang gampang banget. Tinggal pake flag --inspect:
node --inspect-brk index.js
Flag --inspect-brk bakal pause di baris pertama, jadi kamu punya waktu buat connect debugger.
Cara pake:
- Jalanin command di atas
- Buka Chrome, ketik
chrome://inspect - Klik "Open dedicated DevTools for Node"
- Set breakpoint, step through, inspect variables — kayak debugging frontend!
Gak perlu console.log everywhere lagi. 😅
10. Native WebSocket Client
Dulu buat WebSocket di Node.js, kita pasti install library ws atau socket.io. Sekarang Node.js 24 punya WebSocket client bawaan yang compatible sama browser WebSocket API.
const ws = new WebSocket('wss://echo.websocket.org');
ws.addEventListener('open', () => {
console.log('Connected! ✅');
ws.send('Halo dari Node.js 24!');
});
ws.addEventListener('message', (event) => {
console.log('Pesan diterima:', event.data);
ws.close();
});
ws.addEventListener('close', () => {
console.log('Koneksi ditutup');
});
API-nya sama persis kayak WebSocket di browser. Jadi kalau kamu udah familiar sama client-side WebSocket, transisinya zero effort.
Kesimpulan: Node.js Makin Mandiri
Node.js 24 itu bukan cuma update biasa — ini perubahan mindset. Dari yang dulunya "install library dulu baru bisa ngapa-ngapain", sekarang jadi "coba dulu built-in nya, baru install kalau beneran perlu".
Recap fitur yang bisa ngurangin dependency kamu:
| Dulu (Library) | Sekarang (Built-in) |
|---|---|
| ts-node / tsx | node file.ts |
| dotenv | --env-file |
| jest / mocha | node:test |
| nodemon | --watch |
| better-sqlite3 | node:sqlite |
| ws | Native WebSocket |
So, udah waktunya update ke Node.js 24 dan mulai manfaatin fitur-fitur bawaan ini. Folder node_modules kamu bakal berterima kasih. 😄
Ada pertanyaan atau pengalaman seru pake Node.js 24? Share di kolom komentar ya!
