Repository navigation
feat: migrate to SolidJS v2.0 and release 2.0.0-beta - #20
Merged
Merged
Conversation
- Bump catalog dependencies to SolidJS v2.0 (`solid-js@^2.0.0-rc.0`, `@solidjs/web@^2.0.0-rc.0`, `@solidjs/vite-plugin@^2.0.0-rc.0`). - Update JSX namespace resolution to `@solidjs/web` across tsconfig presets and build configs. - Migrate component prop utilities from `splitProps` to `omit` and replace `attr:` namespace prefixes with standard HTML attributes. - Align client preview entrypoint with Solid 2.0 DOM rendering.
- Migrate Vite and TanStack Start fixtures to SolidJS v2.0 and `@solidjs/vite-plugin`. - Update Cloudflare Workers and TanStack Start email route handlers for Solid 2.0 streaming and SSR. - Deduplicate nested pnpm workspace definitions in integration fixtures.
- Update benchmark Vite and Vitest configs to use `@solidjs/vite-plugin` and Solid 2.0 JSX transforms. - Update benchmark email fixtures for Solid 2.0 component contracts. - Refresh baseline metrics across cross-library, rendering, tailwind, and plain-text suites.
…sification, and text builder - Add bounded LRU and WeakMap compilation caching for instant convert() re-renders. - Cache DecisionTree selector pickers to skip Selderee AST re-compilation. - Replace whitespace regular expressions with a 64KB Uint8Array lookup table for O(1) character classification. - Implement zero-regex countNewlinesNoWords and fast character code checks in trim helpers. - Optimize InlineTextBuilder and BlockTextBuilder with fastJoin, direct property access, and zero-allocation optional parameter defaults. - Speed up findFirstBody with direct child scanning to bypass deep head tree traversals.
…, and tailwind inlining - Precompute requiredSlots in buildSlotLookup to eliminate Set and array allocations during render validation. - Fast-path extractSsrHtml in renderSlotValueSync and renderSlotValueTextSync to bypass redundant renderToString calls on Solid SSR objects. - Fix plainTextTemplate case-sensitivity with resolveContentSlotName for uppercase headings, restoring fast compiled text rendering. - Add tagCache to TailwindRenderPlan and use static pre-compiled regexes for class/style attribute parsing and removal. - Add noScripts: true to solidRenderOptions for sync and async renders.
…ks documentation - Bump package versions to 2.0.0-beta across @akin01/solid-email, @solid-email/render, and @solid-email/html-to-text. - Update skill metadata and installation guides for SolidJS v2.0 dependencies. - Update benchmark tables in README, README.es-ES, and README.id-ID reflecting performance gains. - Document breaking changes, additions, optimizations, and related commit hashes in CHANGELOG.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Migrates Solid Email monorepo to SolidJS v2.0 (
solid-js@^2.0.0-rc.0and@solidjs/web@^2.0.0-rc.0) with breaking changes and performance optimizations, preparing release2.0.0-beta. The previous v1 state (0.1.5) is preserved on semantic version branchv0.1.5(andv0.1.x).Highlights
SolidJS v2.0 Migration:
@solidjs/webacross all packages (jsxImportSource: "@solidjs/web").renderToStringAsyncwithrenderToStreamfrom@solidjs/web.createResourceandSuspenseinTailwindwithcreateMemoandLoadingfromsolid-js.splitPropswithomitacross components.attr:namespace prefix on HTML attributes in table primitives with standard HTML attributes.vite-plugin-solidwith@solidjs/vite-plugin.High-Performance Optimizations:
@solid-email/html-to-text: Added bounded LRU and WeakMap compilation caching forconvert()(~20x faster repeated text conversions, 5.56x faster than upstreamhtml-to-text), DecisionTree selector caching, and a 64KBUint8Arraycharacter lookup table for O(1) whitespace classification.@solid-email/render: PrecomputedrequiredSlotsvalidation, fast dictionary slot replacements (Object.create(null)), and direct SSR template extraction (extractSsrHtml) for slot rendering to bypass redundantrenderToStringroot creation.tagCachetoTailwindRenderPlanfor O(1) repeated element inlining and pre-compiled static regexes for class/style attribute parsing.resolveContentSlotName), boosting compiled plain-text rendering to 0.29ms (3,432.87 hz) (5x faster than v1, 189x faster than React Email).Benchmark Summary:
compileSync: 20µs (49,108 ops/s) — 125.8x faster than React Email, using 53x less heap.renderSync: 645µs (1,551 ops/s) — 4.0x faster than React Email.Version Bump:
@akin01/solid-email,@solid-email/render, and@solid-email/html-to-textto2.0.0-beta.