diff --git a/javascript/extractor/src/com/semmle/js/ast/DeclarationFlags.java b/javascript/extractor/src/com/semmle/js/ast/DeclarationFlags.java
index 7ff1e12ee65..ed4fec4f49e 100644
--- a/javascript/extractor/src/com/semmle/js/ast/DeclarationFlags.java
+++ b/javascript/extractor/src/com/semmle/js/ast/DeclarationFlags.java
@@ -44,7 +44,7 @@ public class DeclarationFlags {
"has_public_keyword",
"has_private_keyword",
"has_protected_keyword",
- "isOptionalMember",
+ "is_optional_member",
"hasDefiniteAssignmentAssertion",
"has_declare_keyword");
diff --git a/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap b/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap
index 243a468d637..c04e8462a40 100644
--- a/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap
+++ b/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap
@@ -1124,7 +1124,7 @@ enclosing_stmt(#20366,#20359)
expr_containers(#20366,#20265)
literals("a","a",#20366)
is_abstract_member(#20364)
-isOptionalMember(#20364)
+is_optional_member(#20364)
#20367=*
typeexprs(#20367,2,#20364,2,"string")
hasLocation(#20367,#20239)
diff --git a/javascript/ql/src/semmle/javascript/Aliases.qll b/javascript/ql/src/semmle/javascript/Aliases.qll
index 75e3cfb1d46..54a1480712e 100644
--- a/javascript/ql/src/semmle/javascript/Aliases.qll
+++ b/javascript/ql/src/semmle/javascript/Aliases.qll
@@ -195,3 +195,8 @@ deprecated predicate hasReadonlyKeyword(Property prop) { has_readonly_keyword(pr
* Use the `isTypeOnly` method on the `ImportDeclaration`/`ExportDeclaration` classes instead.
*/
deprecated predicate hasTypeKeyword(ASTNode id) { has_type_keyword(id) }
+/**
+ * Alias for the predicate `is_optional_member` defined in the .dbscheme.
+ * Use `FieldDeclaration#isOptional()` instead.
+ */
+deprecated predicate isOptionalMember(Property id) { is_optional_member(id) }
diff --git a/javascript/ql/src/semmle/javascript/Classes.qll b/javascript/ql/src/semmle/javascript/Classes.qll
index af0b4a07e2a..2153ce22fb9 100644
--- a/javascript/ql/src/semmle/javascript/Classes.qll
+++ b/javascript/ql/src/semmle/javascript/Classes.qll
@@ -1043,7 +1043,7 @@ class FieldDeclaration extends MemberDeclaration, @field {
predicate isReadonly() { has_readonly_keyword(this) }
/** Holds if this is a TypeScript field marked as optional with the `?` operator. */
- predicate isOptional() { isOptionalMember(this) }
+ predicate isOptional() { is_optional_member(this) }
/** Holds if this is a TypeScript field marked as definitely assigned with the `!` operator. */
predicate hasDefiniteAssignmentAssertion() { hasDefiniteAssignmentAssertion(this) }
diff --git a/javascript/ql/src/semmlecode.javascript.dbscheme b/javascript/ql/src/semmlecode.javascript.dbscheme
index 9829862412b..becfc296e47 100644
--- a/javascript/ql/src/semmlecode.javascript.dbscheme
+++ b/javascript/ql/src/semmlecode.javascript.dbscheme
@@ -525,7 +525,7 @@ has_private_keyword (int id: @property ref);
has_protected_keyword (int id: @property ref);
has_readonly_keyword (int id: @property ref);
has_type_keyword (int id: @import_or_export_declaration ref);
-isOptionalMember (int id: @property ref);
+is_optional_member (int id: @property ref);
hasDefiniteAssignmentAssertion (int id: @field_or_vardeclarator ref);
isOptionalParameterDeclaration (unique int parameter: @pattern ref);
diff --git a/javascript/ql/src/semmlecode.javascript.dbscheme.stats b/javascript/ql/src/semmlecode.javascript.dbscheme.stats
index a5d72ee29dc..3897d512c11 100644
--- a/javascript/ql/src/semmlecode.javascript.dbscheme.stats
+++ b/javascript/ql/src/semmlecode.javascript.dbscheme.stats
@@ -8007,7 +8007,7 @@
-isOptionalMember
+is_optional_member
3668
diff --git a/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties b/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties
index cdd0b40e5bb..d18b3b2c300 100644
--- a/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties
+++ b/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties
@@ -52,3 +52,5 @@ has_readonly_keyword.rel: reorder hasReadonlyKeyword.rel(int prop) prop
hasReadonlyKeyword.rel: delete
has_type_keyword.rel: reorder hasTypeKeyword.rel(int id) id
hasTypeKeyword.rel: delete
+is_optional_member.rel: reorder isOptionalMember.rel(int id) id
+isOptionalMember.rel: delete