Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: oss-apps/split-pro

v2.0.0-beta.0

31 Dec 21:28
f00950a

Choose a tag to compare

v2.0.0-beta.0 Pre-release
Pre-release

⚠️ BACKUP YOUR DATABASE BEFORE UPDATING!
This release includes major database schema changes. Please follow the migration guide carefully.

We're excited to announce the first beta of SplitPro 2.0! This release brings long-awaited features like recurring transactions, currency conversions, and bank transaction integration, along with a fundamental architectural change to how balances are computed.

Your feedback is invaluable! As a beta release, we encourage you to test thoroughly and report any issues you encounter. Bug reports and UX feedback—especially on the new features—help us improve SplitPro for everyone.


Migration Guide

PostgreSQL Image Upgrade

This release requires a new PostgreSQL image with the pg_cron extension for recurring transactions and cache management.

  1. Determine your current PostgreSQL version:

    docker exec -it splitpro-db psql --version
  2. Determine your Debian version:

    docker exec -it splitpro-db cat /etc/os-release
  3. Update your compose.yml:

    • Change the image from postgres to ossapps/postgres
    • Select the appropriate tag from Docker Hub matching your major PostgreSQL version and Debian version
    • Add the startup command for pg_cron:
    services:
      db:
        image: ossapps/postgres:17.7-bookworm  # adjust to your version
        command: postgres -c shared_preload_libraries=pg_cron -c cron.database_name=splitpro

    See the production compose file for a complete example.

  4. If you need a specific version not yet available, please ask in the GitHub Discussions.

For Alpha/Main Branch Users

If you were running the alpha release or building from main, you may encounter migration issues due to squashed Prisma migrations in this release. If you experience problems, please report them in the GitHub Discussions—if enough users are affected, we may provide additional migration paths.

Non-Standard Decimal Currency Fix (KRW, JPY, etc.)

If you used currencies with non-standard decimal places (e.g., KRW, JPY, or 3-decimal currencies like KWD) in versions 1.5.4–1.5.8, your amounts may have been stored incorrectly due to #440.

To fix affected data, run the migration script manually:

  1. Download the migration script
  2. Copy it to your docker compose file directory
  3. Execute:
    cat migration.sql | docker exec -i splitpro-db psql -U postgres -d splitpro
    (Adjust container name/db user/db name if needed)

New Features

💱 Currency Conversions

Convert expenses and group balances between currencies with ease! We support three exchange rate providers:

  • Frankfurter — Completely free, covers ~30 major currencies
  • Open Exchange Rates — 1000 requests/day free tier, extensive currency support
  • NBP — Polish National Bank, no API key required, but some rates may be out of date and I'm not sure about rate limits

Rates are cached in the database to minimize API calls. Configure your preferred provider(s) via environment variables.

Features:

  • Convert individual expenses between currencies
  • Convert group balances on-the-fly directly from the balance view
  • Edit existing conversion transactions
screenrecording-2025-12-31_22-23-59.mp4
screenrecording-2025-11-30_17-57-46.mp4

🔄 Recurring Transactions

Set up automatic recurring expenses with cron-based scheduling powered by pg_cron. Perfect for rent, subscriptions, or any regular shared expense.

How it works:

  • When creating an expense, you can set a recurrence schedule using a cron rule
  • The recurrence creates derived expenses from the template expense, which can then be manually adjusted or deleted independently
  • Editing the template updates the schedule for all future expenses, but does not affect existing derived expenses
  • Deleting the template removes the recurrence rule but preserves all derived expenses
  • Confirmation dialogs clearly explain the impact of each action

Note: pg_cron supports a subset of standard cron syntax. Features like ranges (1-5) or multiple values (1,15) are not supported. See the pg_cron documentation for details.

Recurrence Management Page:
A dedicated page (accessible via the Activity tab) lets you manage all recurring expenses in one place:

  • View all active recurrences
  • Edit recurrence schedules without navigating to individual expenses
  • Delete recurrence rules while keeping the original expense intact
screenrecording-2025-12-31_22-26-52.mp4
screenrecording-2025-10-07_21-47-50.mp4

🏦 Bank Transaction Integration

Import transactions directly from your bank account! Connect via Plaid to fetch transactions and convert them into SplitPro expenses.

Note: GoCardless integration is deprecated as they have closed new signups. Existing GoCardless users can continue using it, but we recommend migrating to Plaid.

Features:

  • Connect your bank from the Account page
  • Browse and select transactions when adding expenses
  • New in beta: Multi-add — add multiple transactions as expenses at once
  • Duplicate detection prevents adding the same transaction twice

