amplify-js: DataStore macOS Safari and iOS and iPadOS browsers - ConstraintError and undefined model[f] error

Before opening, please confirm:

JavaScript Framework

Angular

Amplify APIs

DataStore

Amplify Categories

api

Environment information

# Put output below this line

  System:
    OS: macOS 12.6
    CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
    Memory: 7.41 GB / 64.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 16.18.0 - ~/.nvm/versions/node/v16.18.0/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 8.19.2 - ~/.nvm/versions/node/v16.18.0/bin/npm
  Browsers:
    Chrome: 106.0.5249.119
    Firefox: 106.0.1
    Safari: 16.0
  npmPackages:
    @angular-devkit/build-angular: ~13.3.2 => 13.3.9 
    @angular/animations: ~13.3.2 => 13.3.11 
    @angular/animations/browser:  undefined ()
    @angular/animations/browser/testing:  undefined ()
    @angular/cdk: ~13.3.2 => 13.3.9 
    @angular/cdk/a11y:  undefined ()
    @angular/cdk/accordion:  undefined ()
    @angular/cdk/bidi:  undefined ()
    @angular/cdk/clipboard:  undefined ()
    @angular/cdk/coercion:  undefined ()
    @angular/cdk/collections:  undefined ()
    @angular/cdk/drag-drop:  undefined ()
    @angular/cdk/keycodes:  undefined ()
    @angular/cdk/layout:  undefined ()
    @angular/cdk/observers:  undefined ()
    @angular/cdk/overlay:  undefined ()
    @angular/cdk/platform:  undefined ()
    @angular/cdk/portal:  undefined ()
    @angular/cdk/scrolling:  undefined ()
    @angular/cdk/stepper:  undefined ()
    @angular/cdk/table:  undefined ()
    @angular/cdk/testing:  undefined ()
    @angular/cdk/testing/protractor:  undefined ()
    @angular/cdk/testing/selenium-webdriver:  undefined ()
    @angular/cdk/testing/testbed:  undefined ()
    @angular/cdk/text-field:  undefined ()
    @angular/cdk/tree:  undefined ()
    @angular/cli: ~13.3.2 => 13.3.9 
    @angular/common: ~13.3.2 => 13.3.11 
    @angular/common/http:  undefined ()
    @angular/common/http/testing:  undefined ()
    @angular/common/testing:  undefined ()
    @angular/common/upgrade:  undefined ()
    @angular/compiler: ~13.3.2 => 13.3.11 
    @angular/compiler-cli: ~13.3.2 => 13.3.11 
    @angular/compiler/testing:  undefined ()
    @angular/core: ~13.3.2 => 13.3.11 
    @angular/core/testing:  undefined ()
    @angular/forms: ~13.3.2 => 13.3.11 
    @angular/localize: ~13.3.2 => 13.3.11 
    @angular/localize/init:  undefined ()
    @angular/material: ~13.3.2 => 13.3.9 
    @angular/material/autocomplete:  undefined ()
    @angular/material/autocomplete/testing:  undefined ()
    @angular/material/badge:  undefined ()
    @angular/material/badge/testing:  undefined ()
    @angular/material/bottom-sheet:  undefined ()
    @angular/material/bottom-sheet/testing:  undefined ()
    @angular/material/button:  undefined ()
    @angular/material/button-toggle:  undefined ()
    @angular/material/button-toggle/testing:  undefined ()
    @angular/material/button/testing:  undefined ()
    @angular/material/card:  undefined ()
    @angular/material/card/testing:  undefined ()
    @angular/material/checkbox:  undefined ()
    @angular/material/checkbox/testing:  undefined ()
    @angular/material/chips:  undefined ()
    @angular/material/chips/testing:  undefined ()
    @angular/material/core:  undefined ()
    @angular/material/core/testing:  undefined ()
    @angular/material/datepicker:  undefined ()
    @angular/material/datepicker/testing:  undefined ()
    @angular/material/dialog:  undefined ()
    @angular/material/dialog/testing:  undefined ()
    @angular/material/divider:  undefined ()
    @angular/material/divider/testing:  undefined ()
    @angular/material/expansion:  undefined ()
    @angular/material/expansion/testing:  undefined ()
    @angular/material/form-field:  undefined ()
    @angular/material/form-field/testing:  undefined ()
    @angular/material/form-field/testing/control:  undefined ()
    @angular/material/grid-list:  undefined ()
    @angular/material/grid-list/testing:  undefined ()
    @angular/material/icon:  undefined ()
    @angular/material/icon/testing:  undefined ()
    @angular/material/input:  undefined ()
    @angular/material/input/testing:  undefined ()
    @angular/material/list:  undefined ()
    @angular/material/list/testing:  undefined ()
    @angular/material/menu:  undefined ()
    @angular/material/menu/testing:  undefined ()
    @angular/material/paginator:  undefined ()
    @angular/material/paginator/testing:  undefined ()
    @angular/material/progress-bar:  undefined ()
    @angular/material/progress-bar/testing:  undefined ()
    @angular/material/progress-spinner:  undefined ()
    @angular/material/progress-spinner/testing:  undefined ()
    @angular/material/radio:  undefined ()
    @angular/material/radio/testing:  undefined ()
    @angular/material/select:  undefined ()
    @angular/material/select/testing:  undefined ()
    @angular/material/sidenav:  undefined ()
    @angular/material/sidenav/testing:  undefined ()
    @angular/material/slide-toggle:  undefined ()
    @angular/material/slide-toggle/testing:  undefined ()
    @angular/material/slider:  undefined ()
    @angular/material/slider/testing:  undefined ()
    @angular/material/snack-bar:  undefined ()
    @angular/material/snack-bar/testing:  undefined ()
    @angular/material/sort:  undefined ()
    @angular/material/sort/testing:  undefined ()
    @angular/material/stepper:  undefined ()
    @angular/material/stepper/testing:  undefined ()
    @angular/material/table:  undefined ()
    @angular/material/table/testing:  undefined ()
    @angular/material/tabs:  undefined ()
    @angular/material/tabs/testing:  undefined ()
    @angular/material/toolbar:  undefined ()
    @angular/material/toolbar/testing:  undefined ()
    @angular/material/tooltip:  undefined ()
    @angular/material/tooltip/testing:  undefined ()
    @angular/material/tree:  undefined ()
    @angular/material/tree/testing:  undefined ()
    @angular/platform-browser: ~13.3.2 => 13.3.11 
    @angular/platform-browser-dynamic: ~13.3.2 => 13.3.11 
    @angular/platform-browser-dynamic/testing:  undefined ()
    @angular/platform-browser/animations:  undefined ()
    @angular/platform-browser/testing:  undefined ()
    @angular/router: ~13.3.2 => 13.3.11 
    @angular/router/testing:  undefined ()
    @angular/router/upgrade:  undefined ()
    @aws-amplify/ui-angular: ~2.4.24 => 2.4.24 
    @aws-amplify/ui-angular/legacy:  undefined ()
    @fontsource/inter: ~4.5.7 => 4.5.14 
    @fortawesome/fontawesome-free: ~6.1.1 => 6.1.2 
    @ng-bootstrap/ng-bootstrap: ~12.0.2 => 12.0.2 
    @ngrx/component-store: ~13.1.0 => 13.1.0 
    @ngx-translate/core: ~14.0.0 => 14.0.0 
    @ngx-translate/http-loader: ~7.0.0 => 7.0.0 
    @popperjs/core: ~2.11.5 => 2.11.6 
    @types/bootstrap: ~5.1.9 => 5.1.13 
    @types/jasmine: ~4.0.3 => 4.0.3 
    @types/node: ~16.11.7 => 16.11.66 
    @types/object-path: ~0.11.1 => 0.11.1 
    @types/prismjs: ~1.26.0 => 1.26.0 
    @types/uuid: ~8.3.4 => 8.3.4 
    ajv: ~8.11.0 => 8.11.0 (8.9.0, 6.12.6)
    animate.css: ~4.1.1 => 4.1.1 
    apexcharts: ~3.35.0 => 3.35.5 
    aws-amplify: ~4.3.39 => 4.3.39 
    bootstrap: ~5.1.3 => 5.1.3 
    bootstrap-icons: ~1.8.1 => 1.8.3 
    clipboard: ~2.0.10 => 2.0.11 
    cropperjs: ~1.5.12 => 1.5.12 
    date-fns: ~2.28.0 => 2.28.0 
    jasmine-core: ~4.1.0 => 4.1.1 (3.99.1)
    karma: ~6.3.18 => 6.3.20 
    karma-chrome-launcher: ~3.1.1 => 3.1.1 
    karma-coverage: ~2.2.0 => 2.2.0 
    karma-coverage-coffee-example:  1.0.0 
    karma-jasmine: ~4.0.2 => 4.0.2 
    karma-jasmine-html-reporter: ~1.7.0 => 1.7.0 
    line-awesome: ~1.3.0 => 1.3.0 
    ng-apexcharts: ~1.7.1 => 1.7.1 
    ng-inline-svg-2: ~14.0.1 => 14.0.2 
    ngx-clipboard: ~15.1.0 => 15.1.0 
    ngx-mask: ~13.1.9 => 13.1.15 
    ngx-toastr: ~14.2.4 => 14.2.4 
    ngx-uploader: ~11.0.0 => 11.0.0 
    nouislider: ~15.5.1 => 15.5.1 
    object-path: ~0.11.8 => 0.11.8 
    prism-themes: ~1.9.0 => 1.9.0 
    prismjs: ~1.27.0 => 1.27.0 
    rxjs: ~7.5.5 => 7.5.7 (6.6.7)
    rxjs/ajax:  undefined ()
    rxjs/fetch:  undefined ()
    rxjs/internal-compatibility:  undefined ()
    rxjs/operators:  undefined ()
    rxjs/testing:  undefined ()
    rxjs/webSocket:  undefined ()
    socicon: ~3.0.5 => 3.0.5 
    tslib: ~2.3.1 => 2.3.1 (1.14.1, 2.4.0)
    typescript: ~4.5.5 => 4.5.5 
    uuid: ~8.3.2 => 8.3.2 (3.4.0, 3.3.2)
    zone-mix:  undefined ()
    zone-node:  undefined ()
    zone-testing:  undefined ()
    zone.js: ~0.11.5 => 0.11.8 
    zone.js/async-stack-tagging:  undefined ()
    zone.js/async-stack-tagging.min:  undefined ()
    zone.js/async-test:  undefined ()
    zone.js/async-test.min:  undefined ()
    zone.js/fake-async-test:  undefined ()
    zone.js/fake-async-test.min:  undefined ()
    zone.js/jasmine-patch:  undefined ()
    zone.js/jasmine-patch.min:  undefined ()
    zone.js/long-stack-trace-zone:  undefined ()
    zone.js/long-stack-trace-zone.min:  undefined ()
    zone.js/mocha-patch:  undefined ()
    zone.js/mocha-patch.min:  undefined ()
    zone.js/proxy:  undefined ()
    zone.js/proxy.min:  undefined ()
    zone.js/sync-test:  undefined ()
    zone.js/sync-test.min:  undefined ()
    zone.js/task-tracking:  undefined ()
    zone.js/task-tracking.min:  undefined ()
    zone.js/webapis-media-query:  undefined ()
    zone.js/webapis-media-query.min:  undefined ()
    zone.js/webapis-notification:  undefined ()
    zone.js/webapis-notification.min:  undefined ()
    zone.js/webapis-rtc-peer-connection:  undefined ()
    zone.js/webapis-rtc-peer-connection.min:  undefined ()
    zone.js/webapis-shadydom:  undefined ()
    zone.js/webapis-shadydom.min:  undefined ()
    zone.js/wtf:  undefined ()
    zone.js/wtf.min:  undefined ()
    zone.js/zone-bluebird:  undefined ()
    zone.js/zone-bluebird.min:  undefined ()
    zone.js/zone-error:  undefined ()
    zone.js/zone-error.min:  undefined ()
    zone.js/zone-legacy:  undefined ()
    zone.js/zone-legacy.min:  undefined ()
    zone.js/zone-patch-canvas:  undefined ()
    zone.js/zone-patch-canvas.min:  undefined ()
    zone.js/zone-patch-cordova:  undefined ()
    zone.js/zone-patch-cordova.min:  undefined ()
    zone.js/zone-patch-electron:  undefined ()
    zone.js/zone-patch-electron.min:  undefined ()
    zone.js/zone-patch-fetch:  undefined ()
    zone.js/zone-patch-fetch.min:  undefined ()
    zone.js/zone-patch-jsonp:  undefined ()
    zone.js/zone-patch-jsonp.min:  undefined ()
    zone.js/zone-patch-message-port:  undefined ()
    zone.js/zone-patch-message-port.min:  undefined ()
    zone.js/zone-patch-promise-test:  undefined ()
    zone.js/zone-patch-promise-test.min:  undefined ()
    zone.js/zone-patch-resize-observer:  undefined ()
    zone.js/zone-patch-resize-observer.min:  undefined ()
    zone.js/zone-patch-rxjs:  undefined ()
    zone.js/zone-patch-rxjs-fake-async:  undefined ()
    zone.js/zone-patch-rxjs-fake-async.min:  undefined ()
    zone.js/zone-patch-rxjs.min:  undefined ()
    zone.js/zone-patch-socket-io:  undefined ()
    zone.js/zone-patch-socket-io.min:  undefined ()
    zone.js/zone-patch-user-media:  undefined ()
    zone.js/zone-patch-user-media.min:  undefined ()
  npmGlobalPackages:
    @angular/cli: 14.2.6
    @aws-amplify/cli: 10.2.3
    corepack: 0.14.1
    npm: 8.19.2



