---
title: "v2026.12"
description: "March 15 – March 22, 2026"
url: "https://savyy.net/changelog/v2026-12"
locale: "en"
version: "2026.12"
published: "2026-03-22"
---

# v2026.12

March 15 – March 22, 2026

## New features

- [Web] Added clickable expense envelopes with transactions detail sheet
- [Web] Added expense envelope column to transaction exports
- [Web] Added full i18n support for auth and accounts pages with loading skeletons
- [Web] Added i18n translations for sidebar, breadcrumbs, verify-email, and remaining protected pages (d6d83963, 226f31bc, 13f315aa)
- [Web] Added i18n and skeletons to export, favorites, real-estate, and support pages
- [Web] Added i18n and skeletons to subscription pages
- [Web] Added i18n and skeletons to profile page with blog OG images
- [Web] Added dynamic OG image generation for blog posts
- [Web] Added dynamic OG images and standalone pages for changelog
- [Web] Added markdown parsing to translation dialogs with French support
- [Web] Added markdown parser to changelog create dialog
- [Web] Added shimmer and tint highlight to Savyy AI sidebar button
- [Web] Polished subscriptions page: UX, translations, and skeleton
- [Web] Reworked transactions page layout, categories, sheets, skeleton, and i18n
- [Mobile] Redesigned budget screens with circular progress indicator and period navigation
- [Mobile] Added category transactions sheet on budget screens
- [Mobile] Added pull-to-refresh to budget screens
- [Mobile] Added interactive slice selection to category pie chart
- [Mobile] Made insights subscription cards tappable
- [Mobile] Polished subscriptions screen with always-open insights card
- [Mobile] Migrated from NativeWind v4 to Uniwind (Tailwind CSS 4)
- [API] Added per-procedure rate limits to all endpoints
- [API] Added parallel batch processing to transaction categorization
- [API] Added fuzzy pattern matching for recurring payment group detection
- [API] Added expense envelope column to transaction exports
- [API] Added complete data purge on account deletion
- [API] Added X/Twitter link to email footer
- [API] Added Better Auth infrastructure dashboard plugin
- [API] Added programmatic spec builders for deterministic chat UI
- [Packages] Added loans category with fixed order to wealth charts on web and mobile
- [Packages] Added hide/show toggle for asset categories
- [Packages] Added customizable asset category order for wealth charts
- [Packages] Consolidated wealth display toggles into a single asset category order config
- [Packages] Added monthly equivalent display for annual and weekly subscriptions on web and mobile
- [Packages] Added exceptional vs permanent budget modification modes

## Improvements

- [Web] Improved dashboard loading performance with PPR, i18n, and skeleton accuracy
- [Web] Improved accounts pages and sidebar with i18n and UX refinements
- [Web] Improved auth password reset pages with PPR, i18n, and shared schemas
- [Web] Moved expense envelopes to top-level route with i18n and performance improvements
- [Web] Removed redundant sidebar sub-items for Budgets and Subscriptions
- [Web] Fixed skeleton loading states for markets pages and translation gaps
- [Web] Harmonized public page widths for consistency
- [Web] Reworked transactions filter layout and fixed select overflow
- [Mobile] Polished reports screens with gradient colors and pull-to-refresh
- [Mobile] Standardized alerts screens with shared components and i18n
- [Mobile] Removed enter animations and polished overview loading skeletons
- [API] Switched AI categorization models to Claude Haiku and GPT-4o Mini for better accuracy
- [API] Simplified AI categorization service with improved test coverage
- [API] Added class-aware fallback strategies for AI categorization
- [API] Optimized Docker image for size and build speed
- [API] Added idempotent job deduplication for signup email pipeline
- [API] Excluded internal transfers from budget calculations
- [Packages] Added Better Auth SSO dependency
- [Packages] Updated dependencies across the monorepo
- [Packages] Upgraded react-native-keyboard-controller to v1.21.0
- [Packages] Replaced draggable list library with react-native-sortables
- [Packages] Aligned test directory structure with source architecture

## Fixes

- [Web] Fixed breadcrumb header height and separator centering
- [Web] Fixed French translations for large transaction amounts
- [Web] Fixed sidebar collapsed mode and improved nav UX
- [Web] Fixed mobile nav popover not closing when links are clicked
- [Web] Fixed date locale applied to all date formatting calls
- [Web] Fixed dateFnsLocale missing dependency in useMemo
- [Web] Fixed changelog "View Live" buttons to use anchor links
- [Web] Fixed hydration warning on body tag
- [Web] Fixed subscription icon display in insights card
- [Web] Fixed alert dialog not dismissing after action
- [Web] Disabled Sentry error reporting on localhost
- [Web] Fixed chat bubble layout and table overflow clipping
- [Web] Reset chat panel when starting a new conversation after one was already created
- [Mobile] Fixed Android bottom navigation bar and tab label visibility
- [Mobile] Fixed compact number formatting and subscription icon rendering
- [Mobile] Fixed center alignment of threshold amount text in alert form
- [Mobile] Fixed account list limit that hid banks after reordering
- [Mobile] Fixed subscription user ID to prevent unexpected sign-out
- [Mobile] Replaced text edit/done buttons with icon buttons on accounts screen
- [Mobile] Fixed keyboard handling on all form screens
- [Mobile] Allowed tapping disabled eye icon to show tooltip warning
- [Mobile] Removed conflicting build plugin and fixed ESLint 10 compatibility
- [API] Fixed automatic categorization assigning most transactions to "To Classify"
- [API] Fixed balance unit conversion from cents to euros in alert evaluation
- [API] Fixed noisy Sentry errors for unknown instruments and hardened circuit breaker
- [API] Fixed deferred debit card auto-categorization to be direction-aware
- [API] Fixed recurring group names not set when confirming groups with null name
- [API] Fixed job ID format to avoid parsing conflicts
- [API] Increased distributed lock duration to 30 minutes to prevent race conditions
- [API] Increased icon column length for recurring payment groups
- [API] Captured all unhandled errors instead of silently discarding them
- [API] Fixed nullable fields in favorite instruments data
- [API] Fixed instrument links for crypto, FX, and ETF assets in chat
- [API] Fixed string-to-number conversion for financial data values
