"The very things that hold you down are going to lift you up." First beta of Jam Version v2.0.0 is out!
This is the first release compatible with the new joinmarket-ng backend.
joinmarket-clientserver was archived on Apr 27, 2026. While this release should still work with joinmarket-clientserver backends, support will be dropped soon and usage is discouraged.
⚠️ Jam is considered beta software. ⚠️
The new backend joinamarket-ng is bleeding edge and things might break. Use with caution.
Please report any issues directly on GitHub. Make sure to read the docs and consult the FAQ. For discussions and general questions, hop into the Matrix room or the Telegram channel.
What to expect in upcoming beta releases
There a few things left before release of stable v2.0.0:
- Improve Fidelity Bond creation flow
- Completely renew internationalization (translations are incomplete and will change substantially)
- Improve mobile friendliness
- Deprecate legacy backend
joinmarket-clientserver - Testing, testing, testing!
What's Changed
- feat(earn-report): add client-side pagination and improve browsing of older entries by @kunal-595 in #982
- chore: fix features path and rename jam api lib file by @theborakompanioni in #1210
- build(dev-deps): update typescript to v6 by @theborakompanioni in #1211
- chore: remove switch wallet page by @theborakompanioni in #1207
- refactor(settings): use react-hook-form for fee settings forms by @parrth20 in #1205
- build(deps): update dependencies by @theborakompanioni in #1212
- refactor(orderbook):to use tanstack table state in orderbook table by @kishore08-07 in #1217
- refactor(wallet): use tanStack table state in wallet tables by @kishore08-07 in #1218
- chore(build): remove console.debug from prod build by @theborakompanioni in #1216
- Fix render-phase state update in AccountXpubsDialog by @Ashish-Kumar-Dash in #1223
- refactor(forms): use react-hook-form for sweep and fidelity bond flows by @parrth20 in #1224
- build(deps): update dependencies and fix eslint violations by @theborakompanioni in #1230
- feat(send): ability to specify tx fee by @theborakompanioni in #1180
- chore: reload utxos after blockheight change by @theborakompanioni in #1231
- chore: valid number must be finite by @theborakompanioni in #1234
- fix(earn): try prevent "no confirmed coins" on earn page by @parrth20 in #1239
- chore(regtest): initial joinmarket-ng backend for regtest environment by @theborakompanioni in #1240
- refactor(forms):replace yup path parsing with array-level validation and optimize cross-field checks by @kishore08-07 in #1235
- build(ci): enable test coverage by @theborakompanioni in #1241
- build(deps): update dependencies by @theborakompanioni in #1242
- chore(websocket): add JmWebsocketContext by @theborakompanioni in #1244
- chore(ui): improve activity indicators by @theborakompanioni in #1249
- chore(storybook): add core component stories by @parrth20 in #1247
- chore(ui): improve footer on small screens by @theborakompanioni in #1243
- chore(send): collaborative send by @theborakompanioni in #1245
- build(deps): update dependencies by @theborakompanioni in #1251
- chore(storybook): deploy Storybook preview to GitHub Pages by @parrth20 in #1252
- fix(send): clamp initial collaborators default by @Ashish-Kumar-Dash in #1253
- refactor: move functions and cleanup by @theborakompanioni in #1255
- chore(storybook): add mobile/tablet viewports by @theborakompanioni in #1254
- test: add coverage for utilities and shared components by @parrth20 in #1267
- feat: integrate standalone-ng docker wrapper with Jam Web UI by @kishore08-07 in #1265
- build(deps): update dependencies by @theborakompanioni in #1269
- ci: skip coverage upload when report is missing by @parrth20 in #1270
- chore(storybook): add msw handler and AccountXpubsDialog story by @theborakompanioni in #1271
- fix(storybook-static): github pages storybook deployment by @theborakompanioni in #1272
- fix: soft display query reloading by @theborakompanioni in #1273
- chore: remove unused login schema translation parameter by @din-arr in #1275
- test: clean up fidelity bond utility test wording by @din-arr in #1279
- feat(sweep): add QR code scanner to destination inputs by @kishore08-07 in #1282
- Make joinmarket-ng as the default primary backend in regtest env by @kishore08-07 in #1281
- build(deps): update @vitejs/plugin-react to v6.0.2 by @theborakompanioni in #1288
- test: expand full-project coverage by @parrth20 in #1276
- Fix orderbook own-offer pin/highlight with pagination by @fr00ller in #1295
- Add tooltip for jm:autofrozen:reuse label by @kishore08-07 in #1293
- fix: handle locale-specific decimal separators in BTC balance by @dajiaohuang in #1290
- fix(login): wallet preselection by @theborakompanioni in #1296
- chore(pre-release): v2.0.0-beta.0 by @theborakompanioni in #1300
Thanks to all contributors
Full Changelog: v0.4.1...v2.0.0-beta.0