Describe the bug

I’m having a hard time to debug an issue. It works fine in Edge/Chrome/Firefox, but in Safari get tons of errors when trying to use DataStore.query(). Any suggestion will be super appreciated.

This might not be a bug in your library, but have no idea how can I get more meaningful information from the logs to pinpoint the problem.

See the screenshot on both browsers: image

Expected behavior

Both browsers should have the same behavior and query the data.

Reproduction steps

  1. npm install
  2. npm start
  3. navigate to a page that uses DataStore.query()
  4. works on Chrome/Edge/Firefox, fails in Safari, iOS and iPadOS browsers

Code Snippet

// Put your code below this line.
ngOnInit() {
    /**
     * Observe from the DataStore the states
     */
    this.store.patchState({isLoading: true});
    this.store.effect(() => zenToRx(DataStore.observeQuery(State)).pipe(
      filter(snapshot => snapshot.isSynced),
      map(snapshot => {
        this.store.patchState({
          isLoading: false,
          states: snapshot.items,
        });
      }),
    ));
  }

Log output

// Put your logs below this line
[Log] [DEBUG] 31:50.185 AuthClass - Getting current session (vendor.js, line 13071)
[Log] [DEBUG] 31:50.186 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083)
CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser
[Log] [DEBUG] 31:50.187 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083)
CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession
[Log] [DEBUG] 31:50.187 [MMB_APP_MODULE] - INIT - Auth session - is valid?  – true (vendor.js, line 13083)
[Log] [DEBUG] 31:50.188 [MMB_SERVICE] - Setting current user (vendor.js, line 13071)
[Log] [DEBUG] 31:50.188 AuthClass - getting current authenticated user (vendor.js, line 13071)
[Log] [DEBUG] 31:50.188 AuthClass - get current authenticated userpool user (vendor.js, line 13071)
[Log] [DEBUG] 31:50.190 [MMB_SERVICE] - Setting DataStore (vendor.js, line 13071)
[Log] [DEBUG] 31:50.191 [MMB_SERVICE] - Setting up Storage (vendor.js, line 13071)
[Log] [DEBUG] 31:50.191 Storage - storage configure called (vendor.js, line 13071)
[Log] [DEBUG] 31:50.191 StorageClass - configure Storage (vendor.js, line 13071)
[Log] [DEBUG] 31:50.191 Parser - parse config – [{level: "public"}, "to amplifyconfig", Object] (3) (vendor.js, line 13083)
[{level: "public"}, "to amplifyconfig", Object]Array (3)
[Log] [DEBUG] 31:50.191 AWSS3Provider - configure Storage – {bucket: "mmbmainbucket150042-staging", region: "us-east-1", dangerouslyConnectToHttpEndpointForTesting: undefined, …} (vendor.js, line 13083)
{bucket: "mmbmainbucket150042-staging", region: "us-east-1", dangerouslyConnectToHttpEndpointForTesting: undefined, level: "public"}Object
[Log] [DEBUG] 31:50.192 Parser - parse config – [Object, "to amplifyconfig", Object] (3) (vendor.js, line 13083)
[Object, "to amplifyconfig", Object]Array (3)
[Log] [DEBUG] 31:50.192 Storage - storage vault configure called (vendor.js, line 13071)
[Log] [DEBUG] 31:50.192 StorageClass - configure Storage (vendor.js, line 13071)
[Log] [DEBUG] 31:50.192 Parser - parse config – [Object, "to amplifyconfig", Object] (3) (vendor.js, line 13083)
[Object, "to amplifyconfig", Object]Array (3)
[Log] [DEBUG] 31:50.192 AWSS3Provider - configure Storage – {bucket: "mmbmainbucket150042-staging", region: "us-east-1", dangerouslyConnectToHttpEndpointForTesting: undefined, …} (vendor.js, line 13083)
{bucket: "mmbmainbucket150042-staging", region: "us-east-1", dangerouslyConnectToHttpEndpointForTesting: undefined, level: "private"}Object
[Log] [DEBUG] 31:50.192 Parser - parse config – [Object, "to amplifyconfig", Object] (3) (vendor.js, line 13083)
[Object, "to amplifyconfig", Object]Array (3)
[Log] [DEBUG] 31:50.193 [MMB_SERVICE] - Setting up Hub listeners... (vendor.js, line 13071)
[Log] Angular is running in development mode. Call enableProdMode() to enable production mode. (vendor.js, line 255648)
[Info] Successfully preconnected to https://fonts.gstatic.com/ (x2)
[Info] [webpack-dev-server] Live Reloading enabled. (polyfills.js, line 1935)
[Log] [INFO] 31:50.624 DataStore - validating schema – {schema: Object} (vendor.js, line 13083)
{schema: Object}Object
[Log] [INFO] 31:50.624 DataStore - DataStore – "Init models" (vendor.js, line 13083)
[Log] [INFO] 31:50.625 DataStore - DataStore – "Models initialized" (vendor.js, line 13083)
[Log] [DEBUG] 31:50.631 AuthClass - Getting current session (vendor.js, line 13071)
[Log] [DEBUG] 31:50.633 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083)
CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser
[Log] [DEBUG] 31:50.633 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083)
CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession
[Log] [DEBUG] 31:50.633 [MMB_AUTH_GUARD] - Auth Guard - [valid, guard, path, segments] – [true, "canActivate", "/misc/states", …] (4) (vendor.js, line 13083)
[true, "canActivate", "/misc/states", []]Array (4)
[Log] [DEBUG] 31:50.634 AuthClass - Getting current session (vendor.js, line 13071)
[Log] [DEBUG] 31:50.636 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083)
CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser
[Log] [DEBUG] 31:50.636 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083)
CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession
[Log] [DEBUG] 31:50.636 [MMB_AUTH_GUARD] - Auth Guard - [valid, guard, path, segments] – [true, "canActivateChild", "/misc/states", …] (4) (vendor.js, line 13083)
[true, "canActivateChild", "/misc/states", []]Array (4)
[Log] [DEBUG] 31:50.637 AuthClass - Getting current session (vendor.js, line 13071)
[Log] [DEBUG] 31:50.638 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083)
CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser
[Log] [DEBUG] 31:50.638 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083)
CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession
[Log] [DEBUG] 31:50.638 [MMB_AUTH_GUARD] - Auth Guard - [valid, guard, path, segments] – [true, "canActivateChild", "/misc/states", …] (4) (vendor.js, line 13083)
[true, "canActivateChild", "/misc/states", Array]Array (4)
[Log] [DEBUG] 31:50.639 AuthClass - Getting current session (vendor.js, line 13071)
[Log] [DEBUG] 31:50.640 AuthClass - Getting the session from this user: – CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, …} (vendor.js, line 13083)
CognitoUser {username: "ebeltran", pool: CognitoUserPool, Session: null, client: Client, signInUserSession: CognitoUserSession, …}CognitoUser
[Log] [DEBUG] 31:50.640 AuthClass - Succeed to get the user session – CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, …} (vendor.js, line 13083)
CognitoUserSession {idToken: CognitoIdToken, refreshToken: CognitoRefreshToken, accessToken: CognitoAccessToken, clockDrift: 0, getIdToken: function, …}CognitoUserSession
[Log] [DEBUG] 31:50.640 [MMB_AUTH_GUARD] - Auth Guard - [valid, guard, path, segments] – [true, "canActivateChild", "/misc/states", …] (4) (vendor.js, line 13083)
[true, "canActivateChild", "/misc/states", []]Array (4)
[Log] [DEBUG] 31:50.658 AuthClass - getting current authenticated user (vendor.js, line 13071)
[Log] [DEBUG] 31:50.696 AuthClass - get current authenticated userpool user (vendor.js, line 13071)
[Log] [DEBUG] 31:50.746 DataStore - Starting DataStore (vendor.js, line 13071)
[Log] [DEBUG] 31:50.747 DataStore - Starting Storage (vendor.js, line 13071)
[Log] [DEBUG] 31:51.366 DataStore - GraphQL endpoint available – "https://cey7ysjfijatzcdna2dtusztpu.appsync-api.us-east-1.amazonaws.com/graphql" (vendor.js, line 13083)
[Log] [INFO] 31:51.369 DataStore - starting sync engine... (vendor.js, line 13071)
[Warning] [WARN] 31:51.440 DataStore - Sync error – ConstraintError: A mutation operation in a transaction failed because a constraint was not satisfied. (vendor.js, line 13083)
ConstraintError: A mutation operation in a transaction failed because a constraint was not satisfied.
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – undefined
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runTask (polyfills.js:3312)
	invokeTask (polyfills.js:3618)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)
