From 70e9e4b783589b9bcaa2247f10638e9251628bb9 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Sun, 16 Nov 2025 13:55:49 -0500 Subject: [PATCH 1/9] content: #255 state of greenwood (2025) blog post --- src/pages/blog/state-of-greenwood-2025.md | 130 ++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 src/pages/blog/state-of-greenwood-2025.md diff --git a/src/pages/blog/state-of-greenwood-2025.md b/src/pages/blog/state-of-greenwood-2025.md new file mode 100644 index 00000000..237781b1 --- /dev/null +++ b/src/pages/blog/state-of-greenwood-2025.md @@ -0,0 +1,130 @@ +--- +title: State of Greenwood (2025) +abstract: If you can believe, it's time for our annual year end roundup one again! +published: 2025-12-02 +coverImage: /assets/greenwood-logo-g.svg +layout: blog +--- + +# State of Greenwood (2025) + +Published: Dec XXX, 2025 + +Greenwood Logo + +TODO: + + + +## The Year In Review + +### TypeScript Support + +Greenwood now provides built-in support for TypeScript, with the ability to fallback to using `tsc` if certain TypeScript features you're using (like Decorators, [enums, namespaces, etc](https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/#the---erasablesyntaxonly-option)) are not supported through just type stripping alone. This was motivated in part due to NodeJS adding support out of the box. This means you can write your entire project, including SSR pages and API routes, entirely in TypeScript with no configuration required! + +This also means that you can author your Greenwood configuration files and plugins with TypeScript too: + +```ts +// greenwood.config.ts +import type { Config } from "@greenwood/cli"; + +const config: Config = { + // ... +}; + +export default config; +``` + +For actual _type-checking_, below is Greenwood's recommended _tsconfig.json_ settings so that you can run `tsc` during CI. + + + +```json5 +{ + "compilerOptions": { + // minimum required configuration + "target": "es2020", + "module": "preserve", + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "noEmit": true, + + // additional recommended configuration + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "verbatimModuleSyntax": true, + "erasableSyntaxOnly": true, + }, + + "exclude": ["./public/", "./greenwood/", "node_modules"], +} +``` + + + +> Check out our [TypeScript docs](/docs/resources/typescript/) to learn more about getting setup with TypeScript and Greenwood. + +### New Project Scaffolding + +The Init scaffolding CLI got an major overhaul this year, moving to a more robust, prompt based experience that will walk you through a number of options for creating and customizing your next Greenwood project. Now, when scaffolding out a new Greenwood project, you're able to specify the name / output directory, support for TypeScript, and package manager. + + + +It's as easy as running: + +```shell +$ npx @greenwood/init@latest +``` + +> Read [the docs](/docs/introduction/setup/#init) to get started with your next Greenwood project today. + +### AWS Adapter + +This year we released an official adapter plugin for generating Lambda compatible function code for your SSR pages and API routes with AWS. ☁️ + +SimplY install the plugin and add it to your Greenwood config file: + +```js +import { greenwoodPluginAdapterAws } from "@greenwood/plugin-adapter-aws"; + +export default { + plugins: [greenwoodPluginAdapterAws()], +}; +``` + +Taking into consideration that there are many methods and options for deploying to AWS, this adapter plugin is primarily focused on generating consistent and predictable build output that can be complimented by some form of [**IaC (Infrastructure as Code)**](https://en.wikipedia.org/wiki/Infrastructure_as_code) or deployment tooling of your choice. The build output will look similar to Greenwood's own [standard build output](/docs/reference/appendix/#build-output) and will be available in the _.aws-output/_ folder at the root of your project after running the build command. + +> To learn more, you can read our [v0.32.0 release blog post](https://greenwoodjs.dev/blog/release/v0-32-0/#aws-adapter) and checkout [the docs](https://greenwoodjs.dev/guides/hosting/aws/#serverless) to get started. + +## The Year Ahead + +TODO: + +Now that we've got our new website launch behind us, the Greenwood team is very eager to wrap up our current efforts to release v0.34.0 and ongoing march towards a 1.0 release. + +--- + +We hope to complete this effort over the next couple of months with the hope to spend the rest of our time in 2025 burning down our [1.0 milestone](https://github.com/ProjectEvergreen/greenwood/milestone/3). + +## In Closing + +Greenwood wants to be there every step of the way to help you get the most out of the web and ensure you have full ownership of your code and content. From SPA to SSG to SSR and everything in between, building vanilla or with friends, we want Greenwood to run wherever the web can run so the choice can always be yours. + +Please come join us on [GitHub](https://github.com/ProjectEvergreen/greenwood) and [Discord](/discord/) and we can't wait to see what you build with Greenwood! Project Evergreen logo From 5650b9f01e40a7108106a5d8a4fb96dd8e192bac Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Sun, 23 Nov 2025 13:46:30 -0500 Subject: [PATCH 2/9] content: #255 intro --- src/pages/blog/state-of-greenwood-2025.md | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/pages/blog/state-of-greenwood-2025.md b/src/pages/blog/state-of-greenwood-2025.md index 237781b1..e8e1b46f 100644 --- a/src/pages/blog/state-of-greenwood-2025.md +++ b/src/pages/blog/state-of-greenwood-2025.md @@ -1,6 +1,6 @@ --- title: State of Greenwood (2025) -abstract: If you can believe, it's time for our annual year end roundup one again! +abstract: If you can believe it, it's time for our annual year end review once again! published: 2025-12-02 coverImage: /assets/greenwood-logo-g.svg layout: blog @@ -8,7 +8,7 @@ layout: blog # State of Greenwood (2025) -Published: Dec XXX, 2025 +Published: Dec XX, 2025 -TODO: - - +Now, on to the year in review! 👇 ## The Year In Review @@ -117,11 +114,7 @@ Taking into consideration that there are many methods and options for deploying TODO: -Now that we've got our new website launch behind us, the Greenwood team is very eager to wrap up our current efforts to release v0.34.0 and ongoing march towards a 1.0 release. - ---- - -We hope to complete this effort over the next couple of months with the hope to spend the rest of our time in 2025 burning down our [1.0 milestone](https://github.com/ProjectEvergreen/greenwood/milestone/3). +The Greenwood team is very eager to wrap up our current efforts to release v0.34.0 and continue our ongoing march towards a [1.0 release](https://github.com/ProjectEvergreen/greenwood/milestone/3). ## In Closing From c232513e0e67d706fe266aa46e51e581a5ad9c6e Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Sun, 23 Nov 2025 14:07:08 -0500 Subject: [PATCH 3/9] content: #255 year ahead drafting --- src/pages/blog/state-of-greenwood-2025.md | 53 ++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/src/pages/blog/state-of-greenwood-2025.md b/src/pages/blog/state-of-greenwood-2025.md index e8e1b46f..48afda3e 100644 --- a/src/pages/blog/state-of-greenwood-2025.md +++ b/src/pages/blog/state-of-greenwood-2025.md @@ -112,7 +112,58 @@ Taking into consideration that there are many methods and options for deploying ## The Year Ahead -TODO: +As the team looks to the coming year ahead, we're currently in progress on the next Greenwood release; [v0.34.0](https://github.com/ProjectEvergreen/greenwood/issues/1597), which we aim to release with a key feature being dynamic routes, which will allow file-system based routing like below, including for our serverless adapter plugins: + +```shell +src/ + pages/ + blog/ + [slug].js +``` + +Although dependent on compatibility and upstream needs on these platforms and runtimes, we are actively working on **Bun** runtime support as well as an official **Cloudflare** adapter. Both of these are in various stages of development and testing, and we hope to close out our current ecosystem milestone with by delivering on them in some capacity. + +Lastly, and already [supported in **WCC**](https://merry-caramel-524e61.netlify.app/docs/#tsx), TSX support will be coming to Greenwood for scripts and SSR pages, enabling JSX for templating through a custom `render` function, enabling **type-safe** HTML! + +```tsx +export default class Card extends HTMLElement { + selectItem() { + alert(`selected item is => ${this.title}!`); + } + + connectedCallback() { + if (!this.shadowRoot) { + this.thumbnail = this.getAttribute("thumbnail"); + this.title = this.getAttribute("title"); + + this.attachShadow({ mode: "open" }); + this.shadowRoot.adoptedStyleSheets = [sheet]; + + this.render(); + } + } + + render() { + const { thumbnail, title } = this; + + return ( +
+

