Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
a07371b
Add dependencies
mateuuszzzzz Jan 27, 2026
cb5844a
Update configs and setup scripts
mateuuszzzzz Jan 27, 2026
7f51cc6
Add base components
mateuuszzzzz Jan 27, 2026
50ba43e
Add BarChart component
mateuuszzzzz Jan 27, 2026
338ea76
Merge branch 'main' into add-search-bar-chart-component
mateuuszzzzz Jan 27, 2026
4d0dd7a
Integrate BarChart with search
mateuuszzzzz Jan 27, 2026
a99d945
Fix handling of negative values and chart rendering logic
mateuuszzzzz Jan 27, 2026
3538bf3
Fix interactions hooks and currency rendering logic
mateuuszzzzz Jan 27, 2026
98e8ce6
Fix X label rendering logic
mateuuszzzzz Jan 27, 2026
20f9c24
Fix font loading on native
mateuuszzzzz Jan 28, 2026
c898979
Fix margin
mateuuszzzzz Jan 28, 2026
3850c6a
Update Podfile.lock
mateuuszzzzz Jan 28, 2026
b3d8b64
Run prettier
mateuuszzzzz Jan 28, 2026
0023402
Fix padding on mobile
mateuuszzzzz Jan 28, 2026
519bde9
Fix ts error
mateuuszzzzz Jan 28, 2026
d1605fe
Add new words to cspell.json
mateuuszzzzz Jan 28, 2026
1c930b9
Merge branch 'main' into add-search-bar-chart-component
mateuuszzzzz Jan 28, 2026
9318793
Fix utility types
mateuuszzzzz Jan 29, 2026
8c8f9de
Move titles to en.ts
mateuuszzzzz Jan 29, 2026
2c7e504
Remove useChartColors hook and move to non-reactive solution
mateuuszzzzz Jan 29, 2026
588aeb0
Add newline in proguard-rules.pro
mateuuszzzzz Jan 29, 2026
4774f99
Move chart header up and make activity indicator themed
mateuuszzzzz Jan 29, 2026
02a55c8
Rely on labels height when adding extra height
mateuuszzzzz Jan 29, 2026
eabf74f
Fix font path to use alias
mateuuszzzzz Jan 29, 2026
247083c
Merge branch 'main' into add-search-bar-chart-component
mateuuszzzzz Jan 29, 2026
7f443c8
Use useMemoizedLazyExpensifyIcons
mateuuszzzzz Jan 29, 2026
a360f78
Use Skia DataSourceParam for fonts
mateuuszzzzz Jan 29, 2026
6346cb6
Add comment explaining why ESLint rule in SearchChartView is disabled
mateuuszzzzz Jan 29, 2026
fca5477
Add auto-generated translations
mateuuszzzzz Jan 29, 2026
78c99e4
Add spanish translations
mateuuszzzzz Jan 29, 2026
2e22ec0
Fix query utils regression
mateuuszzzzz Jan 29, 2026
7f6f2f0
Fix tests
mateuuszzzzz Jan 29, 2026
97238b4
Fix chart types
mateuuszzzzz Jan 29, 2026
5b04b31
Add jest mocks
mateuuszzzzz Jan 29, 2026
b98390f
Fix mocks and unify behaviour of chart scroll and table scroll on mobile
mateuuszzzzz Jan 29, 2026
5c565d6
Use DateUtils instead of custom date range implementation
mateuuszzzzz Jan 29, 2026
fe9eabd
Add warning on failure of buildSearchQueryJSON
mateuuszzzzz Jan 29, 2026
ebe2071
Make sure we fallback to category group-by when we don't use it expli…
mateuuszzzzz Jan 29, 2026
6fbc6e7
Remove unused constants
mateuuszzzzz Jan 29, 2026
8872a36
Use convertToFrontendAmountAsInteger instead of custom implementation
mateuuszzzzz Jan 29, 2026
03d7bab
Add percentage value to tooltip
mateuuszzzzz Jan 29, 2026
492ab92
Fix tests to respect default group-by fallback when view param is used
mateuuszzzzz Jan 29, 2026
c745a1b
Fix issue with domain clipping when only positive values are rendered
mateuuszzzzz Jan 29, 2026
9c8cd70
Fix tooltip data for negative values
mateuuszzzzz Jan 29, 2026
b9a9773
Fix formatting
mateuuszzzzz Jan 29, 2026
7c842f0
Merge branch 'main' into add-search-bar-chart-component
mateuuszzzzz Jan 29, 2026
a7fb202
Add new group-by entries in config
mateuuszzzzz Jan 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion android/app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,7 @@
-dontwarn org.jmrtd.protocol.BACResult
-dontwarn org.jmrtd.protocol.PACEResult
-dontwarn org.spongycastle.jce.provider.BouncyCastleProvider
-dontwarn org.slf4j.impl.StaticLoggerBinder
-dontwarn org.slf4j.impl.StaticLoggerBinder

