Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

fix: Capacitor WebView treats URLs with dots as file requests, breaking SPA routing and page reload. #8137

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
iamriajul wants to merge 2 commits into ionic-team:7.x
base: 7.x
Choose a base branch
Loading
from iamriajul:fix/configurable-spa-fallback-7x

Conversation

@iamriajul
Copy link

@iamriajul iamriajul commented Sep 2, 2025
edited
Loading

Adds a new configuration option routeWithFallback to CapacitorConfig.server that enables
fallback to index.html for routes containing dots when the requested file doesn't exist.

This solves the issue where SPA routes like /@user.name or /api/data.json are incorrectly
treated as file requests, returning 404 instead of serving index.html for client-side routing.

The feature is disabled by default to maintain backward compatibility. When enabled:

  • iOS: Checks if the file exists before serving, falls back to index.html if not found
  • Android: Catches IOException when file not found, serves index.html as fallback

Fixes #8085

iamriajul and others added 2 commits September 2, 2025 07:40
Adds a new configuration option `routeWithFallback` to CapacitorConfig.server that enables
fallback to index.html for routes containing dots when the requested file doesn't exist.
This solves the issue where SPA routes like /@user.name or /api/data.json are incorrectly
treated as file requests, returning 404 instead of serving index.html for client-side routing.
The feature is disabled by default to maintain backward compatibility. When enabled:
- iOS: Checks if the file exists before serving, falls back to index.html if not found
- Android: Catches IOException when file not found, serves index.html as fallback
Fixes ionic-team#8085
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The previous approach of checking file existence in the Router was causing
frame load interruptions. This moves the fallback logic to the WebViewAssetHandler's
error handling, similar to the Android implementation.
When a file with an extension fails to load and routeWithFallback is enabled,
we catch the error and serve index.html instead, allowing SPA routes to work properly.
Fixes iOS routing issues for URLs with dots like /@user.name
Copy link
Author

By setting config.server.routeWithFallback to true

I've verified the fix on Android:
Screenshot_1756794865

I've verified the fix on iOS:
simulator_screenshot_A2DA1918-F5BC-4927-8981-7E6BB38F4996

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

1 participant

AltStyle によって変換されたページ (->オリジナル) /