diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml
index 8c8a8c5e..f4496137 100644
--- a/.buildkite/pipeline.yml
+++ b/.buildkite/pipeline.yml
@@ -40,6 +40,33 @@ steps:
- bundle install
- features/scripts/build-ios.sh
+ - label: ':runner: expo Android 15'
+ depends_on:
+ - "build-expo-apk"
+ timeout_in_minutes: 50
+ plugins:
+ artifacts#v1.5.0:
+ download: "build/output.apk"
+ docker-compose#v3.9.0:
+ pull: expo-maze-runner
+ run: expo-maze-runner
+ use-aliases: true
+ command:
+ - --app=build/output.apk
+ - --farm=bs
+ - --device=ANDROID_15
+ - --a11y-locator
+ - --fail-fast
+ - --retry=2
+ - --order=random
+ test-collector#v1.10.2:
+ files: "reports/TEST-*.xml"
+ format: "junit"
+ branch: "^v52$"
+ concurrency: 5
+ concurrency_group: 'browserstack-app'
+ concurrency_method: eager
+
- label: ':runner: expo Android 12'
depends_on:
- "build-expo-apk"
@@ -62,12 +89,12 @@ steps:
test-collector#v1.10.2:
files: "reports/TEST-*.xml"
format: "junit"
- branch: "^v51$"
+ branch: "^v52$"
concurrency: 5
concurrency_group: 'browserstack-app'
concurrency_method: eager
- - label: ':runner: expo iOS 16'
+ - label: ':runner: expo iOS 18'
depends_on:
- "build-expo-ipa"
timeout_in_minutes: 50
@@ -81,7 +108,7 @@ steps:
command:
- --app=build/output.ipa
- --farm=bs
- - --device=IOS_16
+ - --device=IOS_18
- --a11y-locator
- --fail-fast
- --retry=2
@@ -89,12 +116,12 @@ steps:
test-collector#v1.10.2:
files: "reports/TEST-*.xml"
format: "junit"
- branch: "^v51$"
+ branch: "^v52$"
concurrency: 5
concurrency_group: 'browserstack-app'
concurrency_method: eager
- - label: ':runner: expo iOS 14'
+ - label: ':runner: expo iOS 16'
depends_on:
- "build-expo-ipa"
timeout_in_minutes: 50
@@ -108,7 +135,7 @@ steps:
command:
- --app=build/output.ipa
- --farm=bs
- - --device=IOS_14
+ - --device=IOS_16
- --a11y-locator
- --fail-fast
- --retry=2
@@ -116,7 +143,7 @@ steps:
test-collector#v1.10.2:
files: "reports/TEST-*.xml"
format: "junit"
- branch: "^v51$"
+ branch: "^v52$"
concurrency: 5
concurrency_group: 'browserstack-app'
concurrency_method: eager
diff --git a/examples/expo-52/.gitignore b/examples/expo-52/.gitignore
new file mode 100644
index 00000000..c9d575d7
--- /dev/null
+++ b/examples/expo-52/.gitignore
@@ -0,0 +1,38 @@
+# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
+
+# dependencies
+node_modules/
+
+# Expo
+.expo/
+dist/
+web-build/
+expo-env.d.ts
+
+# Native
+*.orig.*
+*.jks
+*.p8
+*.p12
+*.key
+*.mobileprovision
+
+# Metro
+.metro-health-check*
+
+# debug
+npm-debug.*
+yarn-debug.*
+yarn-error.*
+
+# macOS
+.DS_Store
+*.pem
+
+# local env files
+.env*.local
+
+# typescript
+*.tsbuildinfo
+
+app-example
diff --git a/examples/expo-52/App.tsx b/examples/expo-52/App.tsx
new file mode 100644
index 00000000..e5bd2d88
--- /dev/null
+++ b/examples/expo-52/App.tsx
@@ -0,0 +1,33 @@
+import Bugsnag from "@bugsnag/expo";
+import React from "react";
+import { StyleSheet, Text, View } from "react-native";
+import Controls from "./components/Controls";
+import ErrorView from "./components/ErrorView";
+
+Bugsnag.start();
+
+// Create the error boundary...
+const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React);
+
+const onError = (event: any) => {
+ // callback will only run for errors caught by boundary
+}
+
+export default function Index() {
+ return (
+
+
+ Expo example app
+
+
+
+ )
+}
+
+const styles = StyleSheet.create({
+ screenContainer: {
+ flex: 1,
+ justifyContent: "center",
+ alignItems: "center"
+ }
+});
diff --git a/examples/expo48/README.md b/examples/expo-52/README.md
similarity index 100%
rename from examples/expo48/README.md
rename to examples/expo-52/README.md
diff --git a/examples/expo-52/app.json b/examples/expo-52/app.json
new file mode 100644
index 00000000..879e17fe
--- /dev/null
+++ b/examples/expo-52/app.json
@@ -0,0 +1,17 @@
+{
+ "expo": {
+ "name": "expo-example-52",
+ "slug": "expo-example-52",
+ "version": "1.0.0",
+ "newArchEnabled": true,
+ "platforms": [
+ "ios",
+ "android"
+ ],
+ "extra": {
+ "bugsnag": {
+ "apiKey": "API_KEY"
+ }
+ }
+ }
+}
diff --git a/examples/expo48/babel.config.js b/examples/expo-52/babel.config.js
similarity index 100%
rename from examples/expo48/babel.config.js
rename to examples/expo-52/babel.config.js
diff --git a/examples/expo-52/components/Button.tsx b/examples/expo-52/components/Button.tsx
new file mode 100644
index 00000000..559a6b98
--- /dev/null
+++ b/examples/expo-52/components/Button.tsx
@@ -0,0 +1,34 @@
+import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
+
+interface Props {
+ onPress: () => void
+ title: string
+}
+
+const Button: React.FunctionComponent = ({ onPress, title }) => (
+
+
+ {title}
+
+
+);
+
+export default Button
+
+const styles = StyleSheet.create({
+ button: {
+ backgroundColor: '#003366',
+ borderRadius: 4,
+ paddingVertical: 10,
+ paddingHorizontal: 25,
+ },
+ text: {
+ fontSize: 16,
+ lineHeight: 21,
+ letterSpacing: 0.25,
+ color: 'white',
+ },
+ buttonContainer: {
+ paddingVertical: 10,
+ }
+});
diff --git a/examples/expo-52/components/Controls.tsx b/examples/expo-52/components/Controls.tsx
new file mode 100644
index 00000000..db01f714
--- /dev/null
+++ b/examples/expo-52/components/Controls.tsx
@@ -0,0 +1,32 @@
+import Bugsnag from '@bugsnag/expo';
+import React from 'react';
+import { View } from 'react-native';
+import Button from './Button';
+
+function unhandledError() {
+ throw new Error('Unhandled error!');
+}
+
+function handledError() {
+ Bugsnag.notify(new Error('Handled error!'));
+}
+
+const Controls = () => {
+ const [yeah, setYeah] = React.useState(false);
+
+ const triggerRenderError = () => {
+ setYeah(true)
+ }
+
+ return (
+
+
+
+
+ {/* @ts-expect-error This will throw an error because the property doesn't exist */}
+ {yeah ? {yeah.non.existent.property} : null}
+
+ )
+}
+
+export default Controls
diff --git a/examples/expo-52/components/ErrorView.tsx b/examples/expo-52/components/ErrorView.tsx
new file mode 100644
index 00000000..82d49b2c
--- /dev/null
+++ b/examples/expo-52/components/ErrorView.tsx
@@ -0,0 +1,23 @@
+import { Button, StyleSheet, Text, View } from 'react-native';
+
+interface Props {
+ clearError: () => void
+}
+
+const ErrorView: React.FunctionComponent = ({ clearError }) => (
+
+ Inform users of an error in the component tree.
+ Use clearError to reset ErrorBoundary state and re-render child tree.
+
+
+);
+
+export default ErrorView
+
+const styles = StyleSheet.create({
+ screenContainer: {
+ flex: 1,
+ justifyContent: 'center',
+ alignItems: 'center'
+ }
+});
diff --git a/examples/expo-52/package.json b/examples/expo-52/package.json
new file mode 100644
index 00000000..bae16cdd
--- /dev/null
+++ b/examples/expo-52/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "expo-52",
+ "version": "1.0.0",
+ "private": true,
+ "scripts": {
+ "start": "expo start",
+ "android": "expo start --android",
+ "ios": "expo start --ios"
+ },
+ "dependencies": {
+ "@bugsnag/expo": "^52.0.0",
+ "expo": "~52.0.11",
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-native": "0.76.3"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.19.3"
+ }
+}
diff --git a/examples/expo-52/tsconfig.json b/examples/expo-52/tsconfig.json
new file mode 100644
index 00000000..fc3e1466
--- /dev/null
+++ b/examples/expo-52/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "extends": "expo/tsconfig.base",
+ "compilerOptions": {
+ "strict": true,
+ "paths": {
+ "@/*": [
+ "./*"
+ ]
+ }
+ },
+ "include": [
+ "**/*.ts",
+ "**/*.tsx"
+ ]
+}
diff --git a/examples/expo48/.gitignore b/examples/expo48/.gitignore
deleted file mode 100644
index 772ef297..00000000
--- a/examples/expo48/.gitignore
+++ /dev/null
@@ -1,17 +0,0 @@
-node_modules/
-.expo/
-dist/
-npm-debug.*
-*.jks
-*.p8
-*.p12
-*.key
-*.mobileprovision
-*.orig.*
-web-build/
-
-# macOS
-.DS_Store
-
-# Temporary files created by Metro to check the health of the file watcher
-.metro-health-check*
diff --git a/examples/expo48/App.js b/examples/expo48/App.js
deleted file mode 100644
index 9e3a293b..00000000
--- a/examples/expo48/App.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import Bugsnag from '@bugsnag/expo';
-import React from 'react';
-import BadButtons from './components/BadButtons';
-import { StatusBar } from 'expo-status-bar';
-import { StyleSheet, Text, View, Button, Image } from 'react-native';
-
-const PlaceholderImage = require('./assets/favicon2-96.png');
-
-Bugsnag.start();
-
-const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React)
-
-const onError = (event) => {
- // callback will only run for errors caught by boundary
-}
-
-const ErrorView = ({ clearError }) =>
-
- Inform users of an error in the component tree.
- Use clearError to reset ErrorBoundary state and re-render child tree.
-
-
-
-const App = () => {
- return (
-
-
- EXPO EXAMPLE APP
-
-
- )
-};
-
-export default () =>
-
-
-
-
-
-const styles = StyleSheet.create({
- screenContainer: {
- alignItems: "center",
- padding: 40,
- },
- textContainer: {
- paddingVertical: 20,
- },
-});
diff --git a/examples/expo48/app.json b/examples/expo48/app.json
deleted file mode 100644
index 6c0bb122..00000000
--- a/examples/expo48/app.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "expo": {
- "name": "expo48",
- "slug": "expo48",
- "version": "1.0.0",
- "orientation": "portrait",
- "icon": "./assets/icon.png",
- "userInterfaceStyle": "light",
- "splash": {
- "image": "./assets/splash.png",
- "resizeMode": "contain",
- "backgroundColor": "#ffffff"
- },
- "assetBundlePatterns": [
- "**/*"
- ],
- "ios": {
- "supportsTablet": true
- },
- "android": {
- "adaptiveIcon": {
- "foregroundImage": "./assets/adaptive-icon.png",
- "backgroundColor": "#ffffff"
- }
- },
- "web": {
- "favicon": "./assets/favicon.png"
- },
- "extra": {
- "bugsnag": {
- "apiKey": "API_KEY"
- }
- },
- "hooks": {
- "postPublish": [
- {
- "file": "@bugsnag/expo/hooks/post-publish.js",
- "config": {}
- }
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/examples/expo48/assets/adaptive-icon.png b/examples/expo48/assets/adaptive-icon.png
deleted file mode 100644
index 03d6f6b6..00000000
Binary files a/examples/expo48/assets/adaptive-icon.png and /dev/null differ
diff --git a/examples/expo48/assets/favicon.png b/examples/expo48/assets/favicon.png
deleted file mode 100644
index e75f697b..00000000
Binary files a/examples/expo48/assets/favicon.png and /dev/null differ
diff --git a/examples/expo48/assets/favicon2-96.png b/examples/expo48/assets/favicon2-96.png
deleted file mode 100644
index f46b6314..00000000
Binary files a/examples/expo48/assets/favicon2-96.png and /dev/null differ
diff --git a/examples/expo48/assets/icon.png b/examples/expo48/assets/icon.png
deleted file mode 100644
index a0b1526f..00000000
Binary files a/examples/expo48/assets/icon.png and /dev/null differ
diff --git a/examples/expo48/assets/splash.png b/examples/expo48/assets/splash.png
deleted file mode 100644
index 0e89705a..00000000
Binary files a/examples/expo48/assets/splash.png and /dev/null differ
diff --git a/examples/expo48/components/BadButtons.js b/examples/expo48/components/BadButtons.js
deleted file mode 100644
index c5dd19e4..00000000
--- a/examples/expo48/components/BadButtons.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import Bugsnag from '@bugsnag/expo';
-import React from 'react';
-import { StatusBar } from 'expo-status-bar';
-import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
-
-class BadButtons extends React.Component {
- constructor (props) {
- super(props)
- this.state = { yeah: false }
- }
-
- triggerRenderError = () => {
- this.setState({ yeah: true })
- }
-
- render() {
- return (
-
-
-
-
- {this.state.yeah ? { this.state.yeah.non.existent.property } : null}
-
-
- );
- }
-}
-export default BadButtons
-
-function unhandledError() {
- throw new Error('Unhandled error!')
-}
-
-function handledError() {
- Bugsnag.notify(new Error('Handled error!'))
-}
-
-const AppButton = ({ onPress, title }) => (
-
-
- {title}
-
-
-);
-
-const styles = StyleSheet.create({
- button: {
- backgroundColor: "#003366",
- borderRadius: 4,
- paddingVertical: 10,
- paddingHorizontal: 25,
- },
- text: {
- fontSize: 16,
- lineHeight: 21,
- letterSpacing: 0.25,
- color: 'white',
- },
- buttonContainer: {
- paddingVertical: 10,
- },
-});
\ No newline at end of file
diff --git a/examples/expo48/package.json b/examples/expo48/package.json
deleted file mode 100644
index c64ac3af..00000000
--- a/examples/expo48/package.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "expo48",
- "version": "1.0.0",
- "main": "node_modules/expo/AppEntry.js",
- "scripts": {
- "start": "expo start",
- "android": "expo start --android",
- "ios": "expo start --ios",
- "web": "expo start --web"
- },
- "dependencies": {
- "expo": "~48.0.6",
- "expo-status-bar": "~1.4.4",
- "react": "18.2.0",
- "react-native": "0.71.3",
- "@bugsnag/expo": "^48.0.0",
- "@react-native-community/netinfo": "9.3.7",
- "expo-application": "~5.1.1",
- "expo-constants": "~14.2.1",
- "expo-crypto": "~12.2.1",
- "expo-device": "~5.2.1",
- "expo-file-system": "~15.2.2"
- },
- "devDependencies": {
- "@babel/core": "^7.20.0"
- },
- "private": true
-}
diff --git a/features/error_boundary.feature b/features/error_boundary.feature
index 754fec97..4c357171 100644
--- a/features/error_boundary.feature
+++ b/features/error_boundary.feature
@@ -6,18 +6,9 @@ Background:
And I click the element "errorBoundary"
Scenario: A render error is captured by an error boundary
- Given the element "errorBoundaryButton" is present
- When I click the element "errorBoundaryButton"
- Then I wait to receive an error
- And the exception "errorClass" equals "Error"
+ Given I wait to receive an error
+ Then the exception "errorClass" equals "Error"
And the exception "message" starts with "An error has occurred in Buggy component!"
And the event "metaData.react.componentStack" is not null
And the error Bugsnag-Integrity header is valid
-
-Scenario: When a render error occurs, a fallback is presented
- Given the element "errorBoundaryFallbackButton" is present
- When I click the element "errorBoundaryFallbackButton"
- Then I wait to receive an error
- And the exception "errorClass" equals "Error"
And the element "errorBoundaryFallback" is present
- And the error Bugsnag-Integrity header is valid
diff --git a/features/fixtures/test-app/app.json b/features/fixtures/test-app/app.json
index 5fdce29d..1c711490 100644
--- a/features/fixtures/test-app/app.json
+++ b/features/fixtures/test-app/app.json
@@ -2,11 +2,11 @@
"expo": {
"name": "test-fixture",
"slug": "test-fixture",
- "privacy": "unlisted",
"version": "2.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
+ "newArchEnabled": true,
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
diff --git a/features/fixtures/test-app/app/error_boundary.js b/features/fixtures/test-app/app/error_boundary.js
index b13d75a7..768d61bf 100644
--- a/features/fixtures/test-app/app/error_boundary.js
+++ b/features/fixtures/test-app/app/error_boundary.js
@@ -1,95 +1,37 @@
-import React, { Component } from 'react'
-import { View, Button, Text } from 'react-native'
+import React from 'react'
+import { View, Text } from 'react-native'
import { bugsnagClient } from './bugsnag'
-const ErrorBound = bugsnagClient.getPlugin('react')
+// Create the error boundary...
+const ErrorBoundary = bugsnagClient.getPlugin('react').createErrorBoundary(React)
-export default class ErrorBoundary extends Component {
- constructor(props) {
- super(props)
- this.state = {
- ebTrigger: false,
- fallbackTrigger: false
- }
- }
-
- triggerErrorBoundary = () => {
- this.setState(previous => (
- {
- ebTrigger: true,
- fallbackTrigger: false
- }
- ))
- }
-
- renderErrorBoundary = () => {
- if (this.state.ebTrigger) {
- return (
-
- )
- } else {
- return null;
- }
- }
-
- triggerFallback = () => {
- this.setState(previous => (
- {
- ebTrigger: false,
- fallbackTrigger: true
- }
- ))
- }
-
- renderFallback = () => {
- if (this.state.fallbackTrigger) {
- return (
-
- )
- } else {
- return null;
- }
- }
-
- render() {
- return (
-
-
- )
- }
+const onError = (event) => {
+ // callback will only run for errors caught by boundary
}
-class Fallback extends Component {
- render() {
- return (
-
- Buggy!
-
- )
- }
+const ErrorBoundaryFallback = () => {
+ return (
+
+ Error Boundary Fallback
+
+ )
}
-class Buggy extends Component {
- componentDidMount() {
- throw new Error("An error has occurred in Buggy component!");
- }
+const throwError = () => { throw new Error('An error has occurred in Buggy component!') }
- render() {
- return (
-
- )
- }
+const App = () => {
+ return (
+
+ Main Application
+ {throwError()}
+
+ )
}
+export default () => {
+ return (
+
+
+
+ )
+}
diff --git a/features/fixtures/test-app/package.json b/features/fixtures/test-app/package.json
index 1dd38c07..6d387750 100644
--- a/features/fixtures/test-app/package.json
+++ b/features/fixtures/test-app/package.json
@@ -1,27 +1,26 @@
{
"name": "test-fixture",
- "version": "50.0.0",
+ "version": "52.0.0",
"main": "index.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
- "ios": "expo start --ios",
- "web": "expo start --web"
+ "ios": "expo start --ios"
},
"dependencies": {
"@bugsnag/expo": "*",
- "@react-native-community/netinfo": "11.3.1",
- "expo": "~51.0.4",
- "expo-application": "~5.9.1",
- "expo-constants": "~16.0.1",
- "expo-crypto": "~13.0.2",
- "expo-device": "~6.0.2",
- "expo-file-system": "~17.0.1",
- "expo-screen-orientation": "~7.0.4",
- "expo-secure-store": "~13.0.1",
- "expo-status-bar": "~1.12.1",
- "react": "18.2.0",
- "react-native": "0.74.1"
+ "@react-native-community/netinfo": "11.4.1",
+ "expo": "^52.0.0",
+ "expo-application": "~6.0.1",
+ "expo-constants": "~17.0.3",
+ "expo-crypto": "~14.0.1",
+ "expo-device": "~7.0.1",
+ "expo-file-system": "~18.0.4",
+ "expo-screen-orientation": "~8.0.0",
+ "expo-secure-store": "~14.0.0",
+ "expo-status-bar": "~2.0.0",
+ "react": "18.3.1",
+ "react-native": "0.76.3"
},
"devDependencies": {
"@babel/core": "^7.20.0",
diff --git a/package.json b/package.json
index 8eaba889..63f13cbf 100644
--- a/package.json
+++ b/package.json
@@ -8,12 +8,12 @@
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-react": "^7.18.3",
"eslint-plugin-standard": "^4.0.1",
- "expo": "^51.0.0",
+ "expo": "^52.0.0",
"jest": "^29.3.1",
- "jest-expo": "^51.0.1",
+ "jest-expo": "~52.0.2",
"lerna": "^8.0.2",
- "react": "18.2.0",
- "react-native": "0.74.1",
+ "react": "18.3.1",
+ "react-native": "0.76.3",
"verdaccio": "^5.10.2"
},
"scripts": {
@@ -24,6 +24,7 @@
},
"private": true,
"workspaces": [
- "packages/*", "features/fixtures/test-app"
+ "packages/*",
+ "features/fixtures/test-app"
]
}
diff --git a/packages/delivery-expo/package.json b/packages/delivery-expo/package.json
index 548a90fc..e68022b7 100644
--- a/packages/delivery-expo/package.json
+++ b/packages/delivery-expo/package.json
@@ -18,14 +18,14 @@
"license": "MIT",
"devDependencies": {
"@bugsnag/core": "^7.22.7",
- "@react-native-community/netinfo": "11.3.1",
- "expo-crypto": "~13.0.2",
- "expo-file-system": "~17.0.1"
+ "@react-native-community/netinfo": "11.4.1",
+ "expo-crypto": "~14.0.1",
+ "expo-file-system": "~18.0.4"
},
"peerDependencies": {
"@bugsnag/core": "^7.22.7",
- "@react-native-community/netinfo": "11.3.1",
- "expo-crypto": "~13.0.2",
- "expo-file-system": "~17.0.1"
+ "@react-native-community/netinfo": "11.4.1",
+ "expo-crypto": "~14.0.1",
+ "expo-file-system": "~18.0.4"
}
}
diff --git a/packages/expo-cli/lib/version-information.js b/packages/expo-cli/lib/version-information.js
index 5c33fd6a..56fbf8ed 100644
--- a/packages/expo-cli/lib/version-information.js
+++ b/packages/expo-cli/lib/version-information.js
@@ -1,7 +1,7 @@
const semver = require('semver')
// the major version number of the latest Expo SDK we support
-const LATEST_SUPPORTED_EXPO_SDK = 51
+const LATEST_SUPPORTED_EXPO_SDK = 52
class Version {
constructor (expoSdkVersion, bugsnagVersion, isLegacy = false) {
diff --git a/packages/expo/package.json b/packages/expo/package.json
index c6375b75..9fad4e00 100644
--- a/packages/expo/package.json
+++ b/packages/expo/package.json
@@ -49,11 +49,11 @@
"bugsnag-build-reporter": "^2.0.0"
},
"devDependencies": {
- "expo-constants": "~16.0.1"
+ "expo-constants": "~17.0.3"
},
"peerDependencies": {
- "expo": "^51.0.0",
- "expo-constants": "~16.0.1",
+ "expo": "^52.0.0",
+ "expo-constants": "~17.0.3",
"promise": "^8.3.0",
"react": "*"
}
diff --git a/packages/plugin-expo-app/package.json b/packages/plugin-expo-app/package.json
index 9f0051bd..afef2828 100644
--- a/packages/plugin-expo-app/package.json
+++ b/packages/plugin-expo-app/package.json
@@ -18,12 +18,12 @@
"license": "MIT",
"devDependencies": {
"@bugsnag/core": "^7.19.0",
- "expo-application": "~5.9.1",
- "expo-constants": "~16.0.1"
+ "expo-application": "~6.0.1",
+ "expo-constants": "~17.0.3"
},
"peerDependencies": {
"@bugsnag/core": "^7.0.0",
- "expo-application": "~5.9.1",
- "expo-constants": "~16.0.1"
+ "expo-application": "~6.0.1",
+ "expo-constants": "~17.0.3"
}
}
diff --git a/packages/plugin-expo-connectivity-breadcrumbs/package.json b/packages/plugin-expo-connectivity-breadcrumbs/package.json
index 65f50b55..31f7c80f 100644
--- a/packages/plugin-expo-connectivity-breadcrumbs/package.json
+++ b/packages/plugin-expo-connectivity-breadcrumbs/package.json
@@ -18,10 +18,10 @@
"license": "MIT",
"devDependencies": {
"@bugsnag/core": "^7.16.0",
- "@react-native-community/netinfo": "11.3.1"
+ "@react-native-community/netinfo": "11.4.1"
},
"peerDependencies": {
"@bugsnag/core": "^7.0.0",
- "@react-native-community/netinfo": "11.3.1"
+ "@react-native-community/netinfo": "11.4.1"
}
}
diff --git a/packages/plugin-expo-device/package.json b/packages/plugin-expo-device/package.json
index 062ab703..e5a843de 100644
--- a/packages/plugin-expo-device/package.json
+++ b/packages/plugin-expo-device/package.json
@@ -21,14 +21,14 @@
},
"devDependencies": {
"@bugsnag/core": "^7.16.0",
- "expo-constants": "~16.0.1",
- "expo-device": "~6.0.2",
- "expo-secure-store": "~13.0.1"
+ "expo-constants": "~17.0.3",
+ "expo-device": "~7.0.1",
+ "expo-secure-store": "~14.0.0"
},
"peerDependencies": {
"@bugsnag/core": "^7.0.0",
- "expo-constants": "~16.0.1",
- "expo-device": "~6.0.2",
- "expo-secure-store": "~13.0.1"
+ "expo-constants": "~17.0.3",
+ "expo-device": "~7.0.1",
+ "expo-secure-store": "~14.0.0"
}
}