To get started, create a free account on Plaid, obtain your API keys, and add them to your environment variables. See README_BANKTRANSACTIONS.md for details.

Nov-08-2025.15-13-501.mp4

UI/UX Improvements

Month Headers in Expense Lists

Long expense lists are now organized with month headers, making it easier to navigate your transaction history.

Debug Info Dialog

New diagnostic dialog in Account settings shows version info, git hash (in dev), and checks for available updates.

screenrecording-2025-10-20_22-02-04.mp4

Improved Category Picker

Redesigned layout with responsive grid and proper text wrapping for localized category names.

Enhanced Expense Details

  • Links to people and groups directly from expense details
  • Indicator icon shows if a group has debt simplification enabled
  • Only relevant amounts shown in friend expense lists (your actual debt/credit, not total expense)

Enhanced expense details

Other UI Improvements

  • Fixed calendar to always show 6 weeks (no more size fluctuations)
  • "No providers configured" message on signin page when OAuth isn't set up
  • Responsive icon buttons across the app
  • Fixed avatar sizing issues on Safari
  • Improved settle-up flow: editing a settlement reopens the amount dialog instead of expense edit

Breaking Changes

Database-Computed Balances

We've migrated from manually-maintained balance tables to PostgreSQL views. This fundamental change:

  • Treats expenses as the source of truth — balances are computed, not stored
  • Eliminates balance inconsistency bugs — no more stale or incorrect balances
  • Enables recurring transactions — which couldn't work with the old table-based approach
  • Performs well at scale — benchmarked on large datasets with no noticeable performance impact

The old "Recalculate Balances" button in groups is no longer needed and has been removed.

Expense ID Migration

Expense IDs have been migrated from CUID to native PostgreSQL UUID. This is required for pg_cron to insert recurring expenses via SQL procedures.

PostgreSQL Image Requirement

The ossapps/postgres image with pg_cron extension is now required. See the Migration Guide above.


Bug Fixes

  • PWA Integration — Upgraded to the successor of next-pwa, fixing service worker issues
  • Service Worker Precache — Resolved failures that prevented offline functionality
  • Equal Split Editing — Fixed payer detection when editing equal splits
  • Back Navigation — Improved navigation after adding/editing expenses
  • Receipt Upload — Fixed receipt not appearing when editing expenses
  • Negative Numbers — Proper handling in BigInt conversion
  • Decimal Input — Both . and , keys now work correctly for decimal entry
  • Interpersonal Balances — Fixed incorrect balances when group debt simplification is enabled
  • Deterministic Pennies — Leftover cents are now distributed deterministically (based on amount and date) rather than randomly
  • Currency Formatting — Proper Intl-based formatting for all currencies, including those with non-standard decimal places
  • Date Width — Fixed inconsistent date column widths in expense lists
  • PostgreSQL 17+ — Updated Docker compose for compatibility with PostgreSQL 17 and newer

Security Note

The recent CVE-2025-55182 vulnerability affecting Next.js has been widely reported. SplitPro is NOT affected by this vulnerability, as it targets React Server Components in the App Router—SplitPro uses the Pages Router and does not use Server Compone...

Read more

v1.5.8

11 Nov 16:28

Choose a tag to compare

Quality of life fix to accept both decimal separators in currency input #478

Full Changelog: v1.5.7...v1.5.8

v1.6.0-alpha.0

11 Nov 11:47

Choose a tag to compare

v1.6.0-alpha.0 Pre-release
Pre-release

Major changes ahead

⚠⚠⚠ Backup your database before updating and follow the steps below!!!
This release is not meant for daily use, stuff will break!

This release will include major database changes, so DB backup is absolutely vital! To make this process as seamless as possible, we have created a new ossapps/postgres image, which is just a regular postgres image with the pg_cron extension installed (source).

DB image update

  1. Determine your currently used major postgres version using docker exec -it splitpro-db psql --version
  2. Determine the version of Debian using docker exec -it splitpro-db cat /etc/os-release
  3. In your compose file, change the image name from postgres to ossapp/postgres and add the relevant tag from the ones we have built. The minor versions shouldn't matter as lons as you match the major version and debian version.
  4. If you encounter issues and require a specific version, ask us in the discussion to build it.
  5. Add a starting command to your postgres service, like in here

