diff --git a/package.json b/package.json
index a335f4f..e751ad8 100644
--- a/package.json
+++ b/package.json
@@ -92,7 +92,7 @@
   },
   "dependencies": {
     "@braw/async-computed": "^5.0.2",
-    "@formatjs/ecma402-abstract": "^1.18.2",
+    "@formatjs/ecma402-abstract": "^2.2.4",
     "@formatjs/icu-messageformat-parser": "^2.7.6",
     "@formatjs/intl": "^2.10.0",
     "@formatjs/intl-localematcher": "^0.5.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 501635a..a4d6f85 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,8 +12,8 @@ importers:
         specifier: ^5.0.2
         version: 5.0.2(vue@3.4.19(typescript@5.3.3))
       '@formatjs/ecma402-abstract':
-        specifier: ^1.18.2
-        version: 1.18.2
+        specifier: ^2.2.4
+        version: 2.2.4
       '@formatjs/icu-messageformat-parser':
         specifier: ^2.7.6
         version: 2.7.6
@@ -746,9 +746,15 @@ packages:
   '@formatjs/ecma402-abstract@1.18.2':
     resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==}
 
+  '@formatjs/ecma402-abstract@2.2.4':
+    resolution: {integrity: sha512-lFyiQDVvSbQOpU+WFd//ILolGj4UgA/qXrKeZxdV14uKiAUiPAtX6XAn7WBCRi7Mx6I7EybM9E5yYn4BIpZWYg==}
+
   '@formatjs/fast-memoize@2.2.0':
     resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==}
 
+  '@formatjs/fast-memoize@2.2.3':
+    resolution: {integrity: sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==}
+
   '@formatjs/icu-messageformat-parser@2.7.6':
     resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==}
 
@@ -764,6 +770,9 @@ packages:
   '@formatjs/intl-localematcher@0.5.4':
     resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==}
 
+  '@formatjs/intl-localematcher@0.5.8':
+    resolution: {integrity: sha512-I+WDNWWJFZie+jkfkiK5Mp4hEDyRSEvmyfYadflOno/mmKJKcB17fEpEH0oJu/OWhhCJ8kJBDz2YMd/6cDl7Mg==}
+
   '@formatjs/intl@2.10.0':
     resolution: {integrity: sha512-X3xT9guVkKDS86EKV80lS0KxoazUglkJTGZO66sKY7otgl0VeStPA8B3u8UkKT47PexVV98fUzjpkchYmbe9nw==}
     peerDependencies:
@@ -4012,10 +4021,20 @@ snapshots:
       '@formatjs/intl-localematcher': 0.5.4
       tslib: 2.4.1
 
+  '@formatjs/ecma402-abstract@2.2.4':
+    dependencies:
+      '@formatjs/fast-memoize': 2.2.3
+      '@formatjs/intl-localematcher': 0.5.8
+      tslib: 2.4.1
+
   '@formatjs/fast-memoize@2.2.0':
     dependencies:
       tslib: 2.4.1
 
+  '@formatjs/fast-memoize@2.2.3':
+    dependencies:
+      tslib: 2.4.1
+
   '@formatjs/icu-messageformat-parser@2.7.6':
     dependencies:
       '@formatjs/ecma402-abstract': 1.18.2
@@ -4043,6 +4062,10 @@ snapshots:
     dependencies:
       tslib: 2.4.1
 
+  '@formatjs/intl-localematcher@0.5.8':
+    dependencies:
+      tslib: 2.4.1
+
   '@formatjs/intl@2.10.0(typescript@5.3.3)':
     dependencies:
       '@formatjs/ecma402-abstract': 1.18.2