[Error] ERROR – Error: Uncaught (in promise): AbortError: AbortError
Error: Uncaught (in promise): AbortError: AbortError
	defaultErrorLogger (vendor.js:237194)
	handleError (vendor.js:237241)
	next (vendor.js:256874)
	next
	next (vendor.js:167882)
	_next (vendor.js:167851)
	next (vendor.js:167822)
	(anonymous function) (vendor.js:167667)
	errorContext (vendor.js:171613)
	next (vendor.js:167660)
	emit (vendor.js:253183)
	run (polyfills.js:3265)
	onHandleError (vendor.js:256334)
	runGuarded (polyfills.js:3278)
	(anonymous function) (polyfills.js:4203)
	drainMicroTaskQueue (polyfills.js:3723)
	invokeTask (polyfills.js:3622)
	invokeTask (polyfills.js:4792)
	globalCallback (polyfills.js:4823)

aws-exports.js

/* eslint-disable */
// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.

const awsmobile = {
    "aws_project_region": "us-east-1",
    "aws_cognito_identity_pool_id": "us-east-1:49220945-ae33-49ed-a3be-d827b9ef7d2b",
    "aws_cognito_region": "us-east-1",
    "aws_user_pools_id": "us-east-1_5WK7VsXvi",
    "aws_user_pools_web_client_id": "667h0ls44db5qcbnaabrib43c0",
    "oauth": {},
    "aws_cognito_username_attributes": [],
    "aws_cognito_social_providers": [],
    "aws_cognito_signup_attributes": [
        "EMAIL",
        "NAME",
        "PHONE_NUMBER"
    ],
    "aws_cognito_mfa_configuration": "OFF",
    "aws_cognito_mfa_types": [
        "SMS"
    ],
    "aws_cognito_password_protection_settings": {
        "passwordPolicyMinLength": "10",
        "passwordPolicyCharacters": [
            "REQUIRES_LOWERCASE",
            "REQUIRES_UPPERCASE",
            "REQUIRES_NUMBERS",
            "REQUIRES_SYMBOLS"
        ]
    },
    "aws_cognito_verification_mechanisms": [
        "EMAIL"
    ],
    "aws_appsync_graphqlEndpoint": "https://cey7ysjfijatzcdna2dtusztpu.appsync-api.us-east-1.amazonaws.com/graphql",
    "aws_appsync_region": "us-east-1",
    "aws_appsync_authenticationType": "AMAZON_COGNITO_USER_POOLS",
    "aws_user_files_s3_bucket": "mmbmainbucket150042-staging",
    "aws_user_files_s3_bucket_region": "us-east-1"
};