New features

  • currency conversions are here! Configure one of the providers in the README and start converting group balances and individual expense amount! More features (and docs) will be added during the alpha, such as balance views in preferred currency or user balance conversions
  • recurring transactions you can now select a recurrence cron rule on expenses! You will see a new icon in the add expense page with a pop up for setting up these rules (UI refresh is also expected) and manage them from a new tab accessible via the activity page.
  • bank transaction import connect a Plaid account to fetch your bank data and convert them into SplitPro expenses directly! Still a bit WIP, but kudos to @alexanderwassbjer !

Breaking changes

This alpha release is mainly focused on testing out not only the new features, but also the breaking changes they carry with them. Apart from the DB image transition:

  • moving from expense cuid to uuid. We needed a postgres native id solution to support recurrent transaction input via pg_cron. Make sure all your transactions are properly carried over. You can use pgAdmin or psql to query your expense+expense participant tables before and after the migration. Ideas on how to automate this check are welcome
  • migration to DB calculated balances. Maintaining a balance table proved to be very cumbersome and bug prone once advanced features started being implemented. Instead, we want to rely on the speed of DBMS and utilize a database View for that, treating expenses themselves as the source of truth rather than the surgically updated table. Many thanks to @FriesischScott for the work on this and the benchmarks proving the feasibility of this approach.

Testing

There is a substantial amount of new code and potential polishing required so any testing and feedback (both bugs and LGTM) is very helpful! For the balances, we currently still use the old tables, but on each call a comparison with the view is made and any mismatch is logged as an error by the server. It's not visible to the user, but I am asking you to run this version for a while and report any errors that may arise. Keep in mind that there are bugs in the current balances, so not every mismatch is a bug in views. In groups you can run recalculate balances to refresh.

Also keep in mind that recurring transactions are not and will not be supported by balance tables (only views).


Detailed changes

New Contributors

Last but not least, a huge shoutout to @FelixDz for supporting the project with a donation!

Full Changelog: v1.5.7...v1.6.0-alpha.0

v1.5.7

04 Nov 20:36

Choose a tag to compare

What's Changed

Full Changelog: v1.5.6...v1.5.7

v1.5.6

24 Oct 16:38
b8f5ea2

Choose a tag to compare

Fix for regression where the service worker does not register, which does not enable client cache and notifications. The issue does not affect long running SplitPro users, only new SW registrations.

Full Changelog: v1.5.5...v1.5.6

v1.5.5

22 Oct 20:18

Choose a tag to compare

What's Changed

Apply fix for notifications #445 by @hrmtc

Full Changelog: v1.5.4...v1.5.5

v1.5.4

19 Oct 10:26

Choose a tag to compare

While I hoped to release 1.6 with all the bug fixes that piled up, it's taking a bit longer than I hoped for, so I decided to fix the most critical bugs on top of the 1.5.3 release and backport some of the fixes from main branch.

What's Changed

  • Implemented a proper currency formatter based on Intl browser API. We now properly render decimals and fixed numerous issues with the current implementation.
  • the case where the split is not properly defined (for example in exact split) is now handled more gracefully in the UI with nonsensical share texts hidden. Additionally a critical performance issue was fixed with large sums and leftover pennies calculation, which froze the webpage on huge leftover sums.
  • the simplify method has been patched to properly fill in metadata of generated simplified balances that did not exist prior, causing a crash on balanceList
  • the recalculate method now better deals with malformed balance data, where not all group balance relations are created, since newly joined users may not have groupBalances with everyone
  • backported the improvements to expense details back navigation #423

Full Changelog: v1.5.3...v1.5.4

v1.5.3

05 Sep 11:53
8c55e1b

Choose a tag to compare

We now support custom OIDC providers! Thanks a lot for the initial work to @imnotjames and everyone else for testing in feedback. Remember to report any issues you might encounter, check out the docker README and add missing icons for your providers.

Also, thanks to @Silther for spotting that the Health Check Docker command for the DB was incorrect. See the updated compose file for the proper value.

What's Changed

Full Changelog: v1.5.2...v1.5.3

v1.5.2

04 Sep 21:43
1b5f6a8

Choose a tag to compare

What's Changed

  • Language PT - Revision 2 by @c42759 in #355
  • Fix hook error and add PWA install translations and localize InstallApp by @marcosinigaglia in #352
  • Fix locale strings and remove currentUser prop in SettleUp by @krokosik in #360
  • feat: Add Spanish (Mexico) and Spanish (Argentina) locales by @hrmtc in #357
  • Fix 359 account page alignment by @krokosik in #361
  • Fix 361 balance list mixup by @krokosik in #362

New Contributors

Full Changelog: v1.5.1...v1.5.2

v1.5.1

02 Sep 19:24
effe0f9

Choose a tag to compare

What's Changed

Full Changelog: v1.5.0...v1.5.1