Roadmap
What we plan to build next, in order. These are plans, not promises: priorities change when you tell us what hurts. Open or vote on an issue to move something up.
Released work is in the changelog; what NiteFx deliberately does not do is in Limits and non-goals.
0.9: safer and faster production builds
Small changes that close gaps in Limits and continue the security work in 0.8.
- Subresource integrity. Production scripts and the import map carry
integrityhashes, so a CDN or proxy that alters a bundle gets it refused by the browser. Pairs with the Content Security Policy support in 0.8. - Immutable caching for hashed files. Bundles, chunks and assets have content hashes in their names but are served with
no-cachetoday, which costs a304per file on every visit. They will be served asimmutableinstead. - A minimum release age for packages. A setting in
nite.json(for example"minimumReleaseAge": "3d") makesnite addandnite updatepass over versions published more recently than that. Malicious package versions are usually found and removed within days, so waiting a few days avoids most of them. ?rawand?urlimports, and SVGs imported as React components, for code coming from Vite.- Hosting under a path base. URLs inside production JavaScript and CSS (lazy chunks,
url()assets) work when the app is served from a subfolder such as/shop, not only from the site root.
0.10: knowing and fixing vulnerable packages
nite audit. Checks every package innite.lock.jsonagainst the npm advisory database and reports known vulnerabilities.nite buildcan fail on them above a severity you choose, so CI catches them.overrides. Pin a dependency of a dependency to a patched version without waiting for every package above it to release one. These two ship together: a report you cannot act on is only half a feature.
1.0: one set of types from C# to TypeScript
- Generated API types. ASP.NET Core already describes your endpoints as an OpenAPI document. In development, NiteFx will turn it into TypeScript types and a typed
fetchwrapper, and refresh them on every C# hot reload, so renaming a property on a C# record shows up as a type error in the TypeScript that uses it. The same will cover client config when it returns a named type. - A stable API. From 1.0, NiteFx follows semantic versioning for its whole public surface, not only
AddNite,UseNite,MapNiteSpa, the tag helpers andnite.json.
Not planned
These come up, and the answer is no for now, for these reasons:
- Platform-specific optional dependencies. NiteFx already fetches the right esbuild and Dart Sass binaries for each platform. Most other packages that need this are native Node addons, which cannot run in a browser. If a browser package you need depends on it, open an issue with its name.
- Built-in type checking. It needs Node, or a JavaScript interpreter that would make every save slow. Run
tsc --noEmitin your editor and CI; the generated API types in 1.0 add the checking NiteFx can do best. - Server-side rendering, and Vue, Svelte or other Vite plugins. See Limits and non-goals.
- A security-headers package. Headers like a Content Security Policy are your application's policy, and a library default is one nobody revisits. NiteFx gives you the hooks (
NiteOptions.CspNonce), andsamples/Nite.Identityshows a complete, strict setup to copy.