{ "name": "mattermost-mobile", "version": "2.41.0", "description": "Mattermost Mobile with React Native", "main": "index.tsx", "repository": "git@github.com:mattermost/mattermost-mobile.git", "author": "Mattermost, Inc.", "license": "Apache 2.0", "private": true, "engines": { "node": "^22.11.0 || ^24.15.0", "npm": "^10 || ^11" }, "dependencies": { "@formatjs/intl-datetimeformat": "7.4.2", "@formatjs/intl-displaynames": "7.3.5", "@formatjs/intl-getcanonicallocales": "3.2.6", "@formatjs/intl-listformat": "8.3.5", "@formatjs/intl-locale": "5.3.5", "@formatjs/intl-numberformat": "9.3.5", "@formatjs/intl-pluralrules": "6.3.5", "@formatjs/intl-relativetimeformat": "12.3.5", "@gorhom/bottom-sheet": "5.2.13", "@gorhom/portal": "1.0.14", "@mattermost/calls": "github:mattermost/calls-common#bf5c7a25d43478b7949a45d4cbbdacac17705b59", "@mattermost/compass-icons": "0.1.53", "@mattermost/hardware-keyboard": "file:./libraries/@mattermost/hardware-keyboard", "@mattermost/react-native-emm": "1.7.0", "@mattermost/react-native-network-client": "1.10.0", "@mattermost/react-native-paste-input": "2.0.1", "@mattermost/react-native-turbo-log": "0.6.0", "@mattermost/rnshare": "file:./libraries/@mattermost/rnshare", "@mattermost/rnutils": "file:./libraries/@mattermost/rnutils", "@mattermost/secure-pdf-viewer": "file:./libraries/@mattermost/secure-pdf-viewer", "@msgpack/msgpack": "3.1.3", "@nozbe/watermelondb": "0.28.1-0", "@preeternal/react-native-cookie-manager": "6.3.2", "@react-native-camera-roll/camera-roll": "7.10.2", "@react-native-clipboard/clipboard": "1.16.3", "@react-native-community/cli": "20.1.3", "@react-native-community/cli-platform-android": "20.1.3", "@react-native-community/cli-platform-ios": "20.1.3", "@react-native-community/datetimepicker": "9.1.0", "@react-native-community/netinfo": "12.0.1", "@react-native-documents/picker": "12.0.1", "@react-native-documents/viewer": "4.0.0", "@react-native-vector-icons/common": "13.0.0", "@react-navigation/bottom-tabs": "7.15.13", "@react-navigation/native": "7.2.4", "@react-navigation/native-stack": "7.14.14", "@react-navigation/stack": "7.8.13", "@rneui/base": "5.0.0", "@sentry/react-native": "8.11.0", "@shopify/flash-list": "2.3.1", "@voximplant/react-native-foreground-service": "3.0.2", "base-64": "1.0.0", "commonmark": "npm:@mattermost/commonmark@0.31.2-0", "commonmark-react-renderer": "github:mattermost/commonmark-react-renderer#81b5d27509652bae50b4b510ede777dd3bd923cf", "deep-equal": "2.2.3", "emoji-regex": "10.6.0", "expo": "55.0.23", "expo-application": "55.0.14", "expo-crypto": "55.0.14", "expo-device": "55.0.16", "expo-image": "55.0.10", "expo-linear-gradient": "55.0.13", "expo-router": "55.0.14", "expo-splash-screen": "55.0.20", "expo-store-review": "55.0.13", "expo-video-thumbnails": "55.0.14", "expo-web-browser": "55.0.15", "fflate": "0.8.2", "fuse.js": "7.3.0", "grapheme-splitter": "1.0.4", "html-entities": "2.6.0", "js-sha256": "0.11.1", "mime-db": "1.54.0", "moment-timezone": "0.6.2", "node-html-parser": "7.1.0", "path-to-regexp": "8.4.2", "prismjs": "1.30.0", "ratex-react-native": "0.1.4", "react": "19.2.6", "react-freeze": "1.0.4", "react-intl": "10.1.5", "react-native": "0.83.9", "react-native-dotenv": "3.4.11", "react-native-gesture-handler": "2.31.2", "react-native-haptic-feedback": "3.0.0", "react-native-image-picker": "8.2.1", "react-native-incall-manager": "4.2.1", "react-native-keyboard-controller": "1.21.7", "react-native-keychain": "10.0.0", "react-native-localize": "3.7.0", "react-native-nitro-bg-timer-plus": "0.3.2", "react-native-nitro-modules": "0.35.6", "react-native-notifications": "5.2.2", "react-native-performance": "6.0.0", "react-native-permissions": "5.5.1", "react-native-reanimated": "4.3.1", "react-native-safe-area-context": "5.7.0", "react-native-screens": "4.24.0", "react-native-share": "12.3.1", "react-native-svg": "15.15.4", "react-native-url-polyfill": "3.0.0", "react-native-video": "6.19.2", "react-native-walkthrough-tooltip": "1.6.0", "react-native-webrtc": "124.0.7", "react-native-worklets": "0.8.3", "react-syntax-highlighter": "16.1.1", "semver": "7.8.0", "tinycolor2": "1.6.0", "url-parse": "1.5.10" }, "devDependencies": { "@babel/eslint-parser": "7.28.6", "@babel/plugin-proposal-decorators": "7.29.0", "@babel/plugin-transform-class-properties": "7.28.6", "@babel/plugin-transform-flow-strip-types": "7.27.1", "@babel/plugin-transform-runtime": "7.29.0", "@babel/preset-env": "7.29.5", "@babel/preset-typescript": "7.28.5", "@babel/runtime": "7.29.2", "@react-native/babel-preset": "0.83.9", "@react-native/eslint-config": "0.83.9", "@react-native/metro-config": "0.83.9", "@react-native/typescript-config": "0.83.9", "@stylistic/eslint-plugin": "5.10.0", "@testing-library/react-native": "13.3.3", "@types/base-64": "1.0.2", "@types/commonmark": "0.27.10", "@types/commonmark-react-renderer": "4.3.4", "@types/deep-equal": "1.0.4", "@types/jest": "30.0.0", "@types/lodash": "4.17.24", "@types/mime-db": "1.43.6", "@types/pako": "2.0.4", "@types/querystringify": "2.0.2", "@types/react": "19.2.14", "@types/react-native-dotenv": "0.2.2", "@types/react-syntax-highlighter": "15.5.13", "@types/semver": "7.7.1", "@types/tinycolor2": "1.4.6", "@types/tough-cookie": "4.0.5", "@types/url-parse": "1.4.11", "@types/uuid": "10.0.0", "@typescript-eslint/eslint-plugin": "8.59.2", "@typescript-eslint/parser": "8.59.2", "babel-plugin-formatjs": "11.3.6", "babel-plugin-module-resolver": "5.0.3", "eslint": "9.39.4", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.32.0", "eslint-plugin-jest": "29.15.2", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "7.1.1", "husky": "9.1.7", "jest": "29.7.0", "jest-cli": "29.7.0", "jest-expo": "55.0.17", "jetifier": "2.0.0", "mmjstool": "github:mattermost/mattermost-utilities#83b1b311972b8f5e750aae4019457a40abb5aa44", "nock": "14.0.15", "patch-package": "8.0.1", "react-test-renderer": "19.2.6", "timezones.json": "1.7.2", "tough-cookie": "6.0.1", "ts-jest": "29.4.9", "typescript": "6.0.3", "uuid": "14.0.0" }, "overrides": { "@babel/runtime": "7.29.2", "postcss": "8.5.13", "xcode": { "uuid": "14.0.0" } }, "scripts": { "android": "react-native run-android", "build:android": "./scripts/build.sh apk", "build:android-unsigned": "./scripts/build.sh apk unsigned", "build:ios": "./scripts/build.sh ipa", "build:ios-sim": "./scripts/build.sh ipa simulator", "build:ios-unsigned": "./scripts/build.sh ipa unsigned", "check": "npm run lint && npm run tsc", "check-test": "npm run lint && npm run tsc && npm run test", "clean": "./scripts/clean.sh", "e2e:android": "cd detox && npm run e2e:android-build && npm run e2e:android-test && cd ..", "e2e:ios": "cd detox && npm run e2e:ios-test && cd ..", "fix": "npm run lint -- --fix", "i18n-clean-empty": "npm run mmjstool -- i18n clean-empty --mobile-dir .", "i18n-extract": "npm run mmjstool -- i18n extract-mobile", "ios": "react-native run-ios", "ios-gems": "bundle install", "ios-gems-m1": "arch -arm64 bundle install", "intune:disable": "./scripts/intune-disable.sh", "intune:enable": "INTUNE_ENABLED=1 npm run intune:link && INTUNE_ENABLED=1 npm run pod-install", "intune:init": "./scripts/intune-init.sh", "intune:link": "npm install --install-links --no-save ./libraries/@mattermost/intune", "intune:status": "./scripts/intune-status.sh", "lint": "eslint --ignore-pattern .gitignore --ignore-pattern node_modules --quiet .", "mmjstool": "mmjstool", "pod-install": "cd ios && RCT_NEW_ARCH_ENABLED=1 pod install", "pod-install-m1": "cd ios && RCT_NEW_ARCH_ENABLED=1 arch -x86_64 pod install", "postinstall": "patch-package && ./scripts/postinstall.sh", "prepare": "husky", "preinstall": "./scripts/preinstall.sh && npx solidarity", "start": "react-native start --host 127.0.0.1", "test": "NODE_OPTIONS=--max_old_space_size=12000 jest --maxWorkers=4", "test:ci": "NODE_OPTIONS=--max_old_space_size=12000 jest --verbose=false --forceExit", "test:ci:coverage": "npm run test:ci -- --coverage", "test:coverage": "npm test -- --coverage", "test:watch": "npm test -- --watch", "tsc": "NODE_OPTIONS=--max_old_space_size=12000 tsc --noEmit", "updatesnapshot": "NODE_OPTIONS=--max_old_space_size=12000 jest --updateSnapshot" }, "expo": { "autolinking": { "exclude": [ "expo-keep-awake", "expo-font" ], "android": { "buildFromSource": [ "expo-image", "expo-video-thumbnails" ] } } } }