WAHA 2026.3 - WPP Engine, LID Merge Control, GOWS & NOWEB Upgrades
March 31, 2026 in Releases by devlikeapro3 minutes

⚡ New Engine: WPP
WPP is a new browser-based engine powered by wppconnect. It runs WhatsApp Web in a Puppeteer browser — same approach as WEBJS, different underlying library. forwardMessages is supported from the start.
WHATSAPP_DEFAULT_ENGINE=WPPCheck the WPP engine docs for details.
- Issue: #101
🔀 LID / @c.us Merge Control (NOWEB + GOWS)
WhatsApp uses two ID formats for the same contact: @lid (newer) and @c.us (phone-number-based). WAHA merges them by default so they appear as a single thread. That’s still the default, but now you can turn it off with a merge flag in session config.
- NOWEB — controls merging in
/overviewand/messages. - GOWS — same, for
/messages,/overview, and/chats.
This also covers the underlying merge fixes — duplicate chats, missing messages, wrong @lid↔@c.us mapping that piled up since @lid was introduced.
📦 GOWS
A few additions for GOWS this release:
- Image messages now include
widthandheight. WAHA_GOWS_DEVICE_*env variables to control how far back historical messages sync on first connect.- Issue: #1963
sendContactVcardnow includesdisplayNamein the payload.- Issue: #1978
- CPU spikes in PostgreSQL storage — fixed.
- Issue: #1955
👁️ NOWEB
NOWEB picks up a couple of additions in message handling:
- View-once messages now appear in the
messageevent.- Issue: #1972
- Image size (
width/height) is included when sending to a newsletter.- Issue: #1980
- CPU spikes from the
@lid/@c.usmerge path — fixed.- Issue: #1955
🗄️ Storage Namespaces
Two new env variables for storage path isolation:
WAHA_NAMESPACE— top-level prefix applied to all storage in this instance.WAHA_SESSION_NAMESPACE— per-session path override.
Useful when multiple WAHA instances share the same storage backend (S3, mounted volume, etc.) and you need their data kept separate. See 🗄️ Storages – Namespace.
🔍 New API: GET /api/{session}/contacts/{id}
Fetch a single contact by ID without pulling the full list:
GET /api/{session}/contacts/{id}🧩 Apps: No Queue Required
Apps are now enabled by default and can run in-memory — no Redis or other queue needed. If you have a queue configured, nothing changes on your end.
🧩 ChatWoot
- Message sync now targets only the
@c.uschat when both@lidand@c.usare present — stops duplicate conversations from appearing. - Group participant is now mapped to the message, so replies in group chats correctly attribute the sender.
📊 Dashboard
Chat UI got some layout and rendering cleanup.
🛠️ Other Fixes
WEBJS
- QR Code generation failure in some environments.
- Profile picture endpoint and channels list broken.
- Apps endpoints (
GET/PUT/DELETE) returning 403.- Issue: #1926
- Stale browser processes on restart — now cleaned up, Singleton removed.
NOWEB
Other
- Brazilian landline number normalization.
- Issue: #1974
- Send media crash:
user_agents_1.default is not a constructor.- Issue: #1946
yarnnow supports all CPU/OS architectures.- Issue: #1952
- Auth middleware no-auth case.
- Issue: #1939
⚙️ Full Changelog
All versions, issue links, and engine bumps are in the 🆕 WAHA 2026.3 Changelog.