diff --git a/.changeset/itchy-guests-perform.md b/.changeset/itchy-guests-perform.md
new file mode 100644
index 000000000000..1d17db5a583c
--- /dev/null
+++ b/.changeset/itchy-guests-perform.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/image': patch
+---
+
+Specify sharp as optional peer dependency
diff --git a/.changeset/odd-elephants-argue.md b/.changeset/odd-elephants-argue.md
new file mode 100644
index 000000000000..cb69ae27043e
--- /dev/null
+++ b/.changeset/odd-elephants-argue.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/markdown-remark': patch
+---
+
+Fix non-hoisted remark/rehype plugin loading
diff --git a/.changeset/silver-rats-know.md b/.changeset/silver-rats-know.md
new file mode 100644
index 000000000000..9d0517c9f65c
--- /dev/null
+++ b/.changeset/silver-rats-know.md
@@ -0,0 +1,15 @@
+---
+'astro': patch
+'@astrojs/image': patch
+'@astrojs/mdx': patch
+'@astrojs/netlify': patch
+'@astrojs/preact': patch
+'@astrojs/rss': patch
+'@astrojs/svelte': patch
+'@astrojs/tailwind': patch
+'@astrojs/vue': patch
+'@astrojs/markdown-remark': patch
+'@astrojs/telemetry': patch
+---
+
+Add missing dependencies, support strict dependency installation (e.g. pnpm)
diff --git a/.changeset/young-pens-lick.md b/.changeset/young-pens-lick.md
new file mode 100644
index 000000000000..3dcb03925040
--- /dev/null
+++ b/.changeset/young-pens-lick.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/rss': patch
+---
+
+Remove path-browserify dependency
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c0892d832c99..ee5e559016df 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -207,8 +207,9 @@ jobs:
repository: withastro/docs
path: smoke/docs
+ # NOTE: remove shamefully-hoist when docs is also not hoisted
- name: Install dependencies
- run: pnpm install --no-frozen-lockfile
+ run: pnpm install --no-frozen-lockfile --shamefully-hoist
- name: Build Packages
run: pnpm run build
diff --git a/.npmrc b/.npmrc
index d00b700b8bd4..28128c1daa06 100644
--- a/.npmrc
+++ b/.npmrc
@@ -4,19 +4,13 @@ link-workspace-packages=true
save-workspace-protocol=false # This prevents the examples to have the `workspace:` prefix
auto-install-peers=false
-shamefully-hoist=true
-# TODO: We would like to move to individual opt-in hoisting, but Astro was not originally
-# written with this in mind. In the future, it would be good to hoist individual packages only.
-# public-hoist-pattern[]=autoprefixer
-# public-hoist-pattern[]=astro
-# public-hoist-pattern[]=remark-*
-# public-hoist-pattern[]=rehype-*
-# public-hoist-pattern[]=react
-# public-hoist-pattern[]=react-dom
-# public-hoist-pattern[]=preact
-# public-hoist-pattern[]=preact-render-to-string
-# public-hoist-pattern[]=vue
-# public-hoist-pattern[]=svelte
-# public-hoist-pattern[]=solid-js
-# public-hoist-pattern[]=lit
-# public-hoist-pattern[]=@webcomponents/template-shadowroot
+# `github-slugger` is used by `vite-plugin-markdown-legacy`.
+# Temporarily hoist this until we remove the feature.
+public-hoist-pattern[]=github-slugger
+# Vite's esbuild optimizer has trouble optimizing `@astrojs/lit/client-shim.js`
+# which imports this dependency.
+public-hoist-pattern[]=@webcomponents/template-shadowroot
+# On Windows, `svelte-preprocess` can't import `svelte/compiler`. Might be a pnpm bug.
+public-hoist-pattern[]=svelte
+# There's a lit dependency duplication somewhere causing multiple Lit versions error.
+public-hoist-pattern[]=*lit*
diff --git a/examples/basics/.npmrc b/examples/basics/.npmrc
deleted file mode 100644
index ef83021af3ec..000000000000
--- a/examples/basics/.npmrc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Expose Astro dependencies for `pnpm` users
-shamefully-hoist=true
diff --git a/examples/basics/src/components/Card.astro b/examples/basics/src/components/Card.astro
index a87ab7291e38..ee57d4df4010 100644
--- a/examples/basics/src/components/Card.astro
+++ b/examples/basics/src/components/Card.astro
@@ -20,57 +20,43 @@ const { href, title, body } = Astro.props;
diff --git a/examples/basics/src/layouts/Layout.astro b/examples/basics/src/layouts/Layout.astro
index 5c724bfdd76c..f1a62a537b7d 100644
--- a/examples/basics/src/layouts/Layout.astro
+++ b/examples/basics/src/layouts/Layout.astro
@@ -19,40 +19,15 @@ const { title } = Astro.props;