Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Navigation APIと見るSvelteKitのWeb標準志向
Search
Okuto Oyama
March 23, 2026
Technology
170
2
Share
Navigation APIと見るSvelteKitのWeb標準志向
Svelte Japan Offline Meetup #7
登壇資料
Okuto Oyama
March 23, 2026
More Decks by Okuto Oyama
See All by Okuto Oyama
Shifting from MCP to Skills / ベストプラクティスの変遷を辿る
yamanoku
5
1k
SchooでVue.js/Nuxtを技術選定している理由
yamanoku
4
8.7k
たかがボタン、されどボタン ~button要素から深ぼるボタンUIの定義について~ / BuriKaigi 2026
yamanoku
1
450
ひとりNavigation API Advent Calendarの紹介 / Mita.ts #9
yamanoku
1
180
DenoとJSRで実現する最速MCPサーバー開発記 / Building MCP Servers at Lightning Speed with Deno and JSR
yamanoku
2
650
転生したらTypeScriptのEnumだった件 ~型安全性とエコシステムの変化で挫けそうになっているんだが~ / TSKaigi 2025
yamanoku
0
70
React 18からのAPI useIDを使おう!/ Let's Use the useID API from React 18
yamanoku
0
170
リアクティブシステムの変遷から理解するalien-signals / Learning alien-signals from the evolution of reactive systems
yamanoku
3
2k
ブラウザ互換の重要性 - あらゆるユーザーに価値を届けるために必要なこと
yamanoku
0
390
Other Decks in Technology
See All in Technology
【禁断】Obsidianの第二の脳に「知の巨人」と呼ばれた師匠の脳をロードしてみた
nagatsu
0
2.1k
AsyncStreamでマルチブロードキャストを実装する
1mash0
1
180
AIのために、AIを使った、Effect-TSからの脱却 〜テストを活用した安全なリファクタリングの進め方〜
bitkey
PRO
1
190
ラズパイ & Picoで入門:Zephyr(RTOS)の環境構築からビルドまでの紹介
iotengineer22
0
150
AWSアップデートから考える継続的な運用改善
toru_kubota
2
320
なぜ、IAMロールのプリンシパルに*による部分マッチングが使えないのか? / 20260518-ssmjp-iam-role-principal
opelab
2
140
そのSLO 99.9%、本当に必要ですか? 〜優先度付きSLOによる責任共有の設計思想〜 / Is that 99.9% SLO really necessary? Design philosophy of shared responsibility through prioritized SLOs
vtryo
0
880
AI Agent に“攻略本”を渡したら、150フォームの移行が回り始めた話/登壇資料(高橋 悟生)
hacobu
PRO
1
250
Geek Woman の育ち方 〜コミュニティとAIと〜
chicaco
0
140
データ分析基盤の信頼を支える視点と設計
yuki_saito
0
130
Databricks 月刊サービスアップデートまとめ 2026年04月号
tyosi1212
0
140
業務に残された「良くない型」で考える「TypeScriptの難しさ」
sajikix
3
910
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Evolving SEO for Evolving Search Engines
ryanjones
0
200
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
150
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
210
Ethics towards AI in product and experience design
skipperchong
2
280
Between Models and Reality
mayunak
4
290
The Curious Case for Waylosing
cassininazir
1
350
Paper Plane
katiecoart
PRO
1
50k
So, you think you're a good person
axbom
PRO
2
2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Transcript
Svelte Japan Offline Meetup #7 2026/03/23 yamanoku Navigation APIと見る SvelteKitのWeb標準志向
yamanoku 一児の父・会社員 「お元気ですか.fm」パーソナリティ • My favorite things ◦ Web Standard
◦ アクセシビリティ ◦ 大型犬 ◦ 超かぐや姫! X (旧Twitter) | BlueSky | GitHub
SvelteKitのWeb標準志向
2025年のSvelteアドベントカレンダーに寄稿 https://zenn.dev/yamanoku/articles/svelte-advent-calender-2025
• React Router • Vue Router • SvelteKit • Astro
• FUNSTACK Router (uhyoさん作) ライブラリ・フレームワークの処理を調査
• 他のライブラリと違ってルーター用のコンポーネントがない • <Link>, <router-link>, <NuxtLink> などが存在しない • Web標準の<a>だけでルーティング処理を実現している より詳細な処理の内容はZenn記事を参照ください。
ちなみに、Astroも同様に<a>でルーティング処理を実現している。 SvelteKitでのSPA遷移を実現する要素
• 左クリック時やキー操作の場合は除外する • <a>での属性値やhrefでの値を元に処理の除外判定 • 同一ページにアンカーリンクがある場合のみスクロールさせる • すべてがページ遷移させる処理が発火する • 一部挙動はPage.jsを参考にしている
通常のリンク挙動を中断する処理
• Web標準志向なもので構築されていることを改めて知れた • Fetch APIs, FormData, Stream APIs, URL APIs,
Web Crypto… • 「車輪の再発明をするのではなくプラットフォームを扱う」 • Svelteでは新しいHTML要素のサポートも入っている SvelteKitのWeb標準志向
事例:Nuxtの場合における<a>と<NuxtLink>での扱い • <NuxtLink>にexternal propsを付与して外部リンクとして扱う • これは<a>でも同様に実現できるため判断に迷いがち SvelteKitでは<a>から書くことを起点にしているので迷わない。 実装の迷いを減らせることは有利
Conversely, time spent learning SvelteKit will help you be a
better web developer elsewhere. https://svelte.jp/docs/kit/web-standards
Navigation APIについて
• History APIに替わるページ遷移にまつわるWeb API • かつては「App History API」と呼ばれていた • Chrome
102よりフラグなしで使用可能(2022/5~) • Interop 2025にて対象に選出・標準化への取り組みが加速 Navigation APIとは何か
そもそもHistory APIでSPAを実装するには問題点が多かった • ユーザー操作でページの履歴が差し変わる • ブラウザによって一部動作の制約やバグがある • iframeがあることで履歴スタックを破壊してしまう 加えて、SPA特有のユーザー体験の問題もいくつか改善できないかも 検討されていた(スクロールの調整・アクセシビリティの問題)
なぜHistory APIに替わるものが出た?
History APIをハック的に扱わず、求めていた処理に近づく • 遷移処理をinterceptにて中断できるようになった • 履歴についても一意の状態を持てるようになった • SPAの画面遷移でスクリーンリーダーへの通知ができる • 画面遷移後のスクロールの位置調整がより容易になった
Navigation APIは何を解決してくれるの?
• ブラウザ制約の影響を受けずに実装できるようになった • これまでの処理自体をより軽量にできる ◦ ルーティングライブラリへの採用が期待できる これまでのルーティング処理も簡潔にできる
• TypeScript 6.0からWeb API等の型定義ファイルの見直し • その流れで型定義も最新の状態に追従している • Navigation APIは6.0より型が使用できるようになった ◦
5.9以前はDefinitelyTypedを使用しなければならなかった TypeScript 6.0から型が使用可能
• Navigation APIは2026年1月をもってBaseline Newly Availableへ • 最新のモダンブラウザであれば扱えるAPIになった • ただしSafari、Firefoxの2025年以前のブラウザでは使えない •
そのためプロダクションで使用するにしてもまだ Polyfillは必要 • Baseline Widely Availableとなるのは2028/07/13予定 じゃあNavigation APIは使ってもいい?
現時点では対応しないのをRich本人が明言している。 https://github.com/sveltejs/kit/issues/5277#issuecomment-4055076601 SvelteKitはNavigation APIに置き換えるか
🌶 IMHO 🌶
Navigation APIはHistory APIを代替しうる期待の存在。 ただ単体でこれが流行るかは正直怪しい。 • マイクロフロントエンドの共通ルーター部分 • 独自のクライアントサイドルーティングライブラリ それよりかは各ライブラリやフレームワークに 取り入れる方向が望ましいと考えている。
Navigation APIは流行るのか 🌶
再掲:Baseline Widely Availableになるのは2028/07/13 2年後まで待つのは遅すぎるのではないか? 【提案】実験的機能として提供していくのはどうだろうか • Angular 21.1からNavigation APIを実験的機能で扱える •
Vue Routerもモード切替できるように実装を進行中 安全に使えるまで待つのは遅い 🌶🌶
ここ数年フロントエンドはユーザー体験に関する新しい発明や どのようなものが良いかについて見かけなくなってきている。 Navigation APIやView TransitionsといったWeb APIや HTML・CSSの進化と共にMPA, SPAとは違った見せ方を考えたい。 Web標準志向のフレームワークだからこそ、 それが追求していけるのではないかと信じている。
単なるSPAからの脱却 🌶🌶🌶
• SvelteKitのSPAの仕組みはWeb標準技術を活用している • Navigation APIはSPAの挙動を改善しうるAPI • Navigation APIの本番投入が徐々に始まっている • SvelteKitは反映について静観の状態
• Web標準志向だからこそ導入して、より良い体験を考えたい まとめ
ひとりNavigation API Advent Calendar - yamaScrapbox