Repository: leptos-rs/leptos Branch: main Commit: 9f30d5eb2b3d Files: 1358 Total size: 4.6 MB Directory structure: gitextract_0avvtdt6/ ├── .config/ │ └── nextest.toml ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ ├── dependabot.yml │ └── workflows/ │ ├── autofix.yml │ ├── ci.yml │ ├── get-example-changed.yml │ ├── get-examples-matrix.yml │ ├── get-leptos-changed.yml │ ├── get-leptos-matrix.yml │ ├── publish-book.yml │ └── run-cargo-make-task.yml ├── .gitignore ├── ARCHITECTURE.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Cargo.toml ├── LICENSE ├── Makefile.toml ├── README.md ├── SECURITY.md ├── TODO.md ├── any_error/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ └── src/ │ └── lib.rs ├── any_spawner/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ ├── src/ │ │ └── lib.rs │ └── tests/ │ ├── already_set_error.rs │ ├── async_executor.rs │ ├── custom_executor.rs │ ├── custom_runtime.rs │ ├── executor_tick.rs │ ├── futures_executor.rs │ ├── futures_runtime.rs │ ├── glib.rs │ ├── local_custom_executor.rs │ ├── multiple_tasks.rs │ ├── tokio_executor.rs │ └── wasm_bindgen_tests.rs ├── benchmarks/ │ ├── Cargo.toml │ └── src/ │ ├── lib.rs │ ├── reactive.rs │ ├── ssr.rs │ └── todomvc/ │ ├── leptos.rs │ ├── mod.rs │ ├── sycamore.rs │ ├── tachys.rs │ ├── tera.rs │ └── yew.rs ├── cargo-make/ │ ├── check-minimal-versions.toml │ ├── lint.toml │ ├── main.toml │ ├── test.toml │ └── wasm-test.toml ├── const_str_slice_concat/ │ ├── Cargo.toml │ ├── Makefile.toml │ └── src/ │ └── lib.rs ├── docs/ │ ├── COMMON_BUGS.md │ ├── book_ru/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── book.toml │ │ ├── mdbook-admonish.css │ │ └── src/ │ │ ├── 01_introduction.md │ │ ├── 15_global_state.md │ │ ├── SUMMARY.md │ │ ├── appendix_reactive_graph.md │ │ ├── async/ │ │ │ ├── 10_resources.md │ │ │ ├── 11_suspense.md │ │ │ ├── 12_transition.md │ │ │ ├── 13_actions.md │ │ │ └── README.md │ │ ├── csr_wrapping_up.md │ │ ├── deployment/ │ │ │ ├── README.md │ │ │ └── binary_size.md │ │ ├── getting_started/ │ │ │ ├── README.md │ │ │ ├── community_crates.md │ │ │ └── leptos_dx.md │ │ ├── interlude_projecting_children.md │ │ ├── interlude_styling.md │ │ ├── islands.md │ │ ├── metadata.md │ │ ├── progressive_enhancement/ │ │ │ ├── README.md │ │ │ └── action_form.md │ │ ├── reactivity/ │ │ │ ├── 14_create_effect.md │ │ │ ├── README.md │ │ │ ├── interlude_functions.md │ │ │ └── working_with_signals.md │ │ ├── router/ │ │ │ ├── 16_routes.md │ │ │ ├── 17_nested_routing.md │ │ │ ├── 18_params_and_queries.md │ │ │ ├── 19_a.md │ │ │ ├── 20_form.md │ │ │ └── README.md │ │ ├── server/ │ │ │ ├── 25_server_functions.md │ │ │ ├── 26_extractors.md │ │ │ ├── 27_response.md │ │ │ └── README.md │ │ ├── ssr/ │ │ │ ├── 21_cargo_leptos.md │ │ │ ├── 22_life_cycle.md │ │ │ ├── 23_ssr_modes.md │ │ │ ├── 24_hydration_bugs.md │ │ │ └── README.md │ │ ├── testing.md │ │ └── view/ │ │ ├── 01_basic_component.md │ │ ├── 02_dynamic_attributes.md │ │ ├── 03_components.md │ │ ├── 04_iteration.md │ │ ├── 04b_iteration.md │ │ ├── 05_forms.md │ │ ├── 06_control_flow.md │ │ ├── 07_errors.md │ │ ├── 08_parent_child.md │ │ ├── 09_component_children.md │ │ ├── README.md │ │ └── builder.md │ └── logos/ │ └── .gitignore ├── either_of/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ └── src/ │ └── lib.rs ├── examples/ │ ├── Makefile.toml │ ├── README.md │ ├── SSR_NOTES.md │ ├── action-form-error-handling/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style/ │ │ └── main.scss │ ├── axum_js_ssr/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── api.rs │ │ │ ├── app.rs │ │ │ ├── consts.rs │ │ │ ├── hljs.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style/ │ │ └── main.scss │ ├── cargo-make/ │ │ ├── cargo-leptos-compress.toml │ │ ├── cargo-leptos-split-webdriver-test.toml │ │ ├── cargo-leptos-test.toml │ │ ├── cargo-leptos-webdriver-test.toml │ │ ├── cargo-leptos.toml │ │ ├── clean.toml │ │ ├── client-process.toml │ │ ├── compile.toml │ │ ├── deno-build.toml │ │ ├── lint.toml │ │ ├── main.toml │ │ ├── node.toml │ │ ├── playwright-test.toml │ │ ├── playwright-trunk-test.toml │ │ ├── playwright.toml │ │ ├── process.toml │ │ ├── scripts/ │ │ │ └── web-report.sh │ │ ├── server-process.toml │ │ ├── trunk_server.toml │ │ ├── wasm-test.toml │ │ └── webdriver.toml │ ├── counter/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── tests/ │ │ └── web.rs │ ├── counter_isomorphic/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ └── src/ │ │ ├── counters.rs │ │ ├── lib.rs │ │ └── main.rs │ ├── counter_url_query/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── counter_without_macros/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── tests/ │ │ ├── business.rs │ │ └── web.rs │ ├── counters/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── .gitignore │ │ │ ├── package.json │ │ │ ├── playwright.config.ts │ │ │ └── tests/ │ │ │ ├── add_1k_counters.spec.ts │ │ │ ├── add_counter.spec.ts │ │ │ ├── clear_counters.spec.ts │ │ │ ├── decrement_count.spec.ts │ │ │ ├── enter_count.spec.ts │ │ │ ├── fixtures/ │ │ │ │ └── counters_page.ts │ │ │ ├── increment_count.spec.ts │ │ │ ├── remove_counter.spec.ts │ │ │ └── view_counters.spec.ts │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── tests/ │ │ └── web.rs │ ├── directives/ │ │ ├── .cargo/ │ │ │ └── config.toml │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── tests/ │ │ └── web.rs │ ├── error_boundary/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── .gitignore │ │ │ ├── package.json │ │ │ ├── playwright.config.ts │ │ │ └── tests/ │ │ │ ├── clear_number.spec.ts │ │ │ ├── click_down_arrow.spec.ts │ │ │ ├── click_up_arrow.spec.ts │ │ │ ├── fixtures/ │ │ │ │ └── home_page.ts │ │ │ ├── open_app.spec.ts │ │ │ └── type_number.spec.ts │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── errors_axum/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── error_template.rs │ │ │ ├── errors.rs │ │ │ ├── landing.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style.css │ ├── fetch/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── hackernews/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── api.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── routes/ │ │ │ │ ├── nav.rs │ │ │ │ ├── stories.rs │ │ │ │ ├── story.rs │ │ │ │ └── users.rs │ │ │ └── routes.rs │ │ └── style.css │ ├── hackernews_axum/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── api.rs │ │ │ ├── error_template.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── routes/ │ │ │ │ ├── nav.rs │ │ │ │ ├── stories.rs │ │ │ │ ├── story.rs │ │ │ │ └── users.rs │ │ │ └── routes.rs │ │ └── style.css │ ├── hackernews_islands_axum/ │ │ ├── .cargo/ │ │ │ └── config.wasm.toml │ │ ├── Cargo.toml │ │ ├── Dockerfile │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── api.rs │ │ │ ├── fallback.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── routes/ │ │ │ │ ├── nav.rs │ │ │ │ ├── stories.rs │ │ │ │ ├── story.rs │ │ │ │ └── users.rs │ │ │ └── routes.rs │ │ └── style.css │ ├── hackernews_js_fetch/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── deno.jsonc │ │ ├── public/ │ │ │ └── style.css │ │ ├── run.ts │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── api.rs │ │ ├── lib.rs │ │ ├── routes/ │ │ │ ├── nav.rs │ │ │ ├── stories.rs │ │ │ ├── story.rs │ │ │ └── users.rs │ │ └── routes.rs │ ├── islands/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style.css │ ├── islands_router/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── mock_data.json │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style.css │ ├── js-framework-benchmark/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── tests/ │ │ └── web.rs │ ├── lazy_routes/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── Cargo.toml │ │ │ ├── Makefile.toml │ │ │ ├── README.md │ │ │ ├── features/ │ │ │ │ ├── basic.feature │ │ │ │ ├── duplicate_name.feature │ │ │ │ └── shared_chunks.feature │ │ │ └── tests/ │ │ │ ├── app_suite.rs │ │ │ └── fixtures/ │ │ │ ├── action.rs │ │ │ ├── check.rs │ │ │ ├── find.rs │ │ │ ├── mod.rs │ │ │ └── world/ │ │ │ ├── action_steps.rs │ │ │ ├── check_steps.rs │ │ │ └── mod.rs │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style/ │ │ └── main.scss │ ├── parent_child/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── portal/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── tests/ │ │ └── web.rs │ ├── regression/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── Cargo.toml │ │ │ ├── Makefile.toml │ │ │ ├── README.md │ │ │ ├── features/ │ │ │ │ ├── issue_4005.feature │ │ │ │ ├── issue_4088.feature │ │ │ │ ├── issue_4217.feature │ │ │ │ ├── issue_4251.feature │ │ │ │ ├── issue_4285.feature │ │ │ │ ├── issue_4296.feature │ │ │ │ ├── issue_4324.feature │ │ │ │ ├── issue_4492.feature │ │ │ │ ├── pr_4015.feature │ │ │ │ └── pr_4091.feature │ │ │ └── tests/ │ │ │ ├── app_suite.rs │ │ │ └── fixtures/ │ │ │ ├── action.rs │ │ │ ├── check.rs │ │ │ ├── find.rs │ │ │ ├── mod.rs │ │ │ └── world/ │ │ │ ├── action_steps.rs │ │ │ ├── check_steps.rs │ │ │ └── mod.rs │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── issue_4005.rs │ │ │ ├── issue_4088.rs │ │ │ ├── issue_4217.rs │ │ │ ├── issue_4285.rs │ │ │ ├── issue_4296.rs │ │ │ ├── issue_4324.rs │ │ │ ├── issue_4492.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── pr_4015.rs │ │ │ └── pr_4091.rs │ │ └── style/ │ │ └── main.scss │ ├── router/ │ │ ├── .cargo/ │ │ │ └── config.toml │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── package.json │ │ │ ├── playwright.config.ts │ │ │ └── tests/ │ │ │ └── router.spec.ts │ │ ├── index.html │ │ ├── package.json │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── api.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style.css │ ├── server_fns_axum/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── error_template.rs │ │ │ ├── errors.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ └── middleware.rs │ │ ├── style.css │ │ └── watched_files/ │ │ └── .gitkeep │ ├── slots/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── spread/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── ssr_modes/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style/ │ │ └── main.scss │ ├── ssr_modes_axum/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style/ │ │ └── main.scss │ ├── static_routing/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── posts/ │ │ │ ├── post1.md │ │ │ ├── post2.md │ │ │ ├── post3.md │ │ │ └── post4.md │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style/ │ │ └── main.scss │ ├── stores/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── subsecond_hot_patch/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── Dioxus.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── assets/ │ │ │ └── main.css │ │ └── src/ │ │ └── main.rs │ ├── suspense_tests/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── Cargo.toml │ │ │ ├── Makefile.toml │ │ │ ├── README.md │ │ │ ├── features/ │ │ │ │ ├── check_aria_current.feature │ │ │ │ ├── check_instrumented.feature │ │ │ │ ├── check_instrumented_issue_3719.feature │ │ │ │ ├── check_instrumented_suspense_resource.feature │ │ │ │ ├── click_inside_component_count.feature │ │ │ │ ├── click_nested_count.feature │ │ │ │ ├── click_nested_inside_count.feature │ │ │ │ ├── click_no_resources_count_1.feature │ │ │ │ ├── click_no_resources_count_2.feature │ │ │ │ ├── click_parallel_count_1.feature │ │ │ │ ├── click_parallel_count_2.feature │ │ │ │ ├── click_single_count.feature │ │ │ │ ├── open_app.feature │ │ │ │ ├── view_inside_component.feature │ │ │ │ ├── view_nested.feature │ │ │ │ ├── view_nested_inside.feature │ │ │ │ ├── view_no_resources.feature │ │ │ │ ├── view_parallel.feature │ │ │ │ └── view_single.feature │ │ │ └── tests/ │ │ │ ├── app_suite.rs │ │ │ └── fixtures/ │ │ │ ├── action.rs │ │ │ ├── check.rs │ │ │ ├── find.rs │ │ │ ├── mod.rs │ │ │ └── world/ │ │ │ ├── action_steps.rs │ │ │ ├── check_steps.rs │ │ │ └── mod.rs │ │ └── src/ │ │ ├── app.rs │ │ ├── instrumented.rs │ │ ├── lib.rs │ │ └── main.rs │ ├── tailwind_actix/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── end2end/ │ │ │ ├── package.json │ │ │ ├── playwright.config.ts │ │ │ └── tests/ │ │ │ └── example.spec.ts │ │ ├── input.css │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── app.rs │ │ ├── lib.rs │ │ └── main.rs │ ├── tailwind_axum/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── end2end/ │ │ │ ├── package.json │ │ │ ├── playwright.config.ts │ │ │ └── tests/ │ │ │ └── example.spec.ts │ │ ├── input.css │ │ ├── package.json │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── app.rs │ │ ├── lib.rs │ │ └── main.rs │ ├── tailwind_csr/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── Trunk.toml │ │ ├── end2end/ │ │ │ ├── package.json │ │ │ ├── playwright.config.ts │ │ │ └── tests/ │ │ │ └── example.spec.ts │ │ ├── index.html │ │ ├── input.css │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── app.rs │ │ └── main.rs │ ├── timer/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── todo_app_sqlite/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── Cargo.toml │ │ │ ├── Makefile.toml │ │ │ ├── README.md │ │ │ ├── features/ │ │ │ │ ├── add_todo.feature │ │ │ │ ├── delete_todo.feature │ │ │ │ └── open_app.feature │ │ │ └── tests/ │ │ │ ├── app_suite.rs │ │ │ └── fixtures/ │ │ │ ├── action.rs │ │ │ ├── check.rs │ │ │ ├── find.rs │ │ │ ├── mod.rs │ │ │ └── world/ │ │ │ ├── action_steps.rs │ │ │ ├── check_steps.rs │ │ │ └── mod.rs │ │ ├── migrations/ │ │ │ └── 20221118172000_create_todo_table.sql │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ └── todo.rs │ │ └── style.css │ ├── todo_app_sqlite_axum/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── Cargo.toml │ │ │ ├── Makefile.toml │ │ │ ├── README.md │ │ │ ├── features/ │ │ │ │ ├── add_todo.feature │ │ │ │ ├── delete_todo.feature │ │ │ │ └── open_app.feature │ │ │ └── tests/ │ │ │ ├── app_suite.rs │ │ │ └── fixtures/ │ │ │ ├── action.rs │ │ │ ├── check.rs │ │ │ ├── find.rs │ │ │ ├── mod.rs │ │ │ └── world/ │ │ │ ├── action_steps.rs │ │ │ ├── check_steps.rs │ │ │ └── mod.rs │ │ ├── migrations/ │ │ │ └── 20221118172000_create_todo_table.sql │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── error_template.rs │ │ │ ├── errors.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ └── todo.rs │ │ └── style.css │ ├── todo_app_sqlite_csr/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── e2e/ │ │ │ ├── Cargo.toml │ │ │ ├── Makefile.toml │ │ │ ├── README.md │ │ │ ├── features/ │ │ │ │ ├── add_todo.feature │ │ │ │ ├── delete_todo.feature │ │ │ │ └── open_app.feature │ │ │ └── tests/ │ │ │ ├── app_suite.rs │ │ │ └── fixtures/ │ │ │ ├── action.rs │ │ │ ├── check.rs │ │ │ ├── find.rs │ │ │ ├── mod.rs │ │ │ └── world/ │ │ │ ├── action_steps.rs │ │ │ ├── check_steps.rs │ │ │ └── mod.rs │ │ ├── migrations/ │ │ │ └── 20221118172000_create_todo_table.sql │ │ ├── rust-toolchain.toml │ │ ├── src/ │ │ │ ├── error_template.rs │ │ │ ├── errors.rs │ │ │ ├── fallback.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ └── todo.rs │ │ └── style.css │ ├── todomvc/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ └── websocket/ │ ├── Cargo.toml │ ├── LICENSE │ ├── Makefile.toml │ ├── README.md │ ├── e2e/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── features/ │ │ │ ├── echo_client_error.feature │ │ │ ├── echo_server_error.feature │ │ │ ├── echo_text.feature │ │ │ └── open_app.feature │ │ └── tests/ │ │ ├── app_suite.rs │ │ └── fixtures/ │ │ ├── action.rs │ │ ├── check.rs │ │ ├── find.rs │ │ ├── mod.rs │ │ └── world/ │ │ ├── action_steps.rs │ │ ├── check_steps.rs │ │ └── mod.rs │ ├── src/ │ │ ├── lib.rs │ │ ├── main.rs │ │ └── websocket.rs │ └── style.css ├── flake.nix ├── hydration_context/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ └── src/ │ ├── csr.rs │ ├── hydrate.rs │ ├── lib.rs │ └── ssr.rs ├── integrations/ │ ├── actix/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── src/ │ │ │ └── lib.rs │ │ └── tests/ │ │ └── extract_routes.rs │ ├── axum/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ └── service.rs │ │ └── tests/ │ │ ├── axum_integration.rs │ │ └── service_mode/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style/ │ │ └── main.css │ └── utils/ │ ├── Cargo.toml │ ├── Makefile.toml │ └── src/ │ └── lib.rs ├── leptos/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── build.rs │ ├── src/ │ │ ├── animated_show.rs │ │ ├── attribute_interceptor.rs │ │ ├── await_.rs │ │ ├── children.rs │ │ ├── component.rs │ │ ├── error_boundary.rs │ │ ├── for_loop.rs │ │ ├── form.rs │ │ ├── from_form_data.rs │ │ ├── hydration/ │ │ │ ├── hydration_script.js │ │ │ ├── island_script.js │ │ │ ├── islands_routing.js │ │ │ ├── mod.rs │ │ │ └── reload_script.js │ │ ├── into_view.rs │ │ ├── lib.rs │ │ ├── logging.rs │ │ ├── mount.rs │ │ ├── nonce.rs │ │ ├── portal.rs │ │ ├── provider.rs │ │ ├── show.rs │ │ ├── show_let.rs │ │ ├── subsecond.rs │ │ ├── suspense_component.rs │ │ ├── text_prop.rs │ │ └── transition.rs │ └── tests/ │ ├── pr_4061.rs │ └── ssr.rs ├── leptos_config/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── src/ │ │ ├── errors.rs │ │ ├── lib.rs │ │ └── tests.rs │ └── tests/ │ └── config.rs ├── leptos_dom/ │ ├── .cargo/ │ │ └── config.toml │ ├── Cargo.toml │ ├── Makefile.toml │ ├── examples/ │ │ ├── hydration-test/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── test-bench/ │ │ │ ├── Cargo.toml │ │ │ ├── index.html │ │ │ └── src/ │ │ │ └── main.rs │ │ └── view-tests/ │ │ ├── Cargo.toml │ │ ├── index.html │ │ └── src/ │ │ └── main.rs │ └── src/ │ ├── helpers.rs │ ├── lib.rs │ ├── logging.rs │ └── macro_helpers/ │ ├── mod.rs │ └── tracing_property.rs ├── leptos_hot_reload/ │ ├── Cargo.toml │ ├── Makefile.toml │ └── src/ │ ├── diff.rs │ ├── lib.rs │ ├── node.rs │ ├── parsing.rs │ └── patch.js ├── leptos_macro/ │ ├── .gitignore │ ├── Cargo.toml │ ├── Makefile.toml │ ├── build.rs │ ├── example/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ ├── src/ │ │ ├── component.rs │ │ ├── lazy.rs │ │ ├── lib.rs │ │ ├── memo.rs │ │ ├── params.rs │ │ ├── slice.rs │ │ ├── slot.rs │ │ └── view/ │ │ ├── component_builder.rs │ │ ├── mod.rs │ │ ├── slot_helper.rs │ │ ├── snapshots/ │ │ │ └── leptos_macro__view__tests__client_template__full_span__counter_component.snap │ │ └── utils.rs │ └── tests/ │ ├── component.rs │ ├── memo/ │ │ ├── red.rs │ │ └── red.stderr │ ├── memo.rs │ ├── params.rs │ ├── server.rs │ ├── slice/ │ │ ├── red.rs │ │ └── red.stderr │ ├── slice.rs │ ├── ui/ │ │ ├── component.rs │ │ ├── component.stderr │ │ ├── component_absolute.rs │ │ ├── component_absolute.stderr │ │ ├── server.rs │ │ └── server.stderr │ └── ui.rs ├── leptos_server/ │ ├── Cargo.toml │ ├── Makefile.toml │ └── src/ │ ├── action.rs │ ├── lib.rs │ ├── local_resource.rs │ ├── multi_action.rs │ ├── once_resource.rs │ ├── resource.rs │ ├── serializers.rs │ └── shared.rs ├── meta/ │ ├── Cargo.toml │ ├── Makefile.toml │ └── src/ │ ├── body.rs │ ├── html.rs │ ├── lib.rs │ ├── link.rs │ ├── meta_tags.rs │ ├── script.rs │ ├── style.rs │ ├── stylesheet.rs │ └── title.rs ├── next_tuple/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ └── src/ │ └── lib.rs ├── oco/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ └── src/ │ └── lib.rs ├── or_poisoned/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ └── src/ │ └── lib.rs ├── projects/ │ ├── README.md │ ├── bevy3d_ui/ │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── demos/ │ │ │ ├── bevydemo1/ │ │ │ │ ├── eventqueue/ │ │ │ │ │ ├── events.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── plugin.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── scene.rs │ │ │ │ └── state.rs │ │ │ └── mod.rs │ │ ├── main.rs │ │ └── routes/ │ │ ├── demo1.rs │ │ └── mod.rs │ ├── counter_dwarf_debug/ │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── Trunk.toml │ │ ├── index.html │ │ ├── rust-toolchain.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── hexagonal-architecture/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── end2end/ │ │ │ ├── package.json │ │ │ ├── playwright.config.ts │ │ │ ├── tests/ │ │ │ │ └── example.spec.ts │ │ │ └── tsconfig.json │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── config.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── middleware.rs │ │ │ ├── server_types.rs │ │ │ ├── trait_impl.rs │ │ │ ├── traits.rs │ │ │ └── ui_types.rs │ │ └── style/ │ │ └── main.scss │ ├── login_with_token_csr_only/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── api-boundary/ │ │ │ ├── Cargo.toml │ │ │ ├── Makefile.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── client/ │ │ │ ├── Cargo.toml │ │ │ ├── Makefile.toml │ │ │ ├── Trunk.toml │ │ │ ├── index.html │ │ │ └── src/ │ │ │ ├── api.rs │ │ │ ├── components/ │ │ │ │ ├── credentials.rs │ │ │ │ ├── mod.rs │ │ │ │ └── navbar.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ └── pages/ │ │ │ ├── home.rs │ │ │ ├── login.rs │ │ │ ├── mod.rs │ │ │ └── register.rs │ │ └── server/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ └── src/ │ │ ├── adapters.rs │ │ ├── application.rs │ │ └── main.rs │ ├── meilisearch-searchbar/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── data_set.csv │ │ └── src/ │ │ ├── fallback.rs │ │ ├── lib.rs │ │ └── main.rs │ ├── nginx-mpmc/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app-1/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── src/ │ │ │ │ ├── app.rs │ │ │ │ ├── error_template.rs │ │ │ │ ├── fileserv.rs │ │ │ │ ├── lib.rs │ │ │ │ └── main.rs │ │ │ └── style/ │ │ │ └── main.scss │ │ ├── app-2/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── src/ │ │ │ │ ├── app.rs │ │ │ │ ├── error_template.rs │ │ │ │ ├── fileserv.rs │ │ │ │ ├── lib.rs │ │ │ │ └── main.rs │ │ │ └── style/ │ │ │ └── main.scss │ │ ├── kill.sh │ │ ├── nginx.conf │ │ ├── nginx_linux.conf │ │ ├── run.sh │ │ ├── run_linux.sh │ │ ├── shared-server-1/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── src/ │ │ │ │ ├── lib.rs │ │ │ │ └── main.rs │ │ │ └── style/ │ │ │ └── main.scss │ │ └── shared-server-2/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── style/ │ │ └── main.scss │ ├── openapi-openai-api-swagger-ui/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── end2end/ │ │ │ ├── package.json │ │ │ ├── playwright.config.ts │ │ │ └── tests/ │ │ │ └── example.spec.ts │ │ ├── src/ │ │ │ ├── app.rs │ │ │ ├── error_template.rs │ │ │ ├── fileserv.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ └── open_ai.rs │ │ └── style/ │ │ └── main.scss │ ├── ory-kratos/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── app/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── auth/ │ │ │ │ ├── extractors.rs │ │ │ │ ├── kratos_error.rs │ │ │ │ ├── kratos_html.rs │ │ │ │ ├── login.rs │ │ │ │ ├── logout.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── recovery.rs │ │ │ │ ├── registration.rs │ │ │ │ ├── session.rs │ │ │ │ ├── settings.rs │ │ │ │ └── verification.rs │ │ │ ├── database_calls.rs │ │ │ ├── error_template.rs │ │ │ ├── lib.rs │ │ │ └── posts/ │ │ │ ├── create_posts.rs │ │ │ ├── mod.rs │ │ │ ├── post.rs │ │ │ └── posts_page.rs │ │ ├── docker-compose.yml │ │ ├── e2e/ │ │ │ ├── Cargo.toml │ │ │ ├── features/ │ │ │ │ ├── 0_test.feature │ │ │ │ ├── 1_register.feature │ │ │ │ ├── 2_login.feature │ │ │ │ ├── 3_logout.feature │ │ │ │ ├── 4_recovery.feature │ │ │ │ ├── 5_settings.feature │ │ │ │ ├── 6_add_post.feature │ │ │ │ └── 7_edit_post.feature │ │ │ └── tests/ │ │ │ ├── app_suite.rs │ │ │ └── fixtures/ │ │ │ ├── mod.rs │ │ │ └── steps.rs │ │ ├── frontend/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── ids/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── kratos/ │ │ │ ├── email.schema.json │ │ │ └── kratos.yaml │ │ ├── migrations/ │ │ │ ├── 01_create_users.sql │ │ │ ├── 02_create_posts.sql │ │ │ └── 03_create_post_permissions.sql │ │ ├── server/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── extract_session.rs │ │ │ ├── fileserv.rs │ │ │ └── main.rs │ │ └── style/ │ │ └── main.scss │ ├── session_auth_axum/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── flake.nix │ │ ├── migrations/ │ │ │ └── 20230226000000_create_todo_table.sql │ │ ├── src/ │ │ │ ├── auth.rs │ │ │ ├── error_template.rs │ │ │ ├── errors.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── state.rs │ │ │ └── todo.rs │ │ └── style.css │ ├── sitemap_axum/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── init/ │ │ │ └── schema.sql │ │ ├── sitemap-index.xml │ │ ├── sitemap-static.xml │ │ └── src/ │ │ ├── app.rs │ │ ├── error_template.rs │ │ ├── fileserv.rs │ │ ├── lib.rs │ │ ├── main.rs │ │ └── sitemap.rs │ ├── sso_auth_axum/ │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── Makefile.toml │ │ ├── README.md │ │ ├── flake.nix │ │ ├── migrations/ │ │ │ └── 20231217000000_create_tables.sql │ │ ├── src/ │ │ │ ├── auth.rs │ │ │ ├── error_template.rs │ │ │ ├── fallback.rs │ │ │ ├── lib.rs │ │ │ ├── main.rs │ │ │ ├── sign_in_sign_up.rs │ │ │ └── state.rs │ │ └── style.css │ └── tauri-from-scratch/ │ ├── .gitignore │ ├── Cargo.toml │ ├── README.md │ ├── Trunk.toml │ ├── src-orig/ │ │ ├── Cargo.toml │ │ ├── index.html │ │ └── src/ │ │ ├── app.rs │ │ ├── fallback.rs │ │ ├── lib.rs │ │ └── main.rs │ └── src-tauri/ │ ├── Cargo.toml │ ├── build.rs │ ├── src/ │ │ ├── lib.rs │ │ └── main.rs │ └── tauri.conf.json ├── reactive_graph/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ ├── build.rs │ ├── src/ │ │ ├── actions/ │ │ │ ├── action.rs │ │ │ ├── mod.rs │ │ │ └── multi_action.rs │ │ ├── callback.rs │ │ ├── channel.rs │ │ ├── computed/ │ │ │ ├── arc_memo.rs │ │ │ ├── async_derived/ │ │ │ │ ├── arc_async_derived.rs │ │ │ │ ├── async_derived.rs │ │ │ │ ├── future_impls.rs │ │ │ │ ├── inner.rs │ │ │ │ └── mod.rs │ │ │ ├── inner.rs │ │ │ ├── memo.rs │ │ │ └── selector.rs │ │ ├── computed.rs │ │ ├── diagnostics.rs │ │ ├── effect/ │ │ │ ├── effect.rs │ │ │ ├── effect_function.rs │ │ │ ├── immediate.rs │ │ │ ├── inner.rs │ │ │ └── render_effect.rs │ │ ├── effect.rs │ │ ├── graph/ │ │ │ ├── node.rs │ │ │ ├── sets.rs │ │ │ ├── source.rs │ │ │ └── subscriber.rs │ │ ├── graph.rs │ │ ├── into_reactive_value.rs │ │ ├── lib.rs │ │ ├── nightly.rs │ │ ├── owner/ │ │ │ ├── arc_stored_value.rs │ │ │ ├── arena.rs │ │ │ ├── arena_item.rs │ │ │ ├── context.rs │ │ │ ├── storage.rs │ │ │ └── stored_value.rs │ │ ├── owner.rs │ │ ├── send_wrapper_ext.rs │ │ ├── serde.rs │ │ ├── signal/ │ │ │ ├── arc_read.rs │ │ │ ├── arc_rw.rs │ │ │ ├── arc_trigger.rs │ │ │ ├── arc_write.rs │ │ │ ├── guards.rs │ │ │ ├── mapped.rs │ │ │ ├── read.rs │ │ │ ├── rw.rs │ │ │ ├── subscriber_traits.rs │ │ │ ├── trigger.rs │ │ │ └── write.rs │ │ ├── signal.rs │ │ ├── trait_options.rs │ │ ├── traits.rs │ │ ├── transition.rs │ │ └── wrappers.rs │ └── tests/ │ ├── async_derived.rs │ ├── cleanup.rs │ ├── effect.rs │ ├── effect_immediate.rs │ ├── memo.rs │ ├── signal.rs │ └── watch.rs ├── reactive_stores/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ └── src/ │ ├── arc_field.rs │ ├── deref.rs │ ├── field.rs │ ├── iter.rs │ ├── keyed.rs │ ├── len.rs │ ├── lib.rs │ ├── option.rs │ ├── patch.rs │ ├── path.rs │ ├── serde.rs │ ├── slotmap.rs │ ├── store_field.rs │ └── subfield.rs ├── reactive_stores_macro/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── README.md │ └── src/ │ └── lib.rs ├── router/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── build.rs │ └── src/ │ ├── components.rs │ ├── flat_router.rs │ ├── form.rs │ ├── generate_route_list.rs │ ├── hooks.rs │ ├── lib.rs │ ├── link.rs │ ├── location/ │ │ ├── history.rs │ │ ├── mod.rs │ │ └── server.rs │ ├── matching/ │ │ ├── any_choose_view.rs │ │ ├── choose_view.rs │ │ ├── horizontal/ │ │ │ ├── mod.rs │ │ │ ├── param_segments.rs │ │ │ ├── static_segment.rs │ │ │ └── tuples.rs │ │ ├── mod.rs │ │ ├── nested/ │ │ │ ├── any_nested_match.rs │ │ │ ├── any_nested_route.rs │ │ │ ├── mod.rs │ │ │ └── tuples.rs │ │ ├── path_segment.rs │ │ ├── resolve_path.rs │ │ └── vertical/ │ │ └── mod.rs │ ├── method.rs │ ├── navigate.rs │ ├── nested_router.rs │ ├── params.rs │ ├── reactive.rs │ ├── ssr_mode.rs │ └── static_routes.rs ├── router_macro/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── src/ │ │ └── lib.rs │ └── tests/ │ └── path.rs ├── rustfmt.toml ├── scripts/ │ ├── axum_integration_service_mode.bat │ ├── axum_integration_service_mode.sh │ ├── bump.sh │ └── update_nightly.sh ├── server_fn/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── build.rs │ ├── server_fn_macro_default/ │ │ ├── Cargo.toml │ │ ├── Makefile.toml │ │ └── src/ │ │ └── lib.rs │ ├── src/ │ │ ├── client.rs │ │ ├── codec/ │ │ │ ├── bitcode.rs │ │ │ ├── bitcode_serde.rs │ │ │ ├── cbor.rs │ │ │ ├── json.rs │ │ │ ├── mod.rs │ │ │ ├── msgpack.rs │ │ │ ├── multipart.rs │ │ │ ├── patch.rs │ │ │ ├── post.rs │ │ │ ├── postcard.rs │ │ │ ├── put.rs │ │ │ ├── rkyv.rs │ │ │ ├── serde_lite.rs │ │ │ ├── stream.rs │ │ │ └── url.rs │ │ ├── error.rs │ │ ├── lib.rs │ │ ├── middleware/ │ │ │ └── mod.rs │ │ ├── redirect.rs │ │ ├── request/ │ │ │ ├── actix.rs │ │ │ ├── axum.rs │ │ │ ├── browser.rs │ │ │ ├── generic.rs │ │ │ ├── mod.rs │ │ │ ├── reqwest.rs │ │ │ └── spin.rs │ │ ├── response/ │ │ │ ├── actix.rs │ │ │ ├── browser.rs │ │ │ ├── generic.rs │ │ │ ├── http.rs │ │ │ ├── mod.rs │ │ │ └── reqwest.rs │ │ └── server.rs │ └── tests/ │ ├── invalid/ │ │ ├── aliased_return_full.rs │ │ ├── aliased_return_full.stderr │ │ ├── aliased_return_none.rs │ │ ├── aliased_return_none.stderr │ │ ├── aliased_return_part.rs │ │ ├── aliased_return_part.stderr │ │ ├── empty_return.rs │ │ ├── empty_return.stderr │ │ ├── no_return.rs │ │ ├── no_return.stderr │ │ ├── not_async.rs │ │ ├── not_async.stderr │ │ ├── not_result.rs │ │ └── not_result.stderr │ ├── server_macro.rs │ └── valid/ │ ├── aliased_return_full.rs │ ├── aliased_return_none.rs │ ├── aliased_return_part.rs │ ├── custom_error_aliased_return_full.rs │ ├── custom_error_aliased_return_none.rs │ └── custom_error_aliased_return_part.rs ├── server_fn_macro/ │ ├── Cargo.toml │ ├── Makefile.toml │ ├── build.rs │ └── src/ │ └── lib.rs └── tachys/ ├── Cargo.toml ├── Makefile.toml ├── build.rs └── src/ ├── dom.rs ├── erased.rs ├── html/ │ ├── attribute/ │ │ ├── any_attribute.rs │ │ ├── aria.rs │ │ ├── custom.rs │ │ ├── global.rs │ │ ├── key.rs │ │ ├── maybe_next_attr_erasure_macros.rs │ │ ├── mod.rs │ │ └── value.rs │ ├── class.rs │ ├── directive.rs │ ├── element/ │ │ ├── custom.rs │ │ ├── element_ext.rs │ │ ├── elements.rs │ │ ├── inner_html.rs │ │ └── mod.rs │ ├── event.rs │ ├── islands.rs │ ├── mod.rs │ ├── node_ref.rs │ ├── property.rs │ └── style.rs ├── hydration.rs ├── lib.rs ├── mathml/ │ └── mod.rs ├── oco.rs ├── reactive_graph/ │ ├── bind.rs │ ├── class.rs │ ├── inner_html.rs │ ├── mod.rs │ ├── node_ref.rs │ ├── owned.rs │ ├── property.rs │ ├── style.rs │ └── suspense.rs ├── renderer/ │ ├── dom.rs │ ├── mock_dom.rs │ ├── mod.rs │ └── sledgehammer.rs ├── ssr/ │ └── mod.rs ├── svg/ │ └── mod.rs └── view/ ├── add_attr.rs ├── any_view.rs ├── either.rs ├── error_boundary.rs ├── fragment.rs ├── iterators.rs ├── keyed.rs ├── mod.rs ├── primitives.rs ├── static_types.rs ├── strings.rs ├── template.rs └── tuples.rs ================================================ FILE CONTENTS ================================================ ================================================ FILE: .config/nextest.toml ================================================ experimental = ["setup-scripts"] # For tests that need to run one at a time to avoid resource contention from # parallel execution. [test-groups] serial-integration = { max-threads = 1 } # The built-in `fn build_test_service` in the test runs a single instance of # `cargo leptos build` guaranteed with `std::sync::Once`. However, # `cargo-nexttest` does not have the ability to group tests under the same # process to emulate what `cargo test` does, thus resulting in competing # `wasm-bindgen` executions that will clobber each other, breaking the tests. # While serializing the tests was done at one point as a quick workaround, # using setup-scripts is the better approach. # # References: # - https://github.com/nextest-rs/nextest/issues/27 # - https://github.com/nextest-rs/nextest/issues/209 # # [[profile.default.overrides]] # filter = "binary_id(leptos_axum::axum_integration)" # test-group = "serial-integration" # Ideally we want this to work to allow for as much as (relatively) cross- # platform compatibility via cargo, but there doesn't appear to be a way to # apply environment variables or otherwise set `LEPTOS_OUTPUT_NAME` within # this section. # # ``` # [scripts.setup.axum_integration_service_mode] # command = ["cargo", "leptos", "--manifest-path", "integrations/axum/tests/service_mode/Cargo.toml", "build"] # # [[profile.default.scripts]] # filter = "binary_id(leptos_axum::axum_integration)" # setup = ["axum_integration_service_mode"] # ``` # # Instead, we have to do the platform specific route... [scripts.setup.axum_integration_service_mode_sh] command = ["./scripts/axum_integration_service_mode.sh"] [scripts.setup.axum_integration_service_mode_bat] command = ["cmd", "/c", "scripts\\axum_integration_service_mode.bat"] [[profile.default.scripts]] platform = { host = "cfg(unix)" } filter = "binary_id(leptos_axum::axum_integration)" setup = ["axum_integration_service_mode_sh"] [[profile.default.scripts]] platform = { host = "cfg(windows)" } filter = "binary_id(leptos_axum::axum_integration)" setup = ["axum_integration_service_mode_bat"] ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: gbj ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us improve title: '' labels: '' assignees: '' --- **Describe the bug** A clear and concise description of what the bug is. **Leptos Dependencies** Please copy and paste the Leptos dependencies and features from your `Cargo.toml`. For example: ```toml leptos = { version = "0.3", features = ["serde"] } leptos_axum = { version = "0.3", optional = true } leptos_meta = { version = "0.3"} leptos_router = { version = "0.3"} ``` **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Screenshots** If applicable, add screenshots to help explain your problem. **Next Steps** - [ ] I will make a PR - [ ] I would like to make a PR, but need help getting started - [ ] I want someone else to take the time to fix this - [ ] This is a low priority for me and is just shared for your information **Additional context** Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ contact_links: - name: Support or Question url: https://github.com/leptos-rs/leptos/discussions/new?category=q-a about: Do you need help figuring out how to do something, or want some help troubleshooting a bug? You can ask in our Discussions section. - name: Discord Discussions url: https://discord.gg/YdRAhS7eQB about: For more informal, real-time conversation and support, you can join our Discord server. ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: Suggest an idea for this project title: '' labels: '' assignees: '' --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. ================================================ FILE: .github/dependabot.yml ================================================ version: 2 updates: - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" # Grouping all dependencies in one PR weekly - package-ecosystem: cargo directory: "/" schedule: interval: weekly day: monday open-pull-requests-limit: 1 allow: - dependency-type: "all" groups: rust-dependencies: patterns: - "*" ================================================ FILE: .github/workflows/autofix.yml ================================================ name: autofix.ci on: pull_request: # Running this workflow on main branch pushes requires write permission to apply changes. # Leave it alone for future uses. # push: # branches: ["main"] permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: CARGO_TERM_COLOR: always RUST_BACKTRACE: 1 DEBIAN_FRONTEND: noninteractive jobs: autofix: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: {toolchain: "nightly-2026-02-24", components: "rustfmt, clippy", target: "wasm32-unknown-unknown", rustflags: ""} - name: Install Glib run: | sudo apt-get update sudo apt-get install -y libglib2.0-dev - name: Install cargo-all-features run: cargo install --git https://github.com/sabify/cargo-all-features --branch arbitrary-command-support - name: Install jq run: sudo apt-get install jq - name: Format the workspace run: cargo fmt --all - name: Clippy the workspace run: cargo all-features clippy --allow-dirty --fix --lib --no-deps - uses: autofix-ci/action@v1.3.3 if: ${{ always() }} with: fail-fast: false ================================================ FILE: .github/workflows/ci.yml ================================================ name: CI on: push: branches: - main - leptos_0.6 - leptos_0.8 pull_request: branches: - main - leptos_0.6 - leptos_0.8 concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: get-leptos-changed: uses: ./.github/workflows/get-leptos-changed.yml get-leptos-matrix: uses: ./.github/workflows/get-leptos-matrix.yml get-example-changed: uses: ./.github/workflows/get-example-changed.yml get-examples-matrix: uses: ./.github/workflows/get-examples-matrix.yml test-members: name: CI (members) needs: [get-leptos-changed, get-leptos-matrix] if: needs.get-leptos-changed.outputs.leptos_changed == 'true' strategy: matrix: ${{ fromJSON(needs.get-leptos-matrix.outputs.matrix) }} fail-fast: false uses: ./.github/workflows/run-cargo-make-task.yml with: directory: ${{ matrix.directory }} test-examples: name: CI (examples) needs: [test-members, get-examples-matrix] if: ${{ success() }} strategy: matrix: ${{ fromJSON(needs.get-examples-matrix.outputs.matrix) }} fail-fast: false uses: ./.github/workflows/run-cargo-make-task.yml with: directory: ${{ matrix.directory }} test-only-examples: name: CI (examples) needs: [get-leptos-changed, get-example-changed] if: needs.get-leptos-changed.outputs.leptos_changed != 'true' && needs.get-example-changed.outputs.example_changed == 'true' strategy: matrix: ${{ fromJSON(needs.get-example-changed.outputs.matrix) }} fail-fast: false uses: ./.github/workflows/run-cargo-make-task.yml with: directory: ${{ matrix.directory }} semver-check: name: SemVer check (stable) needs: [get-leptos-changed, test-members, test-examples] if: ${{ success() && needs.get-leptos-changed.outputs.leptos_changed == 'true' && !contains(github.event.pull_request.labels.*.name, 'breaking') }} runs-on: ubuntu-latest steps: - name: Install Glib run: | sudo apt-get update sudo apt-get install -y libglib2.0-dev - name: Checkout uses: actions/checkout@v6 - name: Semver Checks uses: obi1kenobi/cargo-semver-checks-action@v2 ================================================ FILE: .github/workflows/get-example-changed.yml ================================================ name: Examples Changed Call on: workflow_call: outputs: example_changed: description: "Example Changed" value: ${{ jobs.get-example-changed.outputs.example_changed }} # This is for test-only-examples workflow in ci.yml matrix: description: "Example Changed Directories" value: ${{ jobs.get-example-changed.outputs.matrix }} jobs: get-example-changed: name: Get Example Changed runs-on: ubuntu-latest outputs: example_changed: ${{ steps.set-example-changed.outputs.example_changed }} # This is for test-only-examples workflow in ci.yml matrix: ${{ steps.set-example-changed.outputs.matrix }} steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 0 - name: Get example files that changed id: changed-files uses: tj-actions/changed-files@v47 with: files: | examples/** !examples/cargo-make/** !examples/Makefile.toml !examples/*.md - name: List example files that changed run: echo '${{ steps.changed-files.outputs.all_changed_files }}' - name: Install jq run: sudo apt-get install jq - name: Set example_changed id: set-example-changed run: | echo "example_changed=${{ steps.changed-files.outputs.any_changed }}" >> "$GITHUB_OUTPUT" # This is for test-only-examples workflow in ci.yml echo "matrix={\"directory\": $(echo '${{ steps.changed-files.outputs.all_changed_files }}' | tr ' ' '\n' | awk -F'/' '{print $1 "/" $2}'| sort -u | jq -R -s -c 'split("\n") | .[:-1]')}" >> "$GITHUB_OUTPUT" ================================================ FILE: .github/workflows/get-examples-matrix.yml ================================================ name: Get Examples Matrix Call on: workflow_call: outputs: matrix: description: "Matrix" value: ${{ jobs.create.outputs.matrix }} jobs: create: name: Create Examples Matrix runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} env: # separate examples using "|" (vertical bar) char like "a|b|c". # cargo-make should be excluded by default. EXCLUDED_EXAMPLES: cargo-make steps: - name: Checkout uses: actions/checkout@v6 - name: Install jq run: sudo apt-get install jq - name: Set Matrix id: set-matrix run: | examples=$(ls -1d examples/*/ | grep -vE "($EXCLUDED_EXAMPLES)" | sed 's/\/$//' | jq -R -s -c 'split("\n")[:-1]') echo "Example Directories: $examples" echo "matrix={\"directory\":$examples}" >> "$GITHUB_OUTPUT" - name: Print Location Info run: | echo "Workspace: ${{ github.workspace }}" pwd ls | sort -u ================================================ FILE: .github/workflows/get-leptos-changed.yml ================================================ name: Get Leptos Changed Call on: workflow_call: outputs: leptos_changed: description: "Leptos Changed" value: ${{ jobs.create.outputs.leptos_changed }} jobs: create: name: Detect Source Change runs-on: ubuntu-latest outputs: leptos_changed: ${{ steps.set-source-changed.outputs.leptos_changed }} steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 0 - name: Get source files that changed id: changed-source uses: tj-actions/changed-files@v47 with: files_ignore: | .*/**/* cargo-make/**/* examples/**/* projects/**/* benchmarks/**/* docs/**/* - name: List source files that changed run: echo '${{ steps.changed-source.outputs.all_changed_files }}' - name: Set leptos_changed id: set-source-changed run: | echo "leptos_changed=${{ steps.changed-source.outputs.any_changed }}" >> "$GITHUB_OUTPUT" ================================================ FILE: .github/workflows/get-leptos-matrix.yml ================================================ name: Get Leptos Matrix Call on: workflow_call: outputs: matrix: description: "Matrix" value: ${{ jobs.create.outputs.matrix }} jobs: create: name: Create Leptos Matrix runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - name: Checkout uses: actions/checkout@v6 - name: Install jq run: sudo apt-get install jq - name: Set Matrix id: set-matrix run: | crates=$(cargo metadata --no-deps --quiet --format-version 1 | jq -r '.packages[] | select(.name != "workspace") | .manifest_path| rtrimstr("/Cargo.toml")' | sed "s|$(pwd)/||" | jq -R -s -c 'split("\n")[:-1]') echo "Leptos Directories: $crates" echo "matrix={\"directory\":$crates}" >> "$GITHUB_OUTPUT" - name: Print Location Info run: | echo "Workspace: ${{ github.workspace }}" pwd ls | sort -u ================================================ FILE: .github/workflows/publish-book.yml ================================================ name: Deploy book on: push: paths: ["docs/book/**"] branches: - main jobs: deploy: runs-on: ubuntu-latest permissions: contents: write # To push a branch pull-requests: write # To create a PR from that branch steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Install mdbook run: | mkdir mdbook curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.27/mdbook-v0.4.27-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook echo `pwd`/mdbook >> $GITHUB_PATH - name: Deploy GitHub Pages run: | cd docs/book mdbook build git worktree add gh-pages git config user.name "Deploy book from CI" git config user.email "" cd gh-pages # Delete the ref to avoid keeping history. git update-ref -d refs/heads/gh-pages rm -rf * mv ../book/* . git add . git commit -m "Deploy book $GITHUB_SHA to gh-pages" git push --force --set-upstream origin gh-pages ================================================ FILE: .github/workflows/run-cargo-make-task.yml ================================================ name: Run Task on: workflow_call: inputs: directory: required: true type: string env: CARGO_TERM_COLOR: always CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse DEBIAN_FRONTEND: noninteractive RUSTFLAGS: ${{ inputs.erased_mode && '--cfg erase_components' || '' }} LEPTOS_TAILWIND_VERSION: v4.0.14 LEPTOS_SASS_VERSION: 1.86.0 jobs: test: name: "Run (${{ matrix.toolchain }}) (erased_mode: ${{ matrix.erased_mode && 'enabled' || 'disabled' }})" runs-on: ubuntu-latest strategy: matrix: toolchain: [stable, nightly-2026-02-24] erased_mode: [true, false] steps: - name: Free Disk Space run: | echo "Disk space before cleanup:" df -h sudo rm -rf /usr/local/.ghcup sudo rm -rf /opt/hostedtoolcache/CodeQL sudo rm -rf /usr/local/lib/android sudo rm -rf /usr/share/dotnet sudo rm -rf /opt/ghc sudo rm -rf /usr/local/share/boost sudo rm -rf /usr/local/lib/node_modules # following lines currenly not needed as it takes too much time # the new isolated CI doesn't need much space to test libraries # # uncommet only if nneded # # sudo apt-get clean # sudo apt-get purge -y '^ghc-.*' '^dotnet-.*' '^llvm-.*' '^mono-.*' '^php.*' '^ruby.*' # sudo apt-get autoremove -y # sudo apt-get clean # sudo rm -rf "$AGENT_TOOLSDIRECTORY" # docker system prune -af # docker image prune -af # docker volume prune -f echo "Disk space after cleanup:" df -h # Setup environment - name: Install Glib run: | sudo apt-get update sudo apt-get install -y libglib2.0-dev - uses: actions/checkout@v6 - name: Setup Rust uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.toolchain }} targets: wasm32-unknown-unknown components: clippy,rustfmt - name: Install binstall uses: cargo-bins/cargo-binstall@main - name: Install wasm-bindgen run: cargo binstall wasm-bindgen-cli --no-confirm - name: Install cargo-leptos run: cargo binstall cargo-leptos --locked --no-confirm - name: Install cargo-make run: cargo binstall cargo-make --no-confirm - name: Install nextest run: cargo binstall cargo-nextest --locked --no-confirm - name: Install cargo-all-features run: cargo install cargo-all-features # Part of direct-minimal-versions check - name: Install cargo-hack if: contains(matrix.toolchain, 'nightly') uses: taiki-e/install-action@cargo-hack # Part of direct-minimal-versions check - name: Install cargo-minimal-versions if: contains(matrix.toolchain, 'nightly') uses: taiki-e/install-action@cargo-minimal-versions - name: Install Trunk if: contains(inputs.directory, 'examples') run: cargo binstall trunk --no-confirm - name: Print Trunk Version if: contains(inputs.directory, 'examples') run: trunk --version - name: Install Node.js if: contains(inputs.directory, 'examples') uses: actions/setup-node@v6 with: node-version: 20 - uses: pnpm/action-setup@v4 name: Install pnpm if: contains(inputs.directory, 'examples') id: pnpm-install with: version: 8 run_install: false - name: Get pnpm store directory if: contains(inputs.directory, 'examples') id: pnpm-cache run: | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - uses: actions/cache@v5 if: contains(inputs.directory, 'examples') name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - name: Maybe install chromedriver if: contains(inputs.directory, 'examples') run: | project_makefile='${{inputs.directory}}/Makefile.toml' webdriver_count=$(cat $project_makefile | grep "cargo-make/webdriver.toml" | wc -l) if [ $webdriver_count -eq 1 ]; then if ! command -v chromedriver &>/dev/null; then echo chromedriver required sudo apt-get update sudo apt-get install chromium-chromedriver else echo chromedriver is already installed fi else echo chromedriver is not required fi - name: Maybe install playwright browser dependencies if: contains(inputs.directory, 'examples') run: | for pw_path in $(find '${{inputs.directory}}' -name playwright.config.ts) do pw_dir=$(dirname $pw_path) if [ ! -v $pw_dir ]; then echo "Playwright required in $pw_dir" cd $pw_dir pnpm dlx playwright install --with-deps else echo Playwright is not required fi done - name: Install Deno if: contains(inputs.directory, 'examples') uses: denoland/setup-deno@v2 with: deno-version: v1.x - name: Maybe install gtk-rs dependencies if: contains(inputs.directory, 'gtk') run: | sudo apt-get install -y libglib2.0-dev libgio2.0-cil-dev libgraphene-1.0-dev libcairo2-dev libpango1.0-dev libgtk-4-dev - name: Install Tailwind and Sass dependencies if: contains(inputs.directory, 'examples') run: | cd '${{ inputs.directory }}' tailwindcss_version=$(echo "$LEPTOS_TAILWIND_VERSION" | sed 's/^v//') sass_version="$LEPTOS_SASS_VERSION" pnpm add "tailwindcss@$tailwindcss_version" "@tailwindcss/cli@$tailwindcss_version" "sass@$sass_version" echo "Tailwind CSS version:" ./node_modules/.bin/tailwindcss --version echo "Sass version:" ./node_modules/.bin/sass --version # Run Cargo Make Task - name: ${{ inputs.cargo_make_task }} run: | cd '${{ inputs.directory }}' cargo make --no-workspace --profile=github-actions ci # check the direct-minimal-versions on release COMMIT_MSG=$(git log -1 --pretty=format:'%s') # Supports: v1.2.3, v1.2.3-alpha, v1.2.3-beta1, v1.2.3-rc.1, etc. if [[ "$COMMIT_MSG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+(\.?[0-9]+)?)?$ ]]; then cargo make --no-workspace --profile=github-actions check-minimal-versions --direct fi # Check if the counter_isomorphic can be built with leptos_debuginfo cfg flag in release mode - name: ${{ inputs.cargo_make_task }} with --cfg=leptos_debuginfo if: contains(inputs.directory, 'counter_isomorphic') run: | cd '${{ inputs.directory }}' RUSTFLAGS="$RUSTFLAGS --cfg leptos_debuginfo" cargo leptos build --release - name: Clean up ${{ inputs.directory }} if: always() run: | cd '${{ inputs.directory }}' cargo clean || true rm -rf node_modules || true ================================================ FILE: .gitignore ================================================ target dist pkg comparisons blob.rs **/projects/**/Cargo.lock **/examples/**/Cargo.lock **/benchmarks/**/Cargo.lock **/*.rs.bk .DS_Store .idea .direnv .envrc .vscode vendor hash.txt ================================================ FILE: ARCHITECTURE.md ================================================ # Architecture The goal of this document is to make it easier for contributors (and anyone who’s interested!) to understand the architecture of the framework. The whole Leptos framework is built from a series of layers. Each of these layers depends on the one below it, but each can be used independently from the ones built on top of it. While running a command like `cargo leptos new --git leptos-rs/start` pulls in the whole framework, it’s important to remember that none of this is magic: each layer of that onion can be stripped away and reimplemented, configured, or adapted as needed, incrementally. > Everything that follows will assume you have a good working understanding > of the framework. There will be explanations of how some parts of it work > or fit together, but these are not docs. They assume you know what I’m > talking about. ## The Reactive System: `leptos_reactive` The reactive system allows you to define dynamic values (signals), the relationships between them (derived signals and memos), and the side effects that run in response to them (effects). These concepts are completely independent of the DOM and can be used to drive any kind of reactive updates. The reactive system is based on the assumption that data is relatively cheap, and side effects are relatively expensive. Its goal is to minimize those side effects (like updating the DOM or making a network requests) as infrequently as possible. The reactive system is implemented as a single data structure that exists at runtime. In exchange for giving ownership over a value to the reactive system (by creating a signal), you receive a `Copy + 'static` identifier for its location in the reactive system. This enables most of the ergonomics of storing and sharing state, the use of callback closures without lifetime issues, etc. This is implemented by storing signals in a slotmap arena. The signal, memo, and scope types that are exposed to users simply carry around an index into that slotmap. > Items owned by the reactive system are dropped when the corresponding reactive > scope is dropped, i.e., when the component or section of the UI they’re > created in is removed. In a sense, Leptos implements a “garbage collector” > in which the lifetime of data is tied to the lifetime of the UI, not Rust’s > lexical scopes. ## The DOM Renderer: `leptos_dom` The reactive system can be used to drive any kinds of side effects. One very common side effect is calling an imperative method, for example to update the DOM. The entire DOM renderer is built on top of the reactive system. It provides a builder pattern that can be used to create DOM elements dynamically. The renderer assumes, as a convention, that dynamic attributes, classes, styles, and children are defined by being passed a `Fn() -> T`, where their static equivalents just receive `T`. There’s nothing about this that is divinely ordained, but it’s a useful convention because it allows us to use zero-overhead derived signals as one of several ways to indicate dynamic content. `leptos_dom` also contains code for server-side rendering of the same UI views to HTML, either for out-of-order streaming (`src/ssr.rs`) or in-order streaming/async rendering (`src/ssr_in_order.rs`). ## The Macros: `leptos_macro` It’s entirely possible to write Leptos code with no macros at all. The `view` and `component` macros, the most common, can be replaced by the builder syntax and simple functions (see the `counter_without_macros` example). But the macros enable a JSX-like syntax for describing views. This package also contains the `Params` derive macro used for typed queries and route params in the router. ### Macro-based Optimizations Leptos 0.0.x was built much more heavily on macros. Taking its cues from SolidJS, the `view` macro emitted different code for CSR, SSR, and hydration, optimizing each. The CSR/hydrate versions worked by compiling the view to an HTML template string, cloning that `