Repository: ViewComponent/view_component (Ruby)

Issue:
3.0.0 release candidate feedback
👋🏻 Hi folks! We've shipped a release candidate for ViewComponent v3. Please provide feedback in this issue ❤️ 


Discussion: I'm not seeing it https://rubygems.org/gems/view_component, did it get pushed?
@jcoyne It's in progress. I wanted to have this issue open to mention in the changelog. 🐔, 🥚 , etc.
@joelhawksley got it. Thanks.
I tried it. Looks good in general.

However, it would be great to have a solution for the forms-issue (ref. #1432 etc.) with this release... and if this means that the documentation just mentions the known and recommended workarounds.
Hey @tmaier, thanks for the reminder re: #1432. A semi-recent [change](https://github.com/rails/rails/pull/45731) to action view may actually make our job easier with respect to supporting form helpers. I tried running our [action view compatibility tests](https://github.com/ViewComponent/view_component/blob/main/test/sandbox/test/action_view_compatibility_test.rb) on Rails main, but they all failed, so the Rails change alone isn't enough. I'll try having a look at this in more depth tomorrow. Regardless, I don't think form helper compatibility should block the v3 release.
I found a minor issue that probably needs a breaking change to be fixed: https://github.com/ViewComponent/view_component/issues/1641. Would be nice to have a fix included in v3.
The most simple approach on #1432 is to improve documentation. I opened a small Pull Request (#1644).
I'm running a test against the RC, and I'm seeing a failure that would be explained by the collection counter param changing to a 0-indexed value rather than a 1-indexed value. Is that a documented change?

(EDIT: the tests are fine against 2.82.0 as far as I can see)
LOL yes, it is a documented change. Thanks!
The changelog says:

> Remove deprecated `rendered_component` in favor of `rendered_content`

But `rendered_content` is marked as `@private` and the deprecation message says to use `page` instead of `rendered_component` (although they're no exactly the same).
Happy to report that [tests pass on view_component-form](https://github.com/pantographe/view_component-form/pull/136), when running view_component `v3.0.0.rc1`!
Would v3 be a good point to discuss #1528 again to avoid Rails initialization-order problems?
We've been on 3.0 release candidate versions at Wrapbook for over a month now and so far no issues to report! Our biggest challenge to get from 2.0 to 3.0 was to switch to `with_` prefix for all the slot calls.

We did this by going component by component, converting and then changing it to raise exceptions in tests if the old style was used (via looking at the deprecation warning)... till we could eventually add that check at the `ApplicationComponent` level... then upgrade was easy at that point!



Fix (patch):
diff --git a/Gemfile.lock b/Gemfile.lock
index 5b3c6c359..46b36e593 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,7 +1,7 @@
 PATH
   remote: .
   specs:
-    view_component (3.0.0.rc6)
+    view_component (3.0.0)
       activesupport (>= 5.2.0, < 8.0)
       concurrent-ruby (~> 1.0)
       method_source (~> 1.0)
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index bccecb1d7..b6a165f97 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -10,13 +10,81 @@ nav_order: 5
 
 ## main
 
-* Add Topkey to list of companies using ViewComponent.
+### v3.0.0
 
-     *Bryan Beshore*
+1,000+ days and 100+ releases later, the 200+ contributors to ViewComponent are proud to ship v3.0.0!
+
+We're so grateful for all the work of community members to get us to this release. Whether it’s filing bug reports, designing APIs in long-winded discussion threads, or writing code itself, ViewComponent is built by the community, for the community. We couldn’t be more proud of what we’re building together :heart:
+
+This release makes the following breaking changes, many of which have long been deprecated:
+
+* BREAKING: Remove deprecated slots setter methods. Use `with_SLOT_NAME` instead.
+
+    *Joel Hawksley*
+
+* BREAKING: Remove deprecated SlotsV1 in favor of current SlotsV2.
+
+    *Joel Hawksley*
+
+* BREAKING: Remove deprecated `content_areas` feature. Use Slots instead.
+
+    *Joel Hawksley*
+
+* BREAKING: Remove deprecated support for loading ViewComponent engine manually. Make sure `require "view_component/engine"` is removed from `Gemfile`.
+
+    *Joel Hawksley*
+
+* BREAKING: Remove deprecated `generate_*` methods. Use `generate.*` instead.
+
+    *Joel Hawksley*
+
+* BREAKING: Remove deprecated `with_variant` method.
 
-* Add OBLSK & PLT4M to list of companies using ViewComponent.
+    *Joel Hawksley*
+
+* BREAKING: Remove deprecated `rendered_component` in favor of `rendered_content`.
+
+    *Joel Hawksley*
+
+* BREAKING: Remove deprecated `config.preview_path` in favor of `config.preview_paths`.
+
+    *Joel Hawksley*
 
-     *Mike Munroe*
+* BREAKING: Support Ruby 2.7+ instead of 2.4+
+
+    *Joel Hawksley*
+
+* BREAKING: Remove deprecated `before_render_check`.
+
+    *Joel Hawksley*
+
+* BREAKING: Change counter variable to start iterating from `0` instead of `1`.
+
+    *Frank S*
+
+* BREAKING: `#SLOT_NAME` getter no longer accepts arguments. This change was missed as part of the earlier deprecation in `3.0.0.rc1`.
+
+    *Joel Hawksley*
+
+* BREAKING: Raise `TranslateCalledBeforeRenderError`, `ControllerCalledBeforeRenderError`, or `HelpersCalledBeforeRenderError` instead of `ViewContextCalledBeforeRenderError`.
+
+    *Joel Hawksley*
+
+* BREAKING: Raise `SlotPredicateNameError`, `RedefinedSlotError`, `ReservedSingularSlotNameError`, `ContentSlotNameError`, `InvalidSlotDefinitionError`, `ReservedPluralSlotNameError`, `ContentAlreadySetForPolymorphicSlotErrror`, `SystemTestControllerOnlyAllowedInTestError`, `SystemTestControllerNefariousPathError`, `NoMatchingTemplatesForPreviewError`, `MultipleMatchingTemplatesForPreviewError`, `DuplicateContentError`, `EmptyOrInvalidInitializerError`, `MissingCollectionArgumentError`, `ReservedParameterError`, `InvalidCollectionArgumentError`, `MultipleInlineTemplatesError`, `MissingPreviewTemplateError`, `DuplicateSlotContentError` or `NilWithContentError` instead of generic error classes.
+
+    *Joel Hawksley*
+
+* BREAKING: Rename `SlotV2` to `Slot` and `SlotableV2` to `Slotable`.
+
+    *Joel Hawksley*
+
+* BREAKING: Incorporate `PolymorphicSlots` into `Slotable`. To migrate, remove any references to `PolymorphicSlots` as they are no longer necessary.
+
+    *Joel Hawksley*
+
+* BREAKING: Rename private TestHelpers#controller, #build_controller, #request, and #preview_class to avoid conflicts. Note: While these methods were undocumented and marked as private, they were accessible in tests. As such, we're considering this to be a breaking change.
+
+    *Joel Hawksley*
 
 ### v3.0.0.rc6
 
diff --git a/docs/_data/library.yml b/docs/_data/library.yml
index aeef55627..921622194 100644
--- a/docs/_data/library.yml
+++ b/docs/_data/library.yml
@@ -1,1 +1,1 @@
-version: 3.0.0.rc6
+version: 3.0.0
diff --git a/lib/view_component/version.rb b/lib/view_component/version.rb
index e19431701..fb1130f64 100644
--- a/lib/view_component/version.rb
+++ b/lib/view_component/version.rb
@@ -5,7 +5,7 @@ module VERSION
     MAJOR = 3
     MINOR = 0
     PATCH = 0
-    PRE = "rc6"
+    PRE = nil
 
     STRING = [MAJOR, MINOR, PATCH, PRE].compact.join(".")
   end