Skip to content

Commit 19ac4de

Browse files
authored
adjusted readme (#21)
1 parent cd69c74 commit 19ac4de

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

README.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,20 @@ Create client-side web apps in Swift that weigh less than 200 kB.
44

55
**[Check out the "Swiftle" demo app!](/Examples/Swiftle/)**
66

7-
## 🚧 Experimental 🚧
7+
## 🚧 Work In Progress 🚧
88
Based on the [swift.org WebAssembly SDKs](https://forums.swift.org/t/swift-sdks-for-webassembly-now-available-on-swift-org/80405), [JavaScriptKit](https://github.com/swiftwasm/JavaScriptKit), and [Elementary](https://github.com/sliemeobn/elementary).
99

1010
For embedded builds, a recent main or 6.2 snapshot with matching *Swift SDKs for WebAssembly* from [swift.org](https://www.swift.org/install) is required.
1111

12+
> [!IMPORTANT]
13+
> ElementaryDOM is a passion project under active development.\
14+
> Expect sharp edges, APIs may change, and things may break while I balance performance, ergonomics, and feature set.
15+
>
16+
> Nothing is stopping us from having a viable, fully featured, client-side web frontend library powered by Swift.
17+
>
18+
> If you want to see this come to life, sponsorship is sincerely appreciated 🙏\
19+
> [![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/sliemeobn)
20+
1221
## Things to figure out
1322

1423
- ~~identity system and list-diffing~~
@@ -19,16 +28,20 @@ For embedded builds, a recent main or 6.2 snapshot with matching *Swift SDKs for
1928
- ~~dependencies on versioned packages (i.e., build without unsafe flags)~~
2029
- ~~fix DOM not child-diffing to preserve animations/nodes (the current solution based on `replaceChildren` will not work, it seems)~~
2130
- "model-bindings" for inputs (i.e., bind a @Binding<String> to a text box, or bind a @Binding<Bool> to a checkbox)
31+
- transitions and animations (ideally CSS-based, probably svelte-like custom easing functions applied through WAAPI)
32+
- proper unit testing (once APIs firm up a bit more)
33+
- split out JavaScriptKit stuff in separate module to contain spread, maybe one day we can switch to faster interop somehow
34+
- add basic docs, a good intro readme, and push a 0.1 out the door! (probably best to wait for Swift 6.2 to drop)
35+
- a router implementation (probably in extra module?)
2236
- maybe conditionally support @Observable for non-embedded builds?
23-
- transitions and animations (CSS-based)
2437
- figure out why `@Environment` with optional `ReactiveObject` does not build in embedded
25-
- proper unit testing (once APIs firm up a bit more)
2638
- preference system (i.e., bubbling up values)
2739
- embedded-friendly Browser APIs (Storage, History, maybe in swiftwasm package with new JavaScriptKit macros)
2840
- ~~think about how to deal with the lack of `Codable` in embedded (wait for new serialization macros)~~
2941
- ~~make printing work without WASI (maybe pipe putchar through to JavaScript?)~~
30-
- isolation and @MainActor stuff for reusable types (server-side-rendering and client apps)
42+
- isolation and @MainActor stuff for reusable types (server-side rendering and client apps - probably never quite possible to have same types render "multi-threaded" server side and stay single-threaded client side....)
3143
- ~~decide whether the current idea of `Views` flattening themselves into renderable types is even necessary, or if views should just "apply" themselves into the reconciler - might be a bit messier, but maybe faster and more flexible~~
44+
- move all elementary repos under one project roof and use a traits-based, single "ElementaryUI" top-level package (or similar)
3245

3346
### Embedded Swift for WASM waitlist
3447

0 commit comments

Comments
 (0)