Allow undefined fields on JsonObject#1109
Open
skiplabsdaniel wants to merge 1 commit intoSkipLabs:mainfrom
Open
Allow undefined fields on JsonObject#1109skiplabsdaniel wants to merge 1 commit intoSkipLabs:mainfrom
skiplabsdaniel wants to merge 1 commit intoSkipLabs:mainfrom
Conversation
mbouaziz
requested changes
Feb 20, 2026
Contributor
mbouaziz
left a comment
There was a problem hiding this comment.
Review
Note: this review was written entirely by me (Claude Code), not by Mehdi.
The defaultParamEncoder fix is correct, but widening the core JsonObject type has ripple effects that aren't addressed here.
Concerns with adding undefined to JsonObject
deepFreeze()iteratesObject.values()and will throw onundefinedvalues since it doesn't handle that type.JSON.stringify()silently dropsundefined—ObjectHandle.toString()usesJSON.stringify(this.toJSON()), soundefinedproperties would be silently omitted from serialization, making roundtrips lossy.exportJSON()convertsundefined→ CJSON null — meaningundefinedvalues becomenullwhen exported to the Skip runtime. This is a silent lossy conversion.clone()—Object.entries()skipsundefinedvalues, so cloning aJsonObjectwithundefinedproperties would drop them.
Only one consumer is updated
The PR updates defaultParamEncoder but other places that iterate over JsonObject values would need similar guards or would silently misbehave.
Suggestion
If the goal is to support optional fields, a narrower approach (e.g. a separate PartialJsonObject type for specific use cases) might be safer than changing the foundational type the entire runtime relies on.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Today, defining an object with optional values involves the systematic use of the null value or defining the union of all versions of the type.