# https://shopify.github.io/react-native-skia/docs/getting-started/installation/#proguard
-keep class com.shopify.reactnative.skia.** { *; }
13 changes: 12 additions & 1 deletion config/webpack/webpack.common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ const includeModules = [
'expo-video',
'expo-image-manipulator',
'expo-modules-core',
'victory-native',
'@shopify/react-native-skia',
].join('|');

const environmentToLogoSuffixMap: Record<string, string> = {
Expand Down Expand Up @@ -158,6 +160,9 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):

// Group‑IB web SDK injection file
{from: 'web/snippets/gib.js', to: 'gib.js'},

// CanvasKit WASM files for @shopify/react-native-skia web support (uses full version)
{from: 'node_modules/canvaskit-wasm/bin/full/canvaskit.wasm'},
],
}),
new webpack.EnvironmentPlugin({JEST_WORKER_ID: ''}),
Expand Down Expand Up @@ -236,7 +241,7 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
* You can remove something from this list if it doesn't use "react-native" as an import and it doesn't
* use JSX/JS that needs to be transformed by babel.
*/
exclude: [new RegExp(`node_modules/(?!(${includeModules})/).*|.native.js$`)],
exclude: [new RegExp(`node_modules/(?!(${includeModules})/).*|\\.native\\.(js|jsx|ts|tsx)$`)],
},
// We are importing this worker as a string by using asset/source otherwise it will default to loading via an HTTPS request later.
// This causes issues if we have gone offline before the pdfjs web worker is set up as we won't be able to load it from the server.
Expand Down Expand Up @@ -307,6 +312,10 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
lodash: 'lodash-es',
'react-native-config': 'react-web-config',
'react-native$': 'react-native-web',
// Use victory-native source files instead of pre-compiled dist (which uses CommonJS exports)
'victory-native': path.resolve(dirname, '../../node_modules/victory-native/src/index.ts'),
// Required for @shopify/react-native-skia web support
'react-native/Libraries/Image/AssetRegistry': false,
// Module alias for web
// https://webpack.js.org/configuration/resolve/#resolvealias
'@assets': path.resolve(dirname, '../../assets'),
Expand All @@ -330,6 +339,8 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
fallback: {
'process/browser': require.resolve('process/browser'),
crypto: false,
fs: false,
path: false,
},
},

Expand Down
2 changes: 2 additions & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -820,6 +820,8 @@
"Wooo",
"Splittable",
"pgrep",
"skia",
"canvaskit",
"Invoicify"
],
"ignorePaths": [
Expand Down
84 changes: 72 additions & 12 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ PODS:
- EXAV (15.1.7):
- ExpoModulesCore
- ReactCommon/turbomodule/core
- EXConstants (18.0.9):
- EXConstants (18.0.10):
- ExpoModulesCore
- EXImageLoader (5.1.0):
- ExpoModulesCore
Expand Down Expand Up @@ -173,10 +173,13 @@ PODS:
- Yoga
- ExpoSecureStore (14.2.4):
- ExpoModulesCore
- ExpoStoreReview (9.0.9):
- ExpoModulesCore
- ExpoVideo (3.0.12):
- ExpoModulesCore
- ExpoStoreReview (9.0.8):
- EXTaskManager (14.0.9):
- ExpoModulesCore
- UMAppLoader
- fast_float (8.0.0)
- FBLazyVector (0.81.4)
- Firebase/Analytics (11.13.0):
Expand Down Expand Up @@ -530,6 +533,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -555,6 +559,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -579,6 +584,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -605,6 +611,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -630,6 +637,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -655,6 +663,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -680,6 +689,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -705,6 +715,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -730,6 +741,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -755,6 +767,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -780,6 +793,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -805,6 +819,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -830,6 +845,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand All @@ -855,6 +871,7 @@ PODS:
- React-jsinspectorcdp
- React-jsitooling
- React-perflogger
- React-rendererconsistency
- React-runtimeexecutor
- React-runtimescheduler
- React-utils
Expand Down Expand Up @@ -2784,6 +2801,36 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- react-native-skia (2.4.14):
- boost
- DoubleConversion
- fast_float
- fmt
- glog
- hermes-engine
- RCT-Folly
- RCT-Folly/Fabric
- RCTRequired
- RCTTypeSafety
- React
- React-callinvoker
- React-Core
- React-debug
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- React-NativeModulesApple
- React-RCTFabric
- React-renderercss
- React-rendererdebug
- React-utils
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- react-native-view-shot (4.0.0):
- boost
- DoubleConversion
Expand Down Expand Up @@ -4111,6 +4158,7 @@ PODS:
- SocketRocket (0.7.1)
- Turf (2.8.0)
- TweetNacl (1.0.2)
- UMAppLoader (6.0.8)
- VisionCamera (4.7.2):
- VisionCamera/Core (= 4.7.2)
- VisionCamera/React (= 4.7.2)
Expand All @@ -4137,8 +4185,9 @@ DEPENDENCIES:
- ExpoLocation (from `../node_modules/expo-location/ios`)
- ExpoModulesCore (from `../node_modules/expo-modules-core`)
- ExpoSecureStore (from `../node_modules/expo-secure-store/ios`)
- ExpoVideo (from `../node_modules/expo-video/ios`)
- ExpoStoreReview (from `../node_modules/expo-store-review/ios`)
- ExpoVideo (from `../node_modules/expo-video/ios`)
- EXTaskManager (from `../node_modules/expo-task-manager/ios`)
- fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)
Expand Down Expand Up @@ -4205,6 +4254,7 @@ DEPENDENCIES:
- react-native-plaid-link-sdk (from `../node_modules/react-native-plaid-link-sdk`)
- react-native-release-profiler (from `../node_modules/react-native-release-profiler`)
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- "react-native-skia (from `../node_modules/@shopify/react-native-skia`)"
- react-native-view-shot (from `../node_modules/react-native-view-shot`)
- "react-native-wallet (from `../node_modules/@expensify/react-native-wallet`)"
- react-native-webview (from `../node_modules/react-native-webview`)
Expand Down Expand Up @@ -4264,6 +4314,7 @@ DEPENDENCIES:
- RNSVG (from `../node_modules/react-native-svg`)
- RNWorklets (from `../node_modules/react-native-worklets`)
- SocketRocket (~> 0.7.1)
- UMAppLoader (from `../node_modules/unimodules-app-loader/ios`)
- VisionCamera (from `../node_modules/react-native-vision-camera`)
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)

