Supported runtime features
The sections below describe the supported feature set of the APPSYNC_JS runtime.
Core features
The following core features are supported.
Types
The following types are supported:
-
numbers
-
strings
-
booleans
-
objects
-
arrays
-
functions
Operators
Operators are supported, including:
-
standard math operators (
+
,-
,/
,%
,*
, etc.) -
nullish coalescing operator (
??
) -
Optional chaining (
?.
) -
bitwise operators
-
void
andtypeof
operators
The following operators are not supported:
-
unary operators (
++
,--
, and~
) -
in
operatorNote
Use the
Object.hasOwn
operator to check if the specified property is in the specified object.
Statements
The following statements are supported:
-
const
-
let
-
var
-
break
-
else
-
for-in
-
for-of
-
if
-
return
-
switch
-
spread syntax
The following are not supported:
-
catch
-
continue
-
do-while
-
finally
-
for(initialization; condition; afterthought)
Note
The exceptions are
for-in
andfor-of
expressions, which are supported. -
throw
-
try
-
while
-
labeled statements
Literals
The following ES 6 template
literals
-
Multi-line strings
-
Expression interpolation
-
Nesting templates
Functions
The following function syntax is supported:
-
Function declarations are supported.
-
ES 6 arrow functions are supported.
-
ES 6 rest parameter syntax is supported.
Strict mode
Functions operate in strict mode by default, so you don’t need to add a use_strict
statement
in your function code. This cannot be changed.
Primitive objects
The following primitive objects of ES and their functions are supported.
Object
The following objects are supported:
-
Object.assign()
-
Object.entries()
-
Object.hasOwn()
-
Object.keys()
-
Object.values()
-
delete
String
The following strings are supported:
-
String.prototype.length()
-
String.prototype.charAt()
-
String.prototype.concat()
-
String.prototype.endsWith()
-
String.prototype.indexOf()
-
String.prototype.lastIndexOf()
-
String.raw()
-
String.prototype.replace()
Note
Regular expressions are not supported.
-
String.prototype.replaceAll()
Note
Regular expressions are not supported.
-
String.prototype.slice()
-
String.prototype.split()
-
String.prototype.startsWith()
-
String.prototype.toLowerCase()
-
String.prototype.toUpperCase()
-
String.prototype.trim()
-
String.prototype.trimEnd()
-
String.prototype.trimStart()
Number
The following numbers are supported:
-
Number.isFinite
-
Number.isNaN
Built-in objects and functions
The following functions and objects are supported.
Math
The following math functions are supported:
-
Math.random()
-
Math.min()
-
Math.max()
-
Math.round()
-
Math.floor()
-
Math.ceil()
Array
The following array methods are supported:
-
Array.prototype.length
-
Array.prototype.concat()
-
Array.prototype.fill()
-
Array.prototype.flat()
-
Array.prototype.indexOf()
-
Array.prototype.join()
-
Array.prototype.lastIndexOf()
-
Array.prototype.pop()
-
Array.prototype.push()
-
Array.prototype.reverse()
-
Array.prototype.shift()
-
Array.prototype.slice()
-
Array.prototype.sort()
Note
Array.prototype.sort()
doesn't support arguments. -
Array.prototype.splice()
-
Array.prototype.unshift()
-
Array.prototype.forEach()
-
Array.prototype.map()
-
Array.prototype.flatMap()
-
Array.prototype.filter()
-
Array.prototype.reduce()
-
Array.prototype.reduceRight()
-
Array.prototype.find()
-
Array.prototype.some()
-
Array.prototype.every()
-
Array.prototype.findIndex()
-
Array.prototype.findLast()
-
Array.prototype.findLastIndex()
-
delete
Console
The console object is available for debugging. During live query execution, console log/error statements
are sent to Amazon CloudWatch Logs (if logging is enabled). During code evaluation with evaluateCode
,
log statements are returned in the command response.
-
console.error()
-
console.log()
JSON
The following JSON methods are supported:
-
JSON.parse()
Note
Returns a blank string if the parsed string is not valid JSON.
-
JSON.stringify()
Function
-
The
apply
,bind
, andcall
methods not are supported. -
Function constructors are not supported.
-
Passing a function as an argument is not supported.
-
Recursive function calls are not supported.
Promises
Async processes are not supported, and promises are not supported.
Note
Network and file system access is not supported within the APPSYNC_JS
runtime in Amazon AppSync.
Amazon AppSync handles all I/O operations based on the requests made by the Amazon AppSync resolver or Amazon AppSync
function.
Globals
The following global constants are supported:
-
NaN
-
Infinity
-
undefined
Error types
Throwing errors with throw
is not supported. You can return an error by using
util.error()
function. You can include an error in your GraphQL response by using the
util.appendError
function.
For more information, see Error utils.