codify "platform" into resolution logic, server-fn/fullstack overhaul (#4596)

overhaul dioxus fullstack using a new implementation of server_fn

This PR is a complete rewrite of dioxus fullstack designed to improve compatibility with axum and to fix a number of compilation errors based on feature flag unification plumbing through macros.
This commit is contained in:
Jonathan Kelley authored and GitHub committed 2025-10-03 18:26:19 -07:00
1 parent 8421c3aef0
commit f2b1c6d97f
424 files changed
+17284 -6624

No files matched your search

+447 -143
View File
@@ -35,8 +35,9 @@ members = [
"packages/document",
"packages/extension",
"packages/fullstack",
"packages/fullstack-hooks",
"packages/fullstack-protocol",
"packages/fullstack-core",
"packages/fullstack-macro",
"packages/fullstack-server",
"packages/generational-box",
"packages/history",
"packages/hooks",
@@ -50,7 +51,6 @@ members = [
"packages/rsx-hotreload",
"packages/rsx-rosetta",
"packages/rsx",
"packages/server-macro",
"packages/signals",
"packages/stores",
"packages/stores-macro",
@@ -59,7 +59,6 @@ members = [
"packages/cli-config",
"packages/devtools",
"packages/devtools-types",
"packages/isrg",
"packages/rsx-hotreload",
"packages/const-serialize",
"packages/const-serialize-macro",
@@ -70,7 +69,9 @@ members = [
"packages/native-dom",
"packages/asset-resolver",
"packages/depinfo",
"packages/server",
# CLI harnesses, all included
"packages/cli-harnesses/*",
# Playwright tests
"packages/playwright-tests/liveview",
@@ -98,25 +99,27 @@ members = [
"packages/subsecond/subsecond-tests/cross-tls-test",
# Full project examples
"examples/fullstack-hackernews",
"examples/ecommerce-site",
"examples/bluetooth-scanner",
"examples/file-explorer",
"examples/hotdog",
"examples/01-app-demos/hackernews",
"examples/01-app-demos/ecommerce-site",
"examples/01-app-demos/bluetooth-scanner",
"examples/01-app-demos/file-explorer",
"examples/01-app-demos/hotdog",
# Simple examples that require a crate
"examples/tailwind",
"examples/pwa",
"examples/fullstack-hello-world",
"examples/fullstack-router",
"examples/fullstack-streaming",
"examples/fullstack-desktop",
"examples/fullstack-auth",
"examples/fullstack-websockets",
"examples/wgpu-texture",
"examples/native-headless",
"examples/native-headless-in-bevy",
"examples/bevy",
# Fullstack examples
"examples/07-fullstack/hello-world",
"examples/07-fullstack/router",
"examples/07-fullstack/desktop",
"examples/07-fullstack/auth",
"examples/07-fullstack/auth-with-fullstack",
"examples/07-fullstack/ssr-only",
# Integrations
"examples/10-integrations/tailwind",
"examples/10-integrations/pwa",
"examples/10-integrations/wgpu-texture",
"examples/10-integrations/native-headless",
"examples/10-integrations/native-headless-in-bevy",
"examples/10-integrations/bevy",
# Playwright tests
"packages/playwright-tests/liveview",
@@ -141,7 +144,6 @@ version = "0.7.0-rc.0"
# dependencies that are shared across packages
[workspace.dependencies]
dioxus = { path = "packages/dioxus", version = "0.7.0-rc.0" }
dioxus-lib = { path = "packages/dioxus-lib", version = "0.7.0-rc.0" }
dioxus-core = { path = "packages/core", version = "0.7.0-rc.0" }
dioxus-core-types = { path = "packages/core-types", version = "0.7.0-rc.0" }
dioxus-core-macro = { path = "packages/core-macro", version = "0.7.0-rc.0" }
@@ -154,10 +156,8 @@ dioxus-html = { path = "packages/html", version = "0.7.0-rc.0", default-features
dioxus-html-internal-macro = { path = "packages/html-internal-macro", version = "0.7.0-rc.0" }
dioxus-hooks = { path = "packages/hooks", version = "0.7.0-rc.0" }
dioxus-web = { path = "packages/web", version = "0.7.0-rc.0", default-features = false }
dioxus-isrg = { path = "packages/isrg", version = "0.7.0-rc.0" }
dioxus-ssr = { path = "packages/ssr", version = "0.7.0-rc.0", default-features = false }
dioxus-desktop = { path = "packages/desktop", version = "0.7.0-rc.0", default-features = false }
dioxus-mobile = { path = "packages/mobile", version = "0.7.0-rc.0" }
dioxus-interpreter-js = { path = "packages/interpreter", version = "0.7.0-rc.0" }
dioxus-liveview = { path = "packages/liveview", version = "0.7.0-rc.0" }
dioxus-autofmt = { path = "packages/autofmt", version = "0.7.0-rc.0" }
@@ -170,11 +170,10 @@ dioxus-stores = { path = "packages/stores", version = "0.7.0-rc.0" }
dioxus-stores-macro = { path = "packages/stores-macro", version = "0.7.0-rc.0" }
dioxus-devtools = { path = "packages/devtools", version = "0.7.0-rc.0" }
dioxus-devtools-types = { path = "packages/devtools-types", version = "0.7.0-rc.0" }
dioxus-server = { path = "packages/server", version = "0.7.0-rc.0" }
dioxus-fullstack = { path = "packages/fullstack", version = "0.7.0-rc.0" }
dioxus-fullstack-hooks = { path = "packages/fullstack-hooks", version = "0.7.0-rc.0" }
dioxus-fullstack-protocol = { path = "packages/fullstack-protocol", version = "0.7.0-rc.0" }
dioxus_server_macro = { path = "packages/server-macro", version = "0.7.0-rc.0", default-features = false }
dioxus-fullstack = { path = "packages/fullstack", version = "0.7.0-rc.0", default-features = false}
dioxus-fullstack-core = { path = "packages/fullstack-core", version = "0.7.0-rc.0", default-features = false}
dioxus-fullstack-macro = { path = "packages/fullstack-macro", version = "0.7.0-rc.0", default-features = false }
dioxus-server = { path = "packages/fullstack-server", version = "0.7.0-rc.0" }
dioxus-dx-wire-format = { path = "packages/dx-wire-format", version = "0.7.0-rc.0" }
dioxus-logger = { path = "packages/logger", version = "0.7.0-rc.0" }
dioxus-native = { path = "packages/native", version = "0.7.0-rc.0" }
@@ -207,7 +206,6 @@ manganis-macro = { path = "packages/manganis/manganis-macro", version = "0.7.0-r
wasm-splitter = { path = "packages/wasm-split/wasm-split", version = "0.7.0-rc.0" }
wasm-split-macro = { path = "packages/wasm-split/wasm-split-macro", version = "0.7.0-rc.0" }
wasm-split-cli = { path = "packages/wasm-split/wasm-split-cli", version = "0.7.0-rc.0" }
wasm-split-harness = { path = "packages/playwright-tests/wasm-split-harness", version = "0.7.0-rc.0" }
wasm-used = { path = "packages/wasm-split/wasm-used", version = "0.7.0-rc.0" }
depinfo = { path = "packages/depinfo", version = "0.7.0-rc.0" }
@@ -257,8 +255,7 @@ lru = "0.16.0"
async-trait = "0.1.88"
axum = { version = "0.8.4", default-features = false }
axum-server = { version = "0.7.2", default-features = false }
server_fn = { version = "=0.8.3", default-features = false }
server_fn_macro = { version = "=0.8.3" }
http-body = { version = "1.0"}
tower = "0.5.2"
http = "1.3.1"
notify = { version = "8.1.0" }
@@ -277,12 +274,13 @@ serde_json = "1.0.140"
serde = "1.0.219"
syn = "2.0"
quote = "1.0"
axum-core = "0.5"
proc-macro2 = "1.0.101"
axum_session = "0.16.0"
axum_session_auth = "0.16.0"
axum_session_sqlx = "0.5.0"
axum-extra = "0.10.1"
reqwest = "0.12.22"
reqwest = { version = "0.12.23", default-features = false }
owo-colors = "4.2.2"
ciborium = "0.2.2"
base64 = "0.22.1"
@@ -291,13 +289,10 @@ convert_case = "0.8.0"
tungstenite = { version = "0.27.0" }
tokio-tungstenite = { version = "0.27.0" }
gloo-timers = "0.3.0"
fluent-uri = { version = "0.3.2", features = ["serde"] }
internment = { version = "0.8.6" }
proc-macro2-diagnostics = { version = "0.10", default-features = false }
env_logger = "0.11.8"
chrono = { version = "0.4.39" }
gloo = { version = "0.11.0" }
gloo-utils = { version = "0.2.0" }
rustversion = "1.0.21"
rand = "0.9"
longest-increasing-subsequence = "0.1.0"
@@ -320,7 +315,6 @@ rayon = "1.10.0"
wasmparser = "0.235.0"
itertools = "0.14.0"
object = { version = "0.37.1" }
bincode = "1.3.3"
inventory = { version = "0.3" }
macro-string = "0.1.4"
walkdir = "2.5.0"
@@ -334,6 +328,16 @@ libloading = "0.8.8"
libc = "0.2.174"
memmap2 = "0.9.5"
memfd = "0.6.4"
xxhash-rust = {version = "0.8.15", default-features = false}
serde_qs = "0.15.0"
multer = "3.1.0"
const-str = "0.7.0"
bytes = "1.10"
send_wrapper = "0.6.0"
pin-project = { version = "1.1.10" }
postcard = { version = "1.1.3", default-features = false }
serde_urlencoded = "0.7"
form_urlencoded = "1.2.1"
# desktop
wry = { version = "0.52.1", default-features = false }
@@ -341,13 +345,7 @@ tao = { version = "0.34.0", features = ["rwh_05"] }
infer = "0.19.0"
dunce = "1.0.5"
percent-encoding = "2.3.1"
global-hotkey = "0.7.0"
rfd = { version = "0.15.3", default-features = false }
muda = "0.17.0"
cocoa = "0.26"
core-foundation = "0.10.1"
objc = { version = "0.2.7", features = ["exception"] }
objc_id = "0.1.1"
tray-icon = "0.21.0"
open = "5.3.2"
webbrowser = "1.0"
@@ -362,14 +360,11 @@ path-absolutize = "3.1"
crossterm = { version = "0.29.0" }
ratatui = { version = "0.29.0" }
shell-words = "1.1.0"
color-eyre = "0.6.5"
# native
keyboard-types = { version = "0.7", default-features = false }
winit = { version = "0.30.11", features = ["rwh_06"] }
[profile.dev]
# our release profile should be fast to compile and fast to run
# when we ship our CI builds, we turn on LTO which improves perf leftover by turning on incremental
[profile.release]
@@ -419,28 +414,40 @@ inherits = "dev"
[package]
name = "dioxus-examples"
authors = ["Jonathan Kelley"]
edition = "2021"
edition = "2024"
description = "Top level crate for the Dioxus repository"
license = "MIT OR Apache-2.0"
repository = "https://github.com/DioxusLabs/dioxus/"
homepage = "https://dioxuslabs.com"
documentation = "https://dioxuslabs.com"
keywords = ["dom", "ui", "gui", "react", "wasm"]
rust-version = "1.80.0"
rust-version = "1.85.0"
publish = false
version = "0.7.0-rc.0"
[dependencies]
reqwest = { workspace = true, features = ["json"], optional = true }
reqwest = { workspace = true, features = ["json"] }
ciborium = { workspace = true, optional = true }
base64 = { workspace = true, optional = true }
http-range = { version = "0.1.5", optional = true }
http-range = { version = "0.1.5" }
wgpu = { workspace = true, optional = true }
ouroboros = { version = "*", optional = true }
wasm-splitter = { workspace = true, package = "wasm-split" }
wasm-splitter = { workspace = true }
sqlx = { version = "0.8.6", features = [
"macros",
"migrate",
"postgres",
"sqlite",
"_unstable-all-types",
"tls-native-tls",
"runtime-tokio",
], optional = true }
wasm-streams = "0.4.2"
[dev-dependencies]
dioxus = { workspace = true, features = ["router"] }
dioxus = { workspace = true, features = ["router", "fullstack"] }
dioxus-html = { workspace = true, features = ["serialize"] }
dioxus-stores = { workspace = true }
dioxus-ssr = { workspace = true }
futures-util = { workspace = true }
@@ -451,10 +458,17 @@ rand = { workspace = true, features = ["small_rng"] }
form_urlencoded = "1.2.1"
async-std = "1.13.1"
web-time = "1.1.0"
anyhow = { workspace = true }
thiserror = { workspace = true }
bytes = { workspace = true }
futures = { workspace = true }
axum-core = { workspace = true }
uuid = { workspace = true, features = ["v4", "serde"] }
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
getrandom = { workspace = true, features = ["wasm_js"] }
tokio = { version = "1.46", default-features = false, features = ["sync", "macros", "io-util", "rt", "time"] }
uuid = { workspace = true, features = ["v4", "serde", "js"] }
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
tokio = { version = "1.46", features = ["full"] }
@@ -466,161 +480,451 @@ default = ["desktop"]
desktop = ["dioxus/desktop"]
native = ["dioxus/native"]
liveview = ["dioxus/liveview"]
fullstack = ["dioxus/fullstack"]
server = ["dioxus/server"]
mobile = ["dioxus/mobile"]
web = ["dioxus/web"]
http = ["dep:reqwest", "dep:http-range"]
gpu = ["dep:ouroboros", "dep:wgpu"]
[[example]]
name = "login_form"
required-features = ["http"]
doc-scrape-examples = true
[[example]]
name = "dog_app"
required-features = ["http"]
doc-scrape-examples = true
[[example]]
name = "video_stream"
required-features = ["http", "desktop"]
doc-scrape-examples = true
[[example]]
name = "suspense"
required-features = ["http", "desktop"]
name = "websocket_chat"
path = "examples/01-app-demos/websocket_chat.rs"
doc-scrape-examples = true
[[example]]
name = "weather_app"
required-features = ["http"]
path = "examples/01-app-demos/weather_app.rs"
doc-scrape-examples = true
[[example]]
name = "crm"
path = "examples/01-app-demos/crm.rs"
doc-scrape-examples = true
[[example]]
name = "image_generator_openai"
required-features = ["http"]
path = "examples/01-app-demos/image_generator_openai.rs"
doc-scrape-examples = true
[[example]]
name = "todomvc"
path = "examples/01-app-demos/todomvc.rs"
doc-scrape-examples = true
[[example]]
name = "calculator_mutable"
path = "examples/01-app-demos/calculator_mutable.rs"
doc-scrape-examples = true
[[example]]
name = "hello_world"
path = "examples/01-app-demos/hello_world.rs"
doc-scrape-examples = true
[[example]]
name = "counters"
path = "examples/01-app-demos/counters.rs"
doc-scrape-examples = true
[[example]]
name = "todomvc_store"
path = "examples/01-app-demos/todomvc_store.rs"
doc-scrape-examples = true
[[example]]
name = "dog_app"
path = "examples/01-app-demos/dog_app.rs"
doc-scrape-examples = true
[[example]]
name = "calculator"
path = "examples/01-app-demos/calculator.rs"
doc-scrape-examples = true
[[example]]
name = "repo_readme"
path = "examples/01-app-demos/repo_readme.rs"
doc-scrape-examples = true
[[example]]
name = "nested_listeners"
path = "examples/02-building-ui/nested_listeners.rs"
doc-scrape-examples = true
[[example]]
name = "disabled"
path = "examples/02-building-ui/disabled.rs"
doc-scrape-examples = true
[[example]]
name = "svg"
path = "examples/02-building-ui/svg.rs"
doc-scrape-examples = true
[[example]]
name = "custom_assets"
path = "examples/03-assets-styling/custom_assets.rs"
doc-scrape-examples = true
[[example]]
name = "dynamic_assets"
path = "examples/03-assets-styling/dynamic_assets.rs"
doc-scrape-examples = true
[[example]]
name = "meta"
path = "examples/03-assets-styling/meta.rs"
doc-scrape-examples = true
[[example]]
name = "meta_elements"
path = "examples/03-assets-styling/meta_elements.rs"
doc-scrape-examples = true
[[example]]
name = "reducer"
path = "examples/04-managing-state/reducer.rs"
doc-scrape-examples = true
[[example]]
name = "memo_chain"
path = "examples/04-managing-state/memo_chain.rs"
doc-scrape-examples = true
[[example]]
name = "global"
path = "examples/04-managing-state/global.rs"
doc-scrape-examples = true
[[example]]
name = "context_api"
path = "examples/04-managing-state/context_api.rs"
doc-scrape-examples = true
[[example]]
name = "signals"
path = "examples/04-managing-state/signals.rs"
doc-scrape-examples = true
[[example]]
name = "errors"
path = "examples/04-managing-state/error_handling.rs"
doc-scrape-examples = true
[[example]]
name = "backgrounded_futures"
path = "examples/05-using-async/backgrounded_futures.rs"
doc-scrape-examples = true
[[example]]
name = "clock"
path = "examples/05-using-async/clock.rs"
doc-scrape-examples = true
[[example]]
name = "streams"
path = "examples/05-using-async/streams.rs"
doc-scrape-examples = true
[[example]]
name = "suspense"
path = "examples/05-using-async/suspense.rs"
doc-scrape-examples = true
[[example]]
name = "future"
path = "examples/05-using-async/future.rs"
doc-scrape-examples = true
[[example]]
name = "simple_router"
path = "examples/06-routing/simple_router.rs"
doc-scrape-examples = true
[[example]]
name = "router_restore_scroll"
path = "examples/06-routing/router_restore_scroll.rs"
doc-scrape-examples = true
[[example]]
name = "link"
path = "examples/06-routing/link.rs"
doc-scrape-examples = true
[[example]]
name = "hash_fragment_state"
required-features = ["ciborium", "base64"]
path = "examples/06-routing/hash_fragment_state.rs"
doc-scrape-examples = true
[[example]]
name = "backgrounded_futures"
required-features = ["desktop"]
name = "router"
path = "examples/06-routing/router.rs"
doc-scrape-examples = true
[[example]]
name = "calculator_mutable"
required-features = ["desktop"]
name = "router_resource"
path = "examples/06-routing/router_resource.rs"
doc-scrape-examples = true
[[example]]
name = "calculator"
required-features = ["desktop"]
name = "query_segment_search"
path = "examples/06-routing/query_segment_search.rs"
doc-scrape-examples = true
[[example]]
name = "clock"
name = "flat_router"
path = "examples/06-routing/flat_router.rs"
doc-scrape-examples = true
[[example]]
name = "crm"
name = "header_map"
path = "examples/07-fullstack/header_map.rs"
doc-scrape-examples = true
[[example]]
name = "login_form"
path = "examples/07-fullstack/login_form.rs"
doc-scrape-examples = true
[[example]]
name = "handling_errors"
path = "examples/07-fullstack/handling_errors.rs"
doc-scrape-examples = true
[[example]]
name = "dog_app_self_hosted"
path = "examples/07-fullstack/dog_app_self_hosted.rs"
doc-scrape-examples = true
[[example]]
name = "through_reqwest"
path = "examples/07-fullstack/through_reqwest.rs"
doc-scrape-examples = true
[[example]]
name = "streaming_file_upload"
path = "examples/07-fullstack/streaming_file_upload.rs"
doc-scrape-examples = true
[[example]]
name = "multipart_form"
path = "examples/07-fullstack/multipart_form.rs"
doc-scrape-examples = true
[[example]]
name = "full_request_access"
path = "examples/07-fullstack/full_request_access.rs"
doc-scrape-examples = true
[[example]]
name = "fullstack_hello_world"
path = "examples/07-fullstack/fullstack_hello_world.rs"
doc-scrape-examples = true
[[example]]
name = "server_sent_events"
path = "examples/07-fullstack/server_sent_events.rs"
doc-scrape-examples = true
[[example]]
name = "server_state"
path = "examples/07-fullstack/server_state.rs"
doc-scrape-examples = true
required-features = ["sqlx"]
[[example]]
name = "streaming"
path = "examples/07-fullstack/streaming.rs"
doc-scrape-examples = true
[[example]]
name = "custom_axum_serve"
path = "examples/07-fullstack/custom_axum_serve.rs"
doc-scrape-examples = true
[[example]]
name = "websocket"
path = "examples/07-fullstack/websocket.rs"
doc-scrape-examples = true
[[example]]
name = "control_focus"
path = "examples/08-apis/control_focus.rs"
doc-scrape-examples = true
[[example]]
name = "window_popup"
required-features = ["desktop"]
path = "examples/08-apis/window_popup.rs"
doc-scrape-examples = true
[[example]]
name = "custom_html"
required-features = ["desktop"]
path = "examples/08-apis/custom_html.rs"
doc-scrape-examples = true
[[example]]
name = "custom_menu"
name = "multiwindow_with_tray_icon"
required-features = ["desktop"]
doc-scrape-examples = true
[[example]]
name = "dynamic_asset"
required-features = ["desktop"]
doc-scrape-examples = true
[[example]]
name = "errors"
required-features = ["desktop"]
doc-scrape-examples = true
[[example]]
name = "future"
doc-scrape-examples = true
[[example]]
name = "hydration"
required-features = ["desktop"]
doc-scrape-examples = true
[[example]]
name = "multiwindow"
required-features = ["desktop"]
doc-scrape-examples = true
[[example]]
name = "overlay"
required-features = ["desktop"]
doc-scrape-examples = true
[[example]]
name = "popup"
required-features = ["desktop"]
doc-scrape-examples = true
[[example]]
name = "read_size"
required-features = ["desktop"]
doc-scrape-examples = true
[[example]]
name = "shortcut"
required-features = ["desktop"]
doc-scrape-examples = true
[[example]]
name = "streams"
doc-scrape-examples = true
[[example]]
name = "visible"
path = "examples/08-apis/multiwindow_with_tray_icon.rs"
doc-scrape-examples = true
[[example]]
name = "window_event"
required-features = ["desktop"]
path = "examples/08-apis/window_event.rs"
doc-scrape-examples = true
[[example]]
name = "read_size"
path = "examples/08-apis/read_size.rs"
doc-scrape-examples = true
[[example]]
name = "logging"
path = "examples/08-apis/logging.rs"
doc-scrape-examples = true
[[example]]
name = "overlay"
required-features = ["desktop"]
path = "examples/08-apis/overlay.rs"
doc-scrape-examples = true
[[example]]
name = "ssr"
path = "examples/08-apis/ssr.rs"
doc-scrape-examples = true
[[example]]
name = "video_stream"
required-features = ["desktop"]
path = "examples/08-apis/video_stream.rs"
doc-scrape-examples = true
[[example]]
name = "title"
path = "examples/08-apis/title.rs"
doc-scrape-examples = true
[[example]]
name = "file_upload"
path = "examples/08-apis/file_upload.rs"
doc-scrape-examples = true
[[example]]
name = "window_focus"
required-features = ["desktop"]
path = "examples/08-apis/window_focus.rs"
doc-scrape-examples = true
[[example]]
name = "eval"
path = "examples/08-apis/eval.rs"
doc-scrape-examples = true
[[example]]
name = "shortcut"
required-features = ["desktop"]
path = "examples/08-apis/shortcut.rs"
doc-scrape-examples = true
[[example]]
name = "scroll_to_offset"
path = "examples/08-apis/scroll_to_offset.rs"
doc-scrape-examples = true
[[example]]
name = "scroll_to_top"
path = "examples/08-apis/scroll_to_top.rs"
doc-scrape-examples = true
[[example]]
name = "wgpu_child_window"
path = "examples/08-apis/wgpu_child_window.rs"
required-features = ["gpu", "desktop"]
doc-scrape-examples = true
[[example]]
name = "multiwindow"
required-features = ["desktop"]
path = "examples/08-apis/multiwindow.rs"
doc-scrape-examples = true
[[example]]
name = "window_zoom"
required-features = ["desktop"]
path = "examples/08-apis/window_zoom.rs"
doc-scrape-examples = true
[[example]]
name = "wgpu_child_window"
required-features = ["desktop", "gpu"]
[[example]]
name = "control_focus"
name = "custom_menu"
required-features = ["desktop"]
path = "examples/08-apis/custom_menu.rs"
doc-scrape-examples = true
[[example]]
name = "eval"
name = "on_resize"
path = "examples/08-apis/on_resize.rs"
doc-scrape-examples = true
[[example]]
name = "logging"
name = "form"
path = "examples/08-apis/form.rs"
doc-scrape-examples = true
[[example]]
name = "on_visible"
path = "examples/08-apis/on_visible.rs"
doc-scrape-examples = true
[[example]]
name = "all_events"
path = "examples/09-reference/all_events.rs"
doc-scrape-examples = true
[[example]]
name = "xss_safety"
path = "examples/09-reference/xss_safety.rs"
doc-scrape-examples = true
[[example]]
name = "web_component"
path = "examples/09-reference/web_component.rs"
doc-scrape-examples = true
[[example]]
name = "generic_component"
path = "examples/09-reference/generic_component.rs"
doc-scrape-examples = true
[[example]]
name = "shorthand"
path = "examples/09-reference/shorthand.rs"
doc-scrape-examples = true
[[example]]
name = "simple_list"
path = "examples/09-reference/simple_list.rs"
doc-scrape-examples = true
[[example]]
name = "optional_props"
path = "examples/09-reference/optional_props.rs"
doc-scrape-examples = true
[[example]]
name = "rsx_usage"
path = "examples/09-reference/rsx_usage.rs"
doc-scrape-examples = true
[[example]]
name = "spread"
path = "examples/09-reference/spread.rs"
doc-scrape-examples = true
[[example]]
name = "__scrape_example_list"
path = "examples/scripts/scrape_examples.rs"