Bjorn-Strom/FSS
60.1
Adequate · 2 October 2026
15.6k
lines of production code
F#
primary language
2
measurements over time
What this system is
Fss is a statically typed CSS library for F\# that generates CSS rules from F\# code, supporting both client-side injection and server-side rendering. It provides integrations for popular F\# web frameworks like Feliz, Giraffe, and Fable, along with utilities for static generation and runtime compilation. The system focuses on performance and type safety, offering comprehensive coverage of modern CSS properties and selectors while ensuring deterministic output through hashing.
How it got here
2020 — Initial release and tooling setup
5 changes.
This period marks the initial release of Fss, a statically typed CSS library for F\#, establishing the core project structure and framework integrations. The work involved setting up the build environment by upgrading to .NET 10 and Fable 4, migrating the documentation build to Vite, and replacing the test runner with Fet. Comprehensive unit tests were added to verify CSS generation, while legacy arithmetic modules were removed to focus on styling capabilities.
2022–2026 — Fss 3.0 CSS engine and ecosystem expansion
11 changes.
This period focused on developing the Fss 3.0 CSS-in-F\# engine, introducing core hashing and generation logic alongside extensive type definitions for modern CSS features. The work expanded the ecosystem by adding integration libraries for client-side (Fable, Feliz), server-side (Giraffe), and alternative DOM injection (Falco) environments, as well as build-time tooling (Builder, Static). Performance was validated through new benchmarking suites, and the documentation site was rebuilt to support dynamic routing and improved navigation.
Features
Add Fss integration properties to Feliz
Introduces new static members to the Feliz.prop type, enabling users to apply Fss styles directly to Feliz elements. The new properties include fss for applying generated class names, fssWithClassname for specifying a custom class name, fssWithClass for combining Fss styles with an existing single class, and fssCombine for merging Fss styles with a list of conditional class names.
Fss.Feliz · high confidence
Added BenchmarkJS performance testing suite
A new F\#-based benchmarking tool has been introduced to measure the performance of CSS style generation. This suite includes specific test cases for flat and interleaved style rules of varying complexity (small, medium, large, and scaling up to 200 rules) and utilizes the browser's \performance.now()\ API to report mean, median, min, max, and p95 execution times, allowing developers to track optimization regressions or improvements in the styling engine.
BenchmarkJS · high confidence
Added CSS-in-F\# benchmark suite for Fss 3.0
A new benchmark project has been added to measure the performance of the Fss library, specifically targeting the Fss 3.0.0 release which introduces CSS nesting and modern CSS features. The suite includes deterministic input datasets covering flat rules, interleaved pseudo-class scopes, and deeply nested media queries to evaluate stringification and chunking performance.
Benchmark · high confidence
Core CSS generation engine and hashing utilities introduced
The Fss.Core library now includes the foundational Functions and Utilities modules that power CSS generation. Functions.fs implements the core logic for building CSS scopes, handling selectors (classes, IDs, pseudo-classes, media queries, container queries, layers, and scoping), and rendering CSS rules using StringBuilder for performance. Utilities.fs provides helper functions for string manipulation and implements the FNV-1A hashing algorithm used to generate unique class names for CSS rules, ensuring deterministic and collision-resistant output.
Fss.Core · high confidence
Expanded CSS property coverage with new type definitions
The Fss.Core/Types module has been significantly expanded with new F\# type definitions for a wide range of CSS properties, including Accent, Animation, Appearance, AspectRatio, Attribute, Background, Border, BoxShadow, Caret, Clear, ClipPath, Color, ColorScheme, and Column. This adds comprehensive support for styling features such as CSS animations (with shorthand and individual properties), modern color spaces (OKLCH, Lab), border controls, clip-paths, and aspect-ratio handling, allowing users to express these styles directly in their F\# code.
Fss.Core/Types · high confidence
Initial release of Fss, a statically typed CSS library for F\#
This commit introduces the initial version of Fss, a dependency-free CSS library for .NET that provides statically typed styling. The repository includes the core library (Fss.Core) and framework-specific integrations for Fable, Feliz, Giraffe, and Falco, along with static and builder utilities. The project is structured as a multi-project solution with a documentation site, benchmarks, and tests, and utilizes Vite for building the documentation assets.
(repo-wide) · high confidence
Introduce Fss.Fable for injecting CSS styles into the DOM
Added the Fss.Fable library, which provides F\# bindings to inject CSS rules directly into the browser's DOM. This includes functions to generate and inject standard class-based styles (fss, fssWithClassname), global styles (global'), counter styles (counterStyle), font faces (fontFaces, fontFace), and keyframe animations (keyframes). The implementation uses a cache to avoid duplicate injections for standard styles and manages global style updates by replacing existing content in the document head.
Fss.Fable · high confidence
Introduce Fss.Static module for generating CSS values
A new Fss.Static module has been added to provide functions for creating CSS values, including styles, global rules, counter styles, font faces, and keyframes. This module also extends existing Fss types (AnimationName, FontFamily, CounterReset, CounterSet, CounterIncrement, and Content) with new value extraction members, allowing users to easily access the generated CSS strings and names from the created style objects.
Fss.Static · high confidence
Introduces Fss.Builder for compiling and generating CSS from F\# sources
Adds the Fss.Builder module, which provides a runtime mechanism to compile F\# style definitions into a DLL, load the resulting assembly, extract CSS values via reflection, and output the final CSS files to disk. This enables a workflow where CSS is generated dynamically from F\# code rather than being statically bundled.
Fss.Builder · high confidence
Introduces Fss.Giraffe for server-side CSS generation in Giraffe views
Adds the new Fss.Giraffe module, enabling the generation of CSS styles and injection of style nodes directly within Giraffe view engines. This includes functions for creating standard CSS classes (fss, fssWithClassname), global styles (global'), counter styles (counterStyle), font faces (fontFaces, fontFace), and keyframe animations (keyframes), all of which are cached to optimize performance.
Fss.Giraffe · high confidence
Introduction of Fss.Falco for CSS-in-F\# style generation
The new Fss.Falco library provides functions to generate CSS styles and inject them into the DOM as XML nodes. It exposes APIs for creating standard styles (fss), styles with specific class names (fssWithClassname), global styles (global'), counter styles (counterStyle), font faces (fontFaces, fontFace), and keyframe animations (keyframes). These functions handle the creation of style elements and manage caching to ensure efficient DOM updates.
Fss.Falco · high confidence
Removals
Removal of core arithmetic module
The core arithmetic module containing basic operations (add, multiply, divide, subtract) has been removed from the library source.
src · high confidence
Behavioural changes
Documentation site rebuilt with code-split pages and dynamic routing
The documentation site has been completely rewritten as a Feliz-based React application. It now features a dynamic routing system that loads individual documentation pages (such as BasicUsage, ContainerQueries, and CascadeLayers) on demand via code-splitting, replacing the previous static structure. The UI includes a new sidebar navigation, theme-aware styling, and custom SVG icons for the logo, hamburger menu, and theme toggles, along with integrated Markdown rendering and syntax highlighting for code examples.
Documentation · high confidence
Update public entry point for documentation site
The public/index.html file has been updated to serve as the entry point for the new documentation site. The previous Mocha test setup has been replaced with a modern HTML5 structure including proper meta tags for SEO and responsiveness, favicon links, and a script tag loading the Documentation.js module into the \#app div.
public · high confidence
Test coverage
Added comprehensive test coverage for CSS properties and selectors
Added a new suite of unit tests in the \tests\ directory using the Fet framework to verify the correct CSS generation for a wide range of features. These tests cover CSS properties including accent-color, all, animation, appearance, aspect-ratio, background (colors, images, gradients, positions, origins, clips), borders (shorthand, styles, individual sides), box-shadow, caret-color, clear, and clip-path (shapes, insets, and rounding). The suite also validates attribute selectors, ensuring correct generation for has, exact matches, and contains matches with various selectors and case sensitivity options.
tests · high confidence
Dependencies
Upgrade to .NET 10.0 and Fable 4 with Vite documentation build
The project has upgraded its target framework to .NET 10.0 across all components, including the core library, integration packages (Fable, Feliz, Falco, Giraffe), and the documentation site. The Fable compiler dependency has been updated to version 4.5.0, and the build system has shifted from Webpack to Vite for the documentation site, utilizing the new \dotnet fable\ CLI integration. Additionally, the test runner has been migrated from Mocha to Fet, and the benchmarking tool has been updated to BenchmarkDotNet 0.15.8.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 69 → 60 (-8.6)
- Rubric changed (rubric-2026.09.13 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 89 → 89 (-0.1)
- Architecture 100 → 91 (-8.9)
- Maturity 54 → 54 (-0.1)
- Readiness 70 → 70 (+0.0)
- Security 100 → 100 (+0.0)
- Accessibility 50 (new)
- Performance 95 (new)
Resolved (1)
- Documentation: no installation or build instructions (README.md)
New (3)
- Duplicated block (11–12 lines × 2) (Fss.Core/Types/Background.fs)
- Duplicated block (12 lines × 2) (Fss.Core/Types/Border.fs)
- Projects may be oversized for their cohesion
Architecture
- Unchanged — 0 containers · 3 contexts · 1 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Bjorn-Strom/FSS was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 1a9b3442c054a8c71e3b8d6495778a193a00e99b — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-351388015767.