Skip to content

Releases: solidjs/solid-start

@solidjs/start@1.1.5

19 Jun 18:25
5d0c44e
Compare
Choose a tag to compare

Patch Changes

  • 2bae61e: fix infinite loop on unexpected response from server function (issue #1898)
  • bb5eaef: bump vinxi to latest AND pin @tanstack/server-functions-plugin to 1.121.21

@solidjs/start@1.1.4

12 May 14:17
7030a13
Compare
Choose a tag to compare

Patch Changes

  • #1888: Add back support for generators in server functions

@solidjs/start@1.1.3

03 Mar 22:36
a696b99
Compare
Choose a tag to compare

Patch Changes

  • ffd7cba: fix nested route with escaping resolved incorrectly (#1829).
    before /routes/nested/(ignored)route.tsx resolved to /nestedroute,
    and now it resolves to /nested/route.

@solidjs/start@1.1.2

03 Mar 02:39
4c26a2f
Compare
Choose a tag to compare

Patch Changes

  • 0c9bc47: Fix issue with anonymous default exports
  • 26e97be: Fix ssr for tanstack router

v1.1.1 - Constantly Exported

13 Feb 19:33
e3b9073
Compare
Choose a tag to compare

Patch Changes

  • efd762e: Bump tanstack server functions plugin
    This fixes export const in top-level "use server" files.
    The bundler warning for top-level "use server" is still there, but still code-removal works.

v1.1.0 - Gear 5

10 Feb 19:01
2683e26
Compare
Choose a tag to compare

gear 5

At last our first post 1.0 minor release!!

It took us some time but it is an important one. It includes the update to Vite 6 along with tons of bug fixes around Server functions. But the most important thing is over this time we've doubled down to make sure that we have a proper team supporting this project. This includes setting up the people and infrastructure for SolidStart to work independently from the core project. So we are cranking stuff up to Gear 5 to improve our release cadence and overall responsiveness.

We've been working very closely with @tannerlinsley and the Tanstack Start team in ushering the future of Metaframeworks and I'd almost call it one shared team at this point. That's the direction things are heading. These are more than sister projects but part of a unified picture for the future. More details of that will be revealed as the is collaboration continues.

Huge thanks to the SolidStart team for making this all possible: @birkskyum, @atilafassina, @katywings, @brenelz. PRs from @christhornham, @AirBorne04, @edivados, @loetjvr. As well as continued support from core team members @lxsmnsyc and @nksaraf.

Enjoy!
@ryansolid

Minor Changes

  • 4ec5d9b: - Added "OPTIONS" to the HTTP_METHODS array in packages/start/config/fs-router.js.
    I made this change so developers can handle preflight OPTIONS requests when using SolidStart as a public facing REST API.
    Existing users will not have to change their code. This change only adds an additional feature.
  • b434665: Vite 6 support
  • 600c115: move the RequestEventLocals definition into the App namespace for easier end user retyping

Patch Changes

  • 00c6d33: update vinxi to 0.5.3

  • df32b0d: Await internal sendWebResponse calls for middlewares that return responses.

  • cda037b: Return 404 when server-function is not found

  • a97093f: Move getServerFunctionMeta from @solidjs/start/server to @solidjs/start to fix circular import issues.

    The old export at @solidjs/start/server still exists, but is deprecated and will be removed in a future release.

  • 5a166a4: Adopt tanstack server functions plugin

The Shape of Frameworks to Come

21 May 18:23
Compare
Choose a tag to compare

What can I say we made it! Over 3 years of effort here and we have a major release. When we started this journey we only vaguely had an outcome in mind. In the process we managed to yet again be a driving source for innovation in the ecosystem. I'm very proud of every single person involved in this release, from development to docs. As the title suggests. We(the community) are just getting started.

I would love to see a future where people build more opinionated frameworks on top of what we've done here. People carry the DX torch to the finish line. This will not be the last JS Framework, or even the last SolidJS framework. Change is inevitable. Be that change.

The full release announcement is here: https://www.solidjs.com/blog/solid-start-the-shape-frameworks-to-come

@ryansolid

v1.0 RC - Clown Town

21 Mar 22:38
Compare
Choose a tag to compare

When we released SolidStart Beta it was a celebration of all the libraries and frameworks that inspired us. There have been so many other frameworks exploring this space alongside us. We have learned so much from them. A year and a half later, I'd like to think that in turn we've influenced them as well.

This release is dedicated to all those who have contributed to getting us here. Everyone who tested builds, reported issues, made PRs (even the ones we didn't merge). We wouldn't have made it to this point without all of them. This release is for them so that the next can be for all of you. We've reached a release candidate for 1.0!

We've learned a lot along the way. The name of this release is a throwback to an early moment in the project's history that had a profound and important impact on how we operate. While I don't wish to rehash, I will say it changed the way we looked at our work in open source and challenged each of us to decide what it meant for us publically and personally.

So today with our goals in sight, we lay this one to rest, and thank everyone who has ever contributed to the project. Not everyone who started on this road with us is still with us. That is the life of volunteering and open source. But you have our (and my) thanks:

@nksaraf, @nsarafpure, @lxsmnsyc, @birkskyum, @ghalle, @edivados, @Jutanium, @davedbase, @femincan, @btakita, @OrJDev, @boehs, @lightyaer, @G3root, @caseybaggz, @Brendonovich, @fezproof, @atk, @arbassett, @fictitious, @benbender, @mhyfritz, @emdede, @frenzzy, @Zachiah, @utkukaratas, @marvin-j97, @pawelblaszczyk5, @katywings, @harshmangalam, @jzohdi, @IvanLisz, @rrosas1198, @doeixd, @orenelbaum, @AlexErrant, @ch99q, @devinrhode2, @knpwrs, @timotius02, @m4rvr, @paularmstrong, @ryanseipp, @rturnq, @skreutzberger, @leaysgur, @samualtnorman, @pan93412, @uncenter, @sapphi-red, @indeyets, @u1in, @AirBorne04, @ajcwebdev, @alexandre-mb-airweb, @rvlzzr, @arnvgh, @brenelz, @fabian-hiller, @feynmanliang, @iainsimmons, @jceb, @leoj3n, @jorroll, @jchatard, @obask, @LiQuidProQuo, @ryoid, @rpivo, @samcfinan, @SirSerje, @simbas, @yume-chan, @soorria, @xstevenyung, @Tanner-Scadden, @painotpi, @Tommypop2, @ticianomorvan, @Nimaear, @russelgal, @ricardo-devis-agullo, @quentindutot, @dertieran, @petebacondarwin, @phouverneyuff, @patdx, @oscartbeaumont, @itsyoboieltr, @nas5w, @TooTallNate, @NathanHuisman, @Maxobat, @33KK, @dayvster, @zimonitrome, @xbmlz, @wimbarelds, @webfolderio, @vaishnav-mk, @stereobooster, @spicyzboss, @shivanshubisht, @nullableVoidPtr, @nirtamir2, @muslax, @markdalgleish, @guyo13, @gunnnnii, @ddPn08, @DaveMadden, @eryue0220, @bherbruck, @aronmal, @yonran, @yoavbls, @stickyburn, @progamesigner, @Wilaz, @vladrose, @viniciuspjardim, @TimWillebrands, @cstrnt, @thdxr, @davycoe, @danieltroger, @thetarnav, @clabinger, @colinhacks, @colbyfayock, @chrisbirster, @chobe, @charkour, @CWSpear, @seeplusplus, @burhanuday, @benmccann, @gBasil, @baristikir, @amorriscode, @afjlambert, @yurisich, @ammarriq, @ahkhanjani, @MASTERAMARJEET, @AlexMercedCoder, @albertoforni, @acerempel, @afonsojramos, @AdvTechnoKing, @adipascu, @luca-rath, @lawrencecchen, @Lalit3716, @K-Sato1995, @juliusmarminge, @jpmaga, @jhdcruz, @jgibo, @JoosepAlviste, @jtag05, @jqhr, @JesusP2, @BigDog1400, @ikapo, @xania, @iainmerrick, @golamrabbiazad, @garrett-hopper, @pureliani, @gabrielmfern, @fwang, @FoxtrotPerry, @Feel-ix-343, @erikrahm, @emilbonnek, @ehsanonline, @dudusotero, @MrFoxPro, @superbull, @BierDav, @haseeb5555, @XiNiHa, @AlbertSabate, @lukaprsina, @dev-rb, @Chojecki, @Vexcited, @paoloricciuti, @nexxeln, @sakhnyuk, @cohenerickson, @kkharji, @alxarch, @LukeSheard, @modderme123, @vsbyvi, @amitdahan, @quantuminformation, @fabien0102, @Budmin, @opudalo, @Bersaelor, @shorkyw, @blackvibe, @petercorrea, @HatulaPro, @rtritto, @huijiewei, @murphye, @sashoism, and anyone else we may have missed.

We'd also like to thank those that have invested financially with us as you are a big part of making this release happen. Especially Netlify, Google Chrome, JetBrains, Builder.io, Northlabs, Stytch, Breek, Monogram, csel.co.nk, divRIOTS, Vercel, Bumi, Clearspend, OSLabs and 402.

There are still a few more things to get in line for the 1.0 release. We are still expecting some bugs, and the official SolidJS docs for SolidStart are still under construction. But we are well on our way. I look forward to pushing this across the finish line in the coming weeks.

Thank you for your support and encouragement.

@ryansolid and Solid Core Team

v0.7.0 - Calm Before the Storm

08 Mar 20:45
Compare
Choose a tag to compare

This is a smaller release that doesn't fundamentally change anything you are already doing in Solid Start but it needed to happen since there were some circular dependency issues and I used this as an opportunity to cleanup some of the config. So this release is very much a precursor to us getting to 1.0 RC candidates. If you have been watching the repo the issue count is down to the lowest it has ever been (even after I went issue bankrupt with Beta 1). We've been slowly getting key enhancements in and fixing bugs. There are a couple things outstanding like the ultimate decision on Base Path and some weird cache issues during HMR but the general behavior is coming together nicely.

Changes

FileRoutes have moved

Honestly I should have done this ages ago but we just keep getting weird circular deps issues due to them. Now they are their own export. This means changing your entry point import to:

import { FileRoutes } from "@solidjs/start/router";

But this should address a lot of the weirdness there.

Support for breaking out of nested routes

Sometimes you don't want to nest routes. Now you can represent paths with "." to avoid matching with parents. For example if you had users listing page under "/users" and you wanted the details to be under "/user/:id" but they don't share a layout or data fetching. Now you can name your files.

users.tsx
users.[id].tsx

And they won't try to nest. These can also each be their own nested routes as well by using "." notation on folders. Thanks to Remix V1 router for the inspiration, and Vinxi for making this implementable in about 30 seconds.

UPDATE: The above API was replaced with a simpler mechanism we already have. You can use (name) to differentiate paths. The text between the paranthesis is not included on the path but it prevents nested matching.

users(list).tsx
users/
  - [id].tsx

getServerFunctionMeta

This is a specific helper but it is useful sometimes to get the underlying information about your running server function. You can do that now by calling this method. So far it only returns an id but it can help give you a stable reference across different environments this way. Thanks @katywings for making this happen.

import { getServerFunctionMeta } from "@solidjs/start/server";
 
// or some in-memory db
const appCache: any = globalThis;
 
const counter = async () => {
  "use server";
  const { id } = getServerFunctionMeta()!;
  const key = `counter_${id}`;
  appCache[key] = appCache[key] ?? 0;
  appCache[key]++;
 
  return appCache[key] as number;
};

Dropped Direct Interop with Solid's Request Event and H3

This is mostly unnecessary with our response wrapper and ALS. And was causing extra complication that was unnecessary. If you want to use Vinxi HTTP helpers or H3 utilities directly just use the .nativeEvent property on our Request Event.

Conclusion

There are another half a dozen smaller changes so see the changelog for more details. But things are getting closer. Thank you everyone who is participating in the beta and reporting issues. We appreciate your patience and look forward to your continued participation.

v0.6.0 - Take Flight

27 Feb 23:15
Compare
Choose a tag to compare

Listening carefully to the feedback and reflecting on the second month of beta 2 we have prepared this release which improves on a lot of the usability around Start itself. This is less about features and more about stabilization but I'm excited that one of the coolest features we've showed off in a while was developed in the process: Single Flight Mutations.

Single Flight Mutations

This feature is really a combined Start + Solid Router feature but it showcases off the power of server function protocol. Inspired by React Server Component's ability to send back the next page in the same request with their server actions, we have added the ability to instead send back the data for the next page(or refresh of the same page's data). And not just send it back in a blocking way but to stream it back as it is available.

So you can picture the classic listing page + details page setup. You can in an action update a details page and have it redirect back to the listings page. We can now do that in one request. The item will be saved and return a redirect, at which point it starts sending back the request however the body will contain the data for the next page streamed as it completes. Suspense will allow the browser to start redirecting before all the data has returned and each cache function resolve as its data comes in.

Try the Notes and TodoMVC examples to see this in action.

The best part is this requires no new API. No required code change on your part. Can still use all the features like optimistic updates etc... And it supports granular revalidation. While by default we will revalidate all the data on the next page, you can still use our revalidate options in our router helpers (reload, redirect, json) select only certain cache keys and we will honor that. We diff the knowledge of which cache keys are already available on the page so that while we won't fetch any data that isn't in the keys from existing cache, we will still fetch new data for the new page sections (if it is a redirect).

This works with SSR on or off so it is available to any project that supports Server functions.

Vite 5

v0.6.0 adds support for Vite 5. I admit this took us a while but we were working on a whole new build system with Vinxi. @nksaraf has done amazing work here and continues to push the envelope. Also thanks to @birkskyum for getting this rolling and testing the integration until it was ready to go.

We look forward to an even quicker dev experience and all the other goodies that come with the update.

vite.config -> app.config

A lot of people expressed confusion over the difference in options and settings and we decided you were right. In so we have stopped using vite.config.ts and instead opt for an app.config.ts. We have also updated the settings to be clearer. SolidStart's own settings are now top level and you will find the vite settings under a vite property. This allows more flexibility as Vite can be configured now per Vinxi router.

import { defineConfig } from "@solidjs/start/config";

export default defineConfig({
  ssr: false,
  server: {
    preset: "netlify"
  },
  vite(options) {
    if (options.router === "server") ....
    return { plugins: [] }
  }
});

We've added the ability to disable the dev overlay in dev so you can see the errors the way your users would in prod. We've also moved the ssr mode settings from the config to the runtime to handle more dynamic needs.

Handler Config as a Function

We've expanded the capability of handler config so that we can do my dynamic things at runtime. Things like switch between render modes. This way we can turn off streaming for bots etc.. Or applying a nonce based on the middleware configuration.

import { createHandler, StartServer } from "@solidjs/start/server";

export default createHandler(() => (
  <StartServer document={/*...*/} />
), (event) => {
  return { nonce: event.locals.nonce, mode: event.locals.isBot ? "async" : "stream"}
};

A Long and Steady Road

We've been at this for a while but things are consolidating nicely. We are now feature complete for SolidStart 1.0 so it is time to fix bugs and get docs going. If we based on the feedback of these recent changes I hope to have an RC out in the coming weeks. Thank you all for your patience and your support.

Best,
@ryansolid