export default awsmobile;

Manual configuration

No response

Additional configuration

No response

Mobile Device

iPhone 14 Pro Max

Mobile Operating System

iOS 16

Mobile Browser

Safari, Edge

Mobile Browser Version

No response

Additional information and screenshots

No response

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 15 (4 by maintainers)

Most upvoted comments

We just released aws-amplify@4.3.40 that fixes this issue.

Hey @ebeltran1981 and everyone else 👋 thank you for reporting this issue. I have reproduced the issue in Safari and can confirm that I did not see this error when downgrading to aws-amplify@4.3.37 or below, which I suggest as a work around until we publish a fix soon.

Hey folks, we’ve got a PR up that addresses this issue: https://github.com/aws-amplify/amplify-js/pull/10527. We’re reviewing and testing the changes and will get a release out ASAP. We’ll keep you posted in this issue.

We’ll also be actively exploring options for end-to-end testing DataStore on Safari. Feel free to share any recommendations on testing frameworks/platforms that support Safari on desktop and/or mobile.

We reverted to 4.3.37 and it seems to work for this version. We might check 4.3.38, but this version probably contains the problem.

You are right, 4.3.37 is still on version 2. I had other issues with 4.3.33 that might be unrelated. Thanks.

By quickly glancing over the latest DataStore commits. I think this issue originated here, and was merged in release: 4.3.38. (IndexedDB version was incremented. v0.2 > v0.3).

+1 We are experiencing the same problem. Works on Chrome, but not on Safari and Brave (desktop)