Skip to content

Releases: MHSanaei/3x-ui

Dev build 522b1b64

24 Jun 16:17
522b1b6

Choose a tag to compare

Dev build 522b1b64 Pre-release
Pre-release

Rolling development build — installs via the panel's Dev update channel.

commit=522b1b64b07b6b5a802e187ea005936501d3e7ce
built=2026-06-26T11:15:50Z

Automated per-commit build from main. Not a stable release.

v3.4.1

25 Jun 22:54
b1fb39c

Choose a tag to compare

🚀 Rolling Dev Channel, Logs Viewer Overhaul, Leaner Memory & Client Bulk Ops

  • 🧪 Rolling Dev update channel — opt into per-commit builds from the panel, node updates, the x-ui.sh menu, and the installer (dev-latest); the dev build version is surfaced in the UI, bot, and CLI, and dev nodes report dev+<commit> so they aren't flagged stale.
  • 🧾 Logs & Access Logs viewer overhaul — the Xray access-log viewer is now labeled Access Logs across all languages, with an auto-update toggle, a 1000-row option, and verbatim rendering of plain log notices.
  • 📉 Leaner memory & tiered metrics history — real process RSS reporting plus a smaller footprint via GOGC + periodic release, and a tiered rollup that keeps 7 days of metrics history at ~1.5 MB.
  • 👥 Client bulk operations — bulk enable/disable and bulk-set XTLS flow from the Adjust dialog, with selection actions tidied into a More menu.
  • 🧬 VLESS encryption modes & tunnel health — new VLESS encryption modes plus an Xray tunnel health monitor.
  • 🔗 Subscription engine upgrades — new PROTOCOL/TRANSPORT/SECURITY remark variables, Incy client integration + routing tab, template-driven display remarks, and recovery of {{TRAFFIC_USED}} for orphaned traffic rows.
  • 🛰️ Node traffic history — import per-client traffic history on a node-hosted inbound's first sync so totals don't start from zero.
  • 🧹 Uninstall & deploy cleanup — the uninstaller now offers to purge PostgreSQL, and the legacy AWS golden-image build stack was dropped.

ℹ️ Heads-up: The new Dev update channel ships rolling per-commit builds for testers — stable deployments stay on the release channel unless you switch. The uninstaller now also offers to purge PostgreSQL when removing the panel; decline if you share that database with other apps.

🆕 New

⚡ Update & improvement

🐞 Bug fixed

Reports

total
amd64
arm64
386
armv7
armv6
armv5
s390x
windows

New Contributors

Full Changelog: v3.4.0...v3.4.1

v3.4.0

23 Jun 15:49
3fa4edd

Choose a tag to compare

🚀 Multi-Node Hardening, Notification Event Bus, Managed Hosts & Scale to 100k Clients

  • 🛰️ Per-node outbound routing & node hardening — route each node through its own outbound, plus mTLS, hashed + zstd reconcile transport, and per-node network metrics.
  • 🔔 Notification event bus — a pub/sub architecture with Telegram and SMTP subscribers, a card-based notification settings layout, and memory-threshold alerts.
  • 🌐 Managed Hosts — per-host overrides for subscription links so each host can advertise its own address.
  • 🧾 Subscription engine upgrades — dynamic remark variables (Jalali date, transport, status tokens), full XHTTP mapping for Clash/Mihomo, per-client external links + remote subscriptions, and an option to hide server settings (happ).
  • 📈 Scale & stability to 50k–100k clients — faster traffic/auto-renew/node bulk ops, DB indexes on hot columns, atomic config writes, panic-recovering cron/jobs, and bounded gRPC deadlines & response sizes.
  • 🛡️ fail2ban-native IP limiting — IP limit is now gated on fail2ban (auto-installed on install/update) and reads onlines without parsing access.log.
  • 🔐 Native TLS/REALITY pinning — remote cert pinning via a native uTLS handshake (no xray subprocess), ported xray TLS/REALITY fields, and cert-hash helpers.
  • 🎯 Real client IP behind CDN/relay — capture the visitor IP behind a CDN/relay and attribute IP-limit per node.
  • 🧬 Xray-core v26.6.22 — core upgrade with XHTTP sessionID table/length controls, WireGuard field cleanup, and trustedXForwardedFor honored on gRPC inbounds.
  • 🛠️ Deployment pipeline & test-quality audit — release-driven golden-image & unattended-install pipeline, plus a test-quality pass adding mutation/fuzz/CI tooling.

ℹ️ Heads-up: IP limiting now relies on fail2ban, which is auto-installed on install/update, and no longer parses access.log. Legacy panelProxy / tgBotProxy settings are cleared automatically on upgrade. If you previously tuned IP limiting or those proxy settings, review them after upgrading.

🆕 New

⚡ Update & improvement

Read more

v3.3.1

12 Jun 18:49

Choose a tag to compare