Expand Down Expand Up @@ -4352,10 +4403,12 @@ EXTERNAL SOURCES:
:path: "../node_modules/expo-modules-core"
ExpoSecureStore:
:path: "../node_modules/expo-secure-store/ios"
ExpoVideo:
:path: "../node_modules/expo-video/ios"
ExpoStoreReview:
:path: "../node_modules/expo-store-review/ios"
ExpoVideo:
:path: "../node_modules/expo-video/ios"
EXTaskManager:
:path: "../node_modules/expo-task-manager/ios"
fast_float:
:podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec"
FBLazyVector:
Expand Down Expand Up @@ -4485,6 +4538,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-release-profiler"
react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context"
react-native-skia:
:path: "../node_modules/@shopify/react-native-skia"
react-native-view-shot:
:path: "../node_modules/react-native-view-shot"
react-native-wallet:
Expand Down Expand Up @@ -4601,6 +4656,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-svg"
RNWorklets:
:path: "../node_modules/react-native-worklets"
UMAppLoader:
:path: "../node_modules/unimodules-app-loader/ios"
VisionCamera:
:path: "../node_modules/react-native-vision-camera"
Yoga:
Expand All @@ -4616,10 +4673,10 @@ SPEC CHECKSUMS:
AirshipServiceExtension: 50d11b2f62c4a490d4e81a1c36f70e2ecb70a27e
AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73
AppLogs: 3bc4e9b141dbf265b9464409caaa40416a9ee0e0
boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
boost: 659a89341ea4ab3df8259733813b52f26d8be9a5
DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
EXAV: ae28256069c4cdde93d185c007d8f68d92902c2e
EXConstants: a95804601ee4a6aa7800645f9b070d753b1142b3
EXConstants: fd688cef4e401dcf798a021cfb5d87c890c30ba3
EXImageLoader: 4d3d3284141f1a45006cc4d0844061c182daf7ee
expensify-react-native-background-task: 03c640e1f5649692d058cba48c0a138f024a6dd3
ExpensifyNitroUtils: 86109fe1ab88351ed63ffe11b760d537c70019d7
Expand All @@ -4631,8 +4688,9 @@ SPEC CHECKSUMS:
ExpoLocation: 93d7faa0c2adbd5a04686af0c1a61bc6ed3ee2f7
ExpoModulesCore: e1b5401a7af4c7dbf4fe26b535918a72c6ed8a7b
ExpoSecureStore: 3f1b632d6d40bcc62b4983ef9199cd079592a50a
ExpoStoreReview: 32bb43b6fae9c8db3e33cad69996dff3785eef5f
ExpoVideo: 6907c4872886dce2720d3af20782eb6ee7734110
ExpoStoreReview: 15f19e0d6cb6e00330ba1b356485bf47ef19c39a
EXTaskManager: 6f1a66e4c8cc6df6e24c3d90928704bc3013eae5
fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6
FBLazyVector: 941bef1c8eeabd9fe1f501e30a5220beee913886
Firebase: 3435bc66b4d494c2f22c79fd3aae4c1db6662327
Expand Down Expand Up @@ -4688,7 +4746,7 @@ SPEC CHECKSUMS:
React: 2073376f47c71b7e9a0af7535986a77522ce1049
React-callinvoker: 751b6f2c83347a0486391c3f266f291f0f53b27e
React-Codegen: 4b8b4817cea7a54b83851d4c1f91f79aa73de30a
React-Core: dff5d29973349b11dd6631c9498456d75f846d5e
React-Core: aeebd9b37ac383279f610f1e53f66b9931686a41
React-CoreModules: c0ae04452e4c5d30e06f8e94692a49107657f537
React-cxxreact: 376fd672c95dfb64ad5cc246e6a1e9edb78dec4c
React-debug: d4955c86870792887ed695df6ebf0e94e39dc7e1
Expand Down Expand Up @@ -4727,19 +4785,20 @@ SPEC CHECKSUMS:
react-native-key-command: 7538df85ed26502b2a929c0584235459b26c7a91
react-native-keyboard-controller: c4ca61f44d66c2f8987a7e67e9b78e80dc965c45
react-native-launch-arguments: d4759f7591e2766e6c5ec746b7032429edaf7058
react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187
react-native-netinfo: f94b3a0fc305e812f3f615989d99299d7110c2ae
react-native-pager-view: b93d2fcd4dc06c519b8ad0ceddaf183fb5fa32e7
react-native-pdf: 6a09a9be0e7ee954ea671437483316f9a28f8572
react-native-performance: a7a65d0b0f3055c5db33e1433e4345143ef6a100
react-native-plaid-link-sdk: 425c0a3a923310fcd8489142209ff1508372a7bf
react-native-release-profiler: 6c3ed1765fee48e869170e4af339c838a747eaee
react-native-safe-area-context: 0a3b034bb63a5b684dd2f5fffd3c90ef6ed41ee8
react-native-skia: 51f30133876025c83e933f4f7253479e6de5d937
react-native-view-shot: 28aca10c6c6e5331959ba4b6cb2fced572f88af3
react-native-wallet: 4e3cc1f48ca653ad4a96df8da7e6bd9c8987b3e3
react-native-webview: cdce419e8022d0ef6f07db21890631258e7a9e6e
React-NativeModulesApple: 8c7eb6057b00c191a11ad5ced41826ec5a0e4d78
React-oscompat: 93b5535ea7f7dff46aaee4f78309a70979bdde9d
React-perflogger: 5536d2df3d18fe0920263466f7b46a56351c0510
React-perflogger: e7dcbfcb796d346be7936b75740c3e27a4bb3977
React-performancetimeline: c6c9393c1a0453a51e1852e3531defe60790b36c
React-RCTActionSheet: 42195ae666e6d79b4af2346770f765b7c29435b9
React-RCTAnimation: fa103ccc3503b1ed8dedca7e62e7823937748843
Expand All @@ -4754,7 +4813,7 @@ SPEC CHECKSUMS:
React-RCTSettings: 71f5c7fd7b5f4e725a4e2114a4b4373d0e46048f
React-RCTText: b94d4699b49285bee22b8ebf768924d607eccee3
React-RCTVibration: 6e3993c4f6c36a3899059f9a9ead560ddaf5a7d7
React-rendererconsistency: 612d0f6603d9837bb1236d7fd5194203b35c8799
React-rendererconsistency: bef28690433e2b4bb00c2f884b22b86e61a430f2
React-renderercss: e5c2c3b84976f7a587cde8423c671db07a6a77da
React-rendererdebug: cc7a6131733605b8897754f72c0c35c79f77da9e
React-RuntimeApple: 3f96102fc1ebf738d36719cdce5422a5769293fb
Expand Down Expand Up @@ -4800,6 +4859,7 @@ SPEC CHECKSUMS:
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
Turf: aa2ede4298009639d10db36aba1a7ebaad072a5e
TweetNacl: 3abf4d1d2082b0114e7a67410e300892448951e6
UMAppLoader: 145337733539f9af9b3dd97eeaa7f3bd97cacb23
VisionCamera: 30b358b807324c692064f78385e9a732ce1bebfe
Yoga: 9b30b783a17681321b52ac507a37219d7d795ace

Expand Down
Loading
Loading