{title}

+ {title} + +
+ ); + } +} + +customElements.define("x-card", Card); +``` + + + +--- The Greenwood team is very eager to wrap up our current efforts to release v0.34.0 and continue our ongoing march towards a [1.0 release](https://github.com/ProjectEvergreen/greenwood/milestone/3). From 9a11b8bde6ffb8a3e3129fe33fa65e6e948aab9c Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Sun, 23 Nov 2025 14:09:44 -0500 Subject: [PATCH 4/9] content: #255 tsx demo repo link --- src/pages/blog/state-of-greenwood-2025.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/blog/state-of-greenwood-2025.md b/src/pages/blog/state-of-greenwood-2025.md index 48afda3e..ec7c0259 100644 --- a/src/pages/blog/state-of-greenwood-2025.md +++ b/src/pages/blog/state-of-greenwood-2025.md @@ -163,6 +163,8 @@ customElements.define("x-card", Card); +> You can see a preview of this upcoming work in [this demonstration repo](https://github.com/thescientist13/greenwood-jsx). + --- The Greenwood team is very eager to wrap up our current efforts to release v0.34.0 and continue our ongoing march towards a [1.0 release](https://github.com/ProjectEvergreen/greenwood/milestone/3). From 477bbcc726b0390da8d3662348f78978f7e28293 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Mon, 15 Dec 2025 20:47:24 -0500 Subject: [PATCH 5/9] content: #255 final draft --- src/pages/blog/state-of-greenwood-2025.md | 28 ++++++++++++----------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/pages/blog/state-of-greenwood-2025.md b/src/pages/blog/state-of-greenwood-2025.md index ec7c0259..354aa135 100644 --- a/src/pages/blog/state-of-greenwood-2025.md +++ b/src/pages/blog/state-of-greenwood-2025.md @@ -19,11 +19,11 @@ layout: blog /assets/blog/greenwood-logo-1000w.webp 1000w, /assets/blog/greenwood-logo-1500w.webp 1500w"/> -Looking back on the past year since our [previous end of year post for 2024](https://greenwoodjs.dev/blog/state-of-greenwood-2024/), the Greenwood team held true to its promise ensuring a broad set of ecosystem compatibility around import map generation, adapters, and package managers, as well as continuing our participation in related standards and community groups. +Looking back on this past year since our previous [end of year post](https://greenwoodjs.dev/blog/state-of-greenwood-2024/), the Greenwood team held true to its promise in ensuring a broad set of ecosystem compatibility around import map generation, hosting adapters, and package managers, as well as continuing our participation in related standards and community groups. Greenwood was even featured in the latest episode of [Shop Talk Show](https://youtu.be/CuBKsa92nL0?si=Iq4adydliQ3ksN03&t=2775)! -For component libraries, you can see demonstrations of using Greenwood with [**Spectrum Web Components**](https://github.com/thescientist13/greenwood-lit-ssr/tree/demo-spectrum), [the **USWDS**](https://github.com/thescientist13/greenwood-lit-ssr/tree/demo-uswds), and [**Web Awesome**](https://github.com/thescientist13/greenwood-lit-ssr/tree/web-awesome). All of these help further refine and validate Greenwood's capabilities for generating import maps, inlining and bundling CSS and package manager support; all in the pursuit of making sure you can always use your favorite library with Greenwood as simply as running `npm i`. In addition, we've created demonstration repos for using Greenwood with [**tRCP**](https://github.com/thescientist13/greenwood-trpc) and [**Lume**](https://github.com/thescientist13/greenwood-lume) (still dependent on upcoming changes in v0.34.0). +For component libraries, you can see demonstrations of using Greenwood with [**Spectrum Web Components**](https://github.com/thescientist13/greenwood-lit-ssr/tree/demo-spectrum), [the **USWDS**](https://github.com/thescientist13/greenwood-lit-ssr/tree/demo-uswds), and [**Web Awesome**](https://github.com/thescientist13/greenwood-lit-ssr/tree/web-awesome). These demonstration projects helped further refine and validate Greenwood's capabilities for generating import maps, inlining and bundling of CSS, and supporting the most popular package managers in the ecosystem; all in the pursuit of making sure you can always use your favorite library with Greenwood as simply as running `npm i`. In addition, we've created demonstration repos for using Greenwood with [**tRCP**](https://github.com/thescientist13/greenwood-trpc) and [**Lume**](https://github.com/thescientist13/greenwood-lume) (still dependent on upcoming features coming in our [v0.34.0](https://github.com/ProjectEvergreen/greenwood/issues/1597) release). -On the community side, we were happy to see the WinterCG [graduate and become an official ECMA Technical Committee group](https://www.w3.org/community/wintercg/2025/01/10/goodbye-wintercg-welcome-wintertc/) as the [WinterTC(55)](https://ecma-international.org/technical-committees/tc55/). Promoting standards for both the web and sever-side JavaScript runtimes is a valuable and meaningful vision and effort for the Greenwood team, and are happy to participate and contribute to the WinterTC and the [WCCG (Web Components Community Group)](https://www.w3.org/community/webcomponents/). +On the community side, we were happy to see the WinterCG [graduate and become an official ECMA Technical Committee group](https://www.w3.org/community/wintercg/2025/01/10/goodbye-wintercg-welcome-wintertc/) as the [WinterTC(55)](https://ecma-international.org/technical-committees/tc55/). Promoting standards for both the web and sever-side JavaScript runtimes is a valuable and meaningful vision and effort for the Greenwood team, and we are happy to participate and contribute to the WinterTC and the [WCCG (Web Components Community Group)](https://www.w3.org/community/webcomponents/). We hope these initiatives and improvements over the past year have worked to make Greenwood even better for building websites so please feel free to share your thoughts and feedback with us. @@ -33,7 +33,7 @@ Now, on to the year in review! 👇 ### TypeScript Support -Greenwood now provides built-in support for TypeScript, with the ability to fallback to using `tsc` if certain TypeScript features you're using (like Decorators, [enums, namespaces, etc](https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/#the---erasablesyntaxonly-option)) are not supported through just type stripping alone. This was motivated in part due to NodeJS adding support out of the box. This means you can write your entire project, including SSR pages and API routes, entirely in TypeScript with no configuration required! +Greenwood now provides built-in support for TypeScript, with the ability to fallback to using `tsc` if certain TypeScript features you're using (like Decorators, [enums, namespaces, etc](https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/#the---erasablesyntaxonly-option)) are not supported through just type stripping alone. This was motivated in part due to NodeJS adding TypeScript (type-stripping) support out of the box. This means you can write your entire project, including SSR pages and API routes, entirely in TypeScript with no configuration required! This also means that you can author your Greenwood configuration files and plugins with TypeScript too: @@ -48,7 +48,7 @@ const config: Config = { export default config; ``` -For actual _type-checking_, below is Greenwood's recommended _tsconfig.json_ settings so that you can run `tsc` during CI. +For actual _type-checking_, below is Greenwood's recommended _tsconfig.json_ settings so that you can get full IDE support and so that you can run `tsc` during CI. @@ -96,7 +96,7 @@ $ npx @greenwood/init@latest This year we released an official adapter plugin for generating Lambda compatible function code for your SSR pages and API routes with AWS. ☁️ -SimplY install the plugin and add it to your Greenwood config file: +Simply install the plugin and add it to your Greenwood config file: ```js import { greenwoodPluginAdapterAws } from "@greenwood/plugin-adapter-aws"; @@ -112,7 +112,7 @@ Taking into consideration that there are many methods and options for deploying ## The Year Ahead -As the team looks to the coming year ahead, we're currently in progress on the next Greenwood release; [v0.34.0](https://github.com/ProjectEvergreen/greenwood/issues/1597), which we aim to release with a key feature being dynamic routes, which will allow file-system based routing like below, including for our serverless adapter plugins: +As the team looks to the coming year ahead, we're currently in progress on the next Greenwood release; [v0.34.0](https://github.com/ProjectEvergreen/greenwood/issues/1597), which we aim to release with a key feature; dynamic routes! Dynamic routes will allow file-system based routing like below for serving dynamic routing paths, and will be supported by all our serverless adapter plugins: ```shell src/ @@ -121,7 +121,13 @@ src/ [slug].js ``` -Although dependent on compatibility and upstream needs on these platforms and runtimes, we are actively working on **Bun** runtime support as well as an official **Cloudflare** adapter. Both of these are in various stages of development and testing, and we hope to close out our current ecosystem milestone with by delivering on them in some capacity. +This would serve any number of the following routes: + +- `/blog/my-first-post/` +- `/blog/my-second-post/` +- etc + +Additionally, and although dependent on compatibility and upstream needs on these platforms and runtimes, we are actively working on **Bun** runtime support as well as an official **Cloudflare** adapter. Both of these are in various stages of development and testing, and we hope to close out our current ecosystem milestone by delivering on them in some capacity. Lastly, and already [supported in **WCC**](https://merry-caramel-524e61.netlify.app/docs/#tsx), TSX support will be coming to Greenwood for scripts and SSR pages, enabling JSX for templating through a custom `render` function, enabling **type-safe** HTML! @@ -165,12 +171,8 @@ customElements.define("x-card", Card); > You can see a preview of this upcoming work in [this demonstration repo](https://github.com/thescientist13/greenwood-jsx). ---- - -The Greenwood team is very eager to wrap up our current efforts to release v0.34.0 and continue our ongoing march towards a [1.0 release](https://github.com/ProjectEvergreen/greenwood/milestone/3). - ## In Closing -Greenwood wants to be there every step of the way to help you get the most out of the web and ensure you have full ownership of your code and content. From SPA to SSG to SSR and everything in between, building vanilla or with friends, we want Greenwood to run wherever the web can run so the choice can always be yours. +The Greenwood team is very eager to wrap up our current efforts to release v0.34.0 and continue our ongoing march towards a [1.0 release](https://github.com/ProjectEvergreen/greenwood/milestone/3). Greenwood wants to be there every step of the way to help you get the most out of the web and ensure you have full ownership of your code and content. From SPA to SSG to SSR and everything in between, building vanilla or with friends, we want Greenwood to run wherever the web can run so the choice can always be yours. Please come join us on [GitHub](https://github.com/ProjectEvergreen/greenwood) and [Discord](/discord/) and we can't wait to see what you build with Greenwood! Project Evergreen logo From e92f2e1f27c8565bad16b0a6a44f2f2ddcefd4b2 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Mon, 15 Dec 2025 20:49:49 -0500 Subject: [PATCH 6/9] content: #255 update home page latest post link --- src/pages/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/index.md b/src/pages/index.md index 65d30737..dde731f0 100644 --- a/src/pages/index.md +++ b/src/pages/index.md @@ -10,7 +10,7 @@ imports: - ../styles/home.css --- - + From 1a96894510f64527318fe308167d372648553cc8 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Mon, 15 Dec 2025 20:50:53 -0500 Subject: [PATCH 7/9] content: #255 add planned publish date --- src/pages/blog/state-of-greenwood-2025.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/blog/state-of-greenwood-2025.md b/src/pages/blog/state-of-greenwood-2025.md index 354aa135..5c8759ac 100644 --- a/src/pages/blog/state-of-greenwood-2025.md +++ b/src/pages/blog/state-of-greenwood-2025.md @@ -1,7 +1,7 @@ --- title: State of Greenwood (2025) abstract: If you can believe it, it's time for our annual year end review once again! -published: 2025-12-02 +published: 2025-12-19 coverImage: /assets/greenwood-logo-g.svg layout: blog --- From 603fd141935525c6ec94fce9809df3f705b54b51 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Mon, 15 Dec 2025 21:01:10 -0500 Subject: [PATCH 8/9] content: #255 bold shop talk show --- src/pages/blog/state-of-greenwood-2025.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/blog/state-of-greenwood-2025.md b/src/pages/blog/state-of-greenwood-2025.md index 5c8759ac..c945afba 100644 --- a/src/pages/blog/state-of-greenwood-2025.md +++ b/src/pages/blog/state-of-greenwood-2025.md @@ -19,7 +19,7 @@ layout: blog /assets/blog/greenwood-logo-1000w.webp 1000w, /assets/blog/greenwood-logo-1500w.webp 1500w"/> -Looking back on this past year since our previous [end of year post](https://greenwoodjs.dev/blog/state-of-greenwood-2024/), the Greenwood team held true to its promise in ensuring a broad set of ecosystem compatibility around import map generation, hosting adapters, and package managers, as well as continuing our participation in related standards and community groups. Greenwood was even featured in the latest episode of [Shop Talk Show](https://youtu.be/CuBKsa92nL0?si=Iq4adydliQ3ksN03&t=2775)! +Looking back on this past year since our previous [end of year post](https://greenwoodjs.dev/blog/state-of-greenwood-2024/), the Greenwood team held true to its promise in ensuring a broad set of ecosystem compatibility around import map generation, hosting adapters, and package managers, as well as continuing our participation in related standards and community groups. Greenwood was even featured in the latest episode of [**Shop Talk Show**](https://youtu.be/CuBKsa92nL0?si=Iq4adydliQ3ksN03&t=2775)! For component libraries, you can see demonstrations of using Greenwood with [**Spectrum Web Components**](https://github.com/thescientist13/greenwood-lit-ssr/tree/demo-spectrum), [the **USWDS**](https://github.com/thescientist13/greenwood-lit-ssr/tree/demo-uswds), and [**Web Awesome**](https://github.com/thescientist13/greenwood-lit-ssr/tree/web-awesome). These demonstration projects helped further refine and validate Greenwood's capabilities for generating import maps, inlining and bundling of CSS, and supporting the most popular package managers in the ecosystem; all in the pursuit of making sure you can always use your favorite library with Greenwood as simply as running `npm i`. In addition, we've created demonstration repos for using Greenwood with [**tRCP**](https://github.com/thescientist13/greenwood-trpc) and [**Lume**](https://github.com/thescientist13/greenwood-lume) (still dependent on upcoming features coming in our [v0.34.0](https://github.com/ProjectEvergreen/greenwood/issues/1597) release). From 4671d10625a1c2b988acaa122e59a2160ae4ad21 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Thu, 18 Dec 2025 22:06:57 -0500 Subject: [PATCH 9/9] content: #255 update post date heading --- src/pages/blog/state-of-greenwood-2025.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/blog/state-of-greenwood-2025.md b/src/pages/blog/state-of-greenwood-2025.md index c945afba..e5cdaed3 100644 --- a/src/pages/blog/state-of-greenwood-2025.md +++ b/src/pages/blog/state-of-greenwood-2025.md @@ -8,7 +8,7 @@ layout: blog # State of Greenwood (2025) -Published: Dec XX, 2025 +Published: Dec 19, 2025