🚀 Live Config Apply, Native Geodata, Smarter Nodes & a Big Internal Refactor

  • Live config apply — inbound / outbound / routing changes now apply over the Xray gRPC API without a full core restart, so existing connections survive edits.
  • 🌍 Native geodata auto-update — the custom geo manager is gone; geo files now auto-update through Xray-core's built-in mechanism.
  • 📡 Access-log-free online tracking — onlines and per-client IP limits now read from Xray's online-stats API instead of parsing access.log.
  • 🕸️ Smarter multi-node sync — filter inbounds and clients by node, push global client usage to nodes for display + local enforcement, and a per-inbound share-address strategy that carries through to subscriptions.
  • 🌉 Outbound-based egress bridge — the panel proxy URL is replaced by a proper outbound egress bridge; a balancer can now serve as the panel traffic outbound.
  • 🔐 MTProto upgrades — domain-fronting and essential mtg options, plus Telegram egress routed through your Xray routing rules.
  • 🧩 WireGuard refresh — latest Xray-core WireGuard features and per-peer comments to identify devices.
  • 🛡️ Security fixlog.access / log.error paths are confined to the panel log folder (GHSA-jm48 arbitrary file write).
  • 🛠️ Internal refactor — focused service files, leaf subpackages and a cleaner internal/ layout (no API surface change).

ℹ️ Heads-up: geo data now auto-updates via Xray-core and the old panel proxy URL is superseded by the outbound egress bridge. If you relied on either, review your settings after upgrading.

🆕 New

⚡ Update & improvement

🐞 Bug fixed

Read more

v3.3.0

08 Jun 23:51
v3.3.0
f8e89cc

Choose a tag to compare

🚀 MTProto, WARP Rotation, Subscription Outbounds & a Typed API

  • 🛡️ MTProto (FakeTLS) — new protocol served through a managed mtg sidecar, no external setup required.
  • 🌐 WARP IP rotation — rotate WARP egress IPs manually or automatically on a schedule, with API requests routed through the panel proxy.
  • 🔄 Subscription-based outbounds — import outbounds straight from a subscription URL, with automatic refresh.
  • 🎨 Customizable subscription pages — bring-your-own templates for the subscription landing page.
  • 📑 Typed API & OpenAPI — components, schemas, and response examples generated directly from the Go structs; /panel/setting and /panel/xray consolidated under /panel/api.
  • 🕸️ Multi-hop nodes — correct traffic attribution across chained sub-nodes, synchronized access.log client IPs across nodes, and a distinct purple indicator when the panel is online but the Xray core has failed.
  • 📊 Per-group traffic — used traffic now shown for each group in the groups table.

⚠️ Breaking: /panel/setting and /panel/xray moved under /panel/api. Update any integrations that call those paths.

🆕 New

⚡ Update & improvement

🐞 Bug fixed

Reports

total
amd64
arm64
386
armv7
armv6
armv5
s390x
windows

Full Changelog: v3.2.8...v3.3.0

v3.2.8

05 Jun 09:11
db118cb

Choose a tag to compare

🚀 Multi-Node Resilience, ECH & Scale

  • 🌐 Multi-node resilience — client/inbound edits survive an offline node, remote updates are scoped to a single inbound, and stale node snapshots no longer re-enable disabled clients or miscount traffic.
  • 🔐 End-to-end ECH — now carried in TLS share links, JSON subscriptions, outbound import, and per-entry external proxy.
  • 🧩 Modern Xray JSON subscriptions — new format with a unified finalmask editor.
  • 🧭 Clash routing — routing rules and an enable-routing option for Clash subscriptions.
  • 💾 DB migration — SQLite ⇄ .dump conversion and Download Migration from the Overview page.

⚡ Performance — scales to ~200k clients

Benchmarked on PostgreSQL 16 (gains are largest on Postgres, where every round-trip pays network latency):

Operation Scale Before After Improvement
Toggle one client (SyncInbound) 50k-client inbound 8m 54s 0.9s ~600× (~99.8%)
Seed clients 50k clients 2m 48s 1.6s ~100× (~99%)
Bulk create large inbound 8m 35s ~1–5s ~99%
Bulk detach large inbound 52s ~4s ~92%
Bulk delete large inbound 16s ~1–4s ~85%
Bulk adjust large inbound 20s ~7–10s ~55%
Delete-all clients 100k-client inbound ❌ crashed (param limit) ~7s now works
Bulk group add/remove 100k clients ~6s scaled
Full client list 100k clients ~1s scaled
GetClientTrafficByEmail flat in N 439ms ~1.5ms ~290× (~99.7%)

🆕 New

⚡ Update & improvement

🐞 Bug fixed

Reports

total
amd64
arm64
386
armv7
armv6
armv5
s390x
windows

Full Changelog: v3.2.7...v3.2.8

v3.2.7

03 Jun 21:04
5c1d64b

Choose a tag to compare

New

Update & improvement

Bug fixed

Reports

total
amd64
arm64
386
armv7
armv6
armv5
s390x
windows

Full Changelog: v3.2.6...v3.2.7

v3.2.6

02 Jun 02:24
950a647

Choose a tag to compare

New

Update & improvement

Bug fixed

Reports

total
amd64
arm64
386
armv7
armv6
armv5
s390x
windows

Full Changelog: v3.2.5...v3.2.6

v3.2.5

01 Jun 08:34
2a03844

Choose a tag to compare

New

Update & improvement

Bug fixed

Reports

total
amd64
arm64
386
armv7
armv6
armv5
s390x
windows

Full Changelog: v3.2.0...v3.2.5

v3.2.0

28 May 18:29
v3.2.0
b395a1b

Choose a tag to compare

New

Update & improvement

Bug fixed

Reports

total
amd64
arm64
386
armv7
armv6
armv5
s390x
windows

Full Changelog: v3.1.0...v3.2.0