fix: prevent explicit undefined values from overwriting visit defaults (#3018)#3019
Open
Vitalcheffe wants to merge 1 commit intoinertiajs:3.xfrom
Open
fix: prevent explicit undefined values from overwriting visit defaults (#3018)#3019Vitalcheffe wants to merge 1 commit intoinertiajs:3.xfrom
Vitalcheffe wants to merge 1 commit intoinertiajs:3.xfrom
Conversation
When visit options contain explicit undefined values (e.g. { only: undefined }),
the spread operator overwrites the default [] with undefined, causing a runtime
crash on .length access. This happens when options are built dynamically with
conditional spreads or wrapper functions that may pass through undefined.
Added stripUndefined helper that removes undefined keys before spreading,
ensuring defaults are preserved. This matches the expected behavior where
router.visit('/url', { only: undefined }) should behave the same as
router.visit('/url', {}).
Fixes inertiajs#3018
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.
Problem
When visit options contain explicit
undefinedvalues (e.g.{ only: undefined }), the spread operator overwrites the default[]withundefined, causing a runtime crash:This happens when options are built dynamically with conditional spreads or wrapper functions that pass through undefined. TypeScript's
Partial<Visit>allows this without error.Reproduction
Fix
Added a
stripUndefinedhelper that removes keys withundefinedvalues fromoptionsandconfiguredOptionsbefore they're spread intomergedOptions. This ensures defaults (only: [],except: [],reset: []) are preserved.This is a minimal, surgical fix — 12 lines added, no behavior changes for correctly-formed options.
Fixes #3018