<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bucket.co</title>
    <description>The latest articles on DEV Community by Bucket.co (@bucketdotco).</description>
    <link>https://dev.to/bucketdotco</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10244%2F224977ca-2c64-48f8-b0e5-270f807795c5.jpg</url>
      <title>DEV Community: Bucket.co</title>
      <link>https://dev.to/bucketdotco</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bucketdotco"/>
    <language>en</language>
    <item>
      <title>Bucket 2025-04 Update — MCP server, Slack notifications &amp; new bucket.co</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Wed, 30 Apr 2025 13:42:51 +0000</pubDate>
      <link>https://dev.to/bucketdotco/bucket-2025-04-update-mcp-server-slack-notifications-new-bucketco-b5l</link>
      <guid>https://dev.to/bucketdotco/bucket-2025-04-update-mcp-server-slack-notifications-new-bucketco-b5l</guid>
      <description>&lt;p&gt;&lt;strong&gt;At &lt;a href="https://go.bucket.co/" rel="noopener noreferrer"&gt;Bucket&lt;/a&gt;, we're on a mission to help you ship the right features faster with feature flags.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Below is a recap of what we shipped this month.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Bucket shipped in April 2025
&lt;/h2&gt;

&lt;h3&gt;
  
  
  MCP server
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4mwrv6ilo2shsu0uwnr9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4mwrv6ilo2shsu0uwnr9.png" alt="Bucket MCP"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We introduced the Bucket MCP server: flag features, manage company data, and control feature access from your favorite AI code editor — VS Code, Cursor, Windsurf, Claude Code...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more in &lt;a href="https://bucket.co/changelog/mcp" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Follow the &lt;a href="https://go.bucket.co/docs/mcp#get-started-with-bucket-mcp" rel="noopener noreferrer"&gt;installation instructions here&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Improved Slack notifications
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp9lk6h0h61u2t5aoyw67.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp9lk6h0h61u2t5aoyw67.jpg" alt="Improved Slack notifications in Bucket.co"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We updated the integration with Slack. You now get the latest feature changes to stages and targeting rules.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more in &lt;a href="https://bucket.co/changelog/slack-notifications" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  There's more
&lt;/h3&gt;

&lt;p&gt;Last but not least, we also launched a new, markdown-inspired homepage to reflect on our vision — making feature flagging as frictionless as possible.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Go to &lt;a href="https://go.bucket.co" rel="noopener noreferrer"&gt;bucket.co&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/bucketdotco/add-feature-flags-from-the-command-line-2p4e" class="crayons-story__hidden-navigation-link"&gt;Add feature flags from the command line&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/bucketdotco"&gt;
            &lt;img alt="Bucket.co logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10244%2F224977ca-2c64-48f8-b0e5-270f807795c5.jpg" class="crayons-logo__image"&gt;
          &lt;/a&gt;

          &lt;a href="/fmerian" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" alt="fmerian profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/fmerian" class="crayons-story__secondary fw-medium m:hidden"&gt;
              fmerian
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                fmerian
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2371524" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/fmerian" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;fmerian&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/bucketdotco" class="crayons-story__secondary fw-medium"&gt;Bucket.co&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/bucketdotco/add-feature-flags-from-the-command-line-2p4e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 3 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/bucketdotco/add-feature-flags-from-the-command-line-2p4e" id="article-link-2371524"&gt;
          Add feature flags from the command line
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cli"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cli&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tooling"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tooling&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/featureflags"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;featureflags&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/bucketdotco/add-feature-flags-from-the-command-line-2p4e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/bucketdotco/on-trunk-based-development-4b05" class="crayons-story__hidden-navigation-link"&gt;On Trunk-Based Development&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/bucketdotco"&gt;
            &lt;img alt="Bucket.co logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10244%2F224977ca-2c64-48f8-b0e5-270f807795c5.jpg" class="crayons-logo__image"&gt;
          &lt;/a&gt;

          &lt;a href="/fmerian" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" alt="fmerian profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/fmerian" class="crayons-story__secondary fw-medium m:hidden"&gt;
              fmerian
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                fmerian
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2276167" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/fmerian" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;fmerian&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/bucketdotco" class="crayons-story__secondary fw-medium"&gt;Bucket.co&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/bucketdotco/on-trunk-based-development-4b05" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 15 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/bucketdotco/on-trunk-based-development-4b05" id="article-link-2276167"&gt;
          On Trunk-Based Development
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devjournal"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devjournal&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwareengineering"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwareengineering&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/git"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;git&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/featureflags"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;featureflags&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/bucketdotco/on-trunk-based-development-4b05" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/bucketdotco/on-trunk-based-development-4b05#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;That's a wrap!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you have feedback or suggestions, we want to hear them! Let us know, ping &lt;a href="https://go.bucket.co/tw" rel="noopener noreferrer"&gt;@bucketdotco on X&lt;/a&gt; and follow us for the latest product updates.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We're crafting a feature flagging tool for SaaS companies.&lt;/p&gt;

&lt;p&gt;Happy shipping!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>news</category>
      <category>featureflags</category>
    </item>
    <item>
      <title>On Trunk-Based Development</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Tue, 15 Apr 2025 22:07:50 +0000</pubDate>
      <link>https://dev.to/bucketdotco/on-trunk-based-development-4b05</link>
      <guid>https://dev.to/bucketdotco/on-trunk-based-development-4b05</guid>
      <description>&lt;p&gt;Something wild happened this morning. &lt;/p&gt;

&lt;p&gt;Bucket's CTO and co-founder, Ron '&lt;a class="mentioned-user" href="https://dev.to/roncohen"&gt;@roncohen&lt;/a&gt;' Cohen, who previously co-founded Opbeat and led engineering teams at Elastic, published a post on &lt;a href="https://go.bucket.co/blog/trunk-based-development" rel="noopener noreferrer"&gt;Trunk-Based Development&lt;/a&gt; (TBD) that hit the front page of Hacker News. &lt;/p&gt;

&lt;p&gt;People reacted... differently! "&lt;em&gt;This sounds horrible — Why even use Git?&lt;/em&gt;" "&lt;em&gt;I've never worked any other way in 20+ years...&lt;/em&gt;" TBD clearly is a controversial topic!&lt;/p&gt;

&lt;p&gt;Fun fact: you may already practice it. Ron wrote a &lt;a href="https://go.bucket.co/blog/trunk-based-development-misconceptions" rel="noopener noreferrer"&gt;follow-up post on Bucket.co&lt;/a&gt; to clarify some principles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Below are my key takeaways.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL,DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Trunk-Based Development != push to &lt;code&gt;main&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You can still have code reviews and staging environments&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus on small, coherent code changes&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Trunk-Based Development?
&lt;/h2&gt;

&lt;p&gt;In software engineering, &lt;a href="https://go.bucket.co/blog/trunk-based-development" rel="noopener noreferrer"&gt;trunk-based development&lt;/a&gt; (TBD) is a strategy to manage git workflows that favours merging commits into the &lt;code&gt;main&lt;/code&gt; branch even before the feature is fully complete, instead of the git flow that favours working on long-lived branches until features are 100% complete.&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/bucketdotco/introduction-to-trunk-based-development-5hen" class="crayons-story__hidden-navigation-link"&gt;Introduction to Trunk-Based Development&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/bucketdotco"&gt;
            &lt;img alt="Bucket.co logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10244%2F224977ca-2c64-48f8-b0e5-270f807795c5.jpg" class="crayons-logo__image"&gt;
          &lt;/a&gt;

          &lt;a href="/fmerian" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" alt="fmerian profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/fmerian" class="crayons-story__secondary fw-medium m:hidden"&gt;
              fmerian
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                fmerian
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2248587" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/fmerian" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;fmerian&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/bucketdotco" class="crayons-story__secondary fw-medium"&gt;Bucket.co&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/bucketdotco/introduction-to-trunk-based-development-5hen" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 30 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/bucketdotco/introduction-to-trunk-based-development-5hen" id="article-link-2248587"&gt;
          Introduction to Trunk-Based Development
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/git"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;git&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/featureflags"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;featureflags&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/bucketdotco/introduction-to-trunk-based-development-5hen#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h2&gt;
  
  
  Advanced Trunk-Based Development Principles
&lt;/h2&gt;

&lt;h3&gt;
  
  
  It doesn't require pushing directly to &lt;code&gt;main&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;No, trunk-based development doesn't require pushing directly to &lt;code&gt;main&lt;/code&gt;. While this might work in small engineering teams, code reviews remain essential for maintaining code quality. You can still use branches and pull requests (PR) while practicing TBD.&lt;/p&gt;

&lt;h3&gt;
  
  
  You can still have code reviews and staging environments
&lt;/h3&gt;

&lt;p&gt;Yes, trunk-based development is compatible with multiple environments, including staging and pre-prod. You can still deploy your &lt;code&gt;main&lt;/code&gt; branch to a staging environment for testing before pushing changes to production. &lt;/p&gt;

&lt;h3&gt;
  
  
  Focus on small, coherent code changes
&lt;/h3&gt;

&lt;p&gt;Last but not least, it's all about creating coherent, small, and &lt;em&gt;well-scoped&lt;/em&gt; code changes. This requires writing descriptive PR descriptions and breaking larger features into manageable, reviewable pieces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Trunk-based development (TBD) helps ship features faster. It doesn't require pushing code changes directly to &lt;code&gt;main&lt;/code&gt; though. You can still use branches, pull requests, and code reviews. Above all, TBD is about creating small, frequent code changes.&lt;/p&gt;

&lt;p&gt;That's a wrap! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you enjoyed the read, please add some ❤️🦄🤯🙌🔥 and follow us &lt;a href="https://go.bucket.co/tw" rel="noopener noreferrer"&gt;@bucketdotco on X&lt;/a&gt; for more insights and best practices on trunk-based development.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We're building a feature flagging tool for SaaS companies that's crafted for speed.&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>softwareengineering</category>
      <category>git</category>
      <category>featureflags</category>
    </item>
    <item>
      <title>Bucket MCP Server</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Wed, 09 Apr 2025 13:31:45 +0000</pubDate>
      <link>https://dev.to/bucketdotco/bucket-mcp-server-23a1</link>
      <guid>https://dev.to/bucketdotco/bucket-mcp-server-23a1</guid>
      <description>&lt;p&gt;At &lt;a href="https://go.bucket.co" rel="noopener noreferrer"&gt;Bucket&lt;/a&gt;, we're on a mission to make feature flagging as frictionless as possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL,DR: We're launching the Bucket MCP Server. &lt;a href="https://go.bucket.co/docs/mcp" rel="noopener noreferrer"&gt;Start here&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Last month, we launched a CLI to remove any friction in creating features and help you maintain type safety. We're also experimenting with a GitHub app to clean up stale flags automatically. &lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Today, we're introducing the &lt;a href="https://go.bucket.co/docs/mcp" rel="noopener noreferrer"&gt;Bucket MCP server&lt;/a&gt; to enable you to flag features, manage company data, and control feature access from your favorite AI code editor.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's an MCP server?
&lt;/h2&gt;

&lt;p&gt;MCP stands for Model Context Protocol. It's an emerging standard that enables AI tools to interact with external data sources — in this case, the &lt;a href="https://go.bucket.co/docs/api" rel="noopener noreferrer"&gt;Bucket API&lt;/a&gt;. MCP servers act as intermediaries, providing structured data to AI applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flag features from your AI code editor with Bucket MCP server
&lt;/h2&gt;

&lt;p&gt;Bucket MCP lets you flag features, manage company data, and control feature access directly from the chat window in your AI code editor — VS Code, Cursor, Windsurf, Claude Code, or any IDE that has MCP support.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 1: Add feature flags
&lt;/h3&gt;

&lt;p&gt;For example, if you've built a "Download CSV" feature and want to flag it, you no longer have to go to &lt;code&gt;bucket.co&lt;/code&gt; or use the CLI to create a feature key.&lt;/p&gt;

&lt;p&gt;Instead, ask the MCP server to do it for you: "flag the download button with bucket"&lt;/p&gt;

&lt;p&gt;Bucket MCP will then create a feature key on &lt;code&gt;bucket.co&lt;/code&gt; with a relevant name and provide the context needed so your IDE's LLM will flag the feature in the codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 2: Grant feature access
&lt;/h3&gt;

&lt;p&gt;You can also use the Bucket MCP server to grant company segments and individual companies or users access to the feature straight from the chat window.&lt;/p&gt;

&lt;p&gt;To give "Acme" access, for example, you'd ask something like: "give acme access to the download csv feature" and Bucket will look up the company name and enable the Download CSV feature for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started with Bucket MCP
&lt;/h2&gt;

&lt;p&gt;To get started, follow these steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Install the CLI&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; @bucketco/cli
npx bucket init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Start the MCP server&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx bucket mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3: Add the MCP server to your IDE&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Bucket feature flag MCP"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:8050/sse"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;That's it!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://go.bucket.co/docs/mcp" rel="noopener noreferrer"&gt;Read the documentation here&lt;/a&gt; for the latest updates and examples of what you can build with Bucket MCP.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Happy prompting!&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://dev.to/bucketdotco/bucket-2025-03-update-cli-toolbar-github-app-launch-week-2fji"&gt;Bucket 2025-03 Update — CLI, Type Safety, Toolbar &amp;amp; Launch Week&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>featureflags</category>
    </item>
    <item>
      <title>Experimenting with Cursor</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Mon, 07 Apr 2025 18:06:45 +0000</pubDate>
      <link>https://dev.to/bucketdotco/experimenting-with-cursor-52m3</link>
      <guid>https://dev.to/bucketdotco/experimenting-with-cursor-52m3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;If you want to build top software, you have to surround yourself with top software to experience it every day.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;— Thomas Paul Mann, Co-founder and CEO of Raycast on &lt;a href="https://linear.app/fm#elevating-your-design-sense" rel="noopener noreferrer"&gt;linear.fm&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At &lt;a href="https://go.bucket.co" rel="noopener noreferrer"&gt;Bucket&lt;/a&gt;, we're building a modern feature flagging tool for SaaS developers and are always looking for products that can boost productivity and inspire us to build better software. &lt;sup id="fnref1"&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Recently, the team experimented with &lt;a href="https://cursor.com" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt;, an AI-powered code editor, to replace &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Below are some key takeaways.&lt;/p&gt;

&lt;h2&gt;
  
  
  TLDR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tab completion&lt;/strong&gt;: Cursor includes a helpful tab completion feature, suggesting refactorings and improvements as you go — &lt;em&gt;huge time saver&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chat&lt;/strong&gt;: The chat/composer is better than Copilot as it can modify across files in the codebase. However, you still need to correct the code most of the time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full context&lt;/strong&gt;: Cursor has full context, so it provides more helpful advice and changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generating comments&lt;/strong&gt;: Cursor makes it easier to add code comments — they need clarifications from time to time tho&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working with existing codebases&lt;/strong&gt;: It seems better at writing code from scratch than contributing to large existing codebases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucinations&lt;/strong&gt;: Cursor has fewer hallucinations compared to alternatives — &lt;em&gt;as far as we can tell&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompting strategies&lt;/strong&gt;: Being somewhat specific in prompts by referencing classes and functions seems to work well — We're currently experimenting with &lt;code&gt;.cursorrules&lt;/code&gt; files to improve prompt quality&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cursor in review
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Autocompletion
&lt;/h3&gt;

&lt;p&gt;One feature that stands out is the tab completion, refactoring code as you go, and suggesting the next piece to improve with each press of the &lt;code&gt;tab&lt;/code&gt; key — &lt;em&gt;such a time saver!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat
&lt;/h3&gt;

&lt;p&gt;Compared to GitHub Copilot, Cursor Chat seems more capable as it can modify code across files in your codebase. &lt;/p&gt;

&lt;p&gt;However, we found that 90% of the time, we still need to make edits. We probably need to provide more guidance to get the most out of it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Full context
&lt;/h3&gt;

&lt;p&gt;One significant advantage of Cursor is its full context of the codebase. Therefore, it provides much more helpful advice and changes. It's not perfect. It's a step up from alternatives tho.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integrating with existing codebases
&lt;/h3&gt;

&lt;p&gt;When interacting with larger, pre-existing codebases, we have mixed feelings. It seems to do a better job when writing code from scratch than contributing to existing projects. We experimented with the Composer to create a full feature in an existing codebase, and it didn't go smoothly. &lt;/p&gt;

&lt;p&gt;We need more experimentation and potentially custom system prompts here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hallucinations
&lt;/h3&gt;

&lt;p&gt;From what we've seen, Cursor doesn't hallucinate much - definitely less than GitHub Copilot. We only encountered 1 or 2 instances. We didn't attempt many cross-project changes tho. This may vary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt engineering
&lt;/h3&gt;

&lt;p&gt;To get the best results from Cursor, we found that being moderately specific in prompts works well. As long as you reference relevant classes or functions, it can usually infer what you need from the file context. There are also ⁠&lt;code&gt;.cursorrules&lt;/code&gt; files that can help fine-tune the behavior further. &lt;/p&gt;

&lt;p&gt;We're planning to investigate more on that — &lt;em&gt;stay tuned&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;That's all, folks! &lt;/p&gt;

&lt;p&gt;We're very happy with the experience so far and look forward to working more in-depth with Cursor. While it won't write the entire, fully functional code for you, it can provide a real productivity boost, especially with its &lt;code&gt;tab&lt;/code&gt; completion and custom rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you enjoyed this post, please add some ❤️🦄🤯🙌🔥&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There's one more thing.&lt;/p&gt;

&lt;p&gt;We're currently working on an MCP server to let you flag features, manage company data, and control feature access from Cursor — &lt;strong&gt;Edit: &lt;a href="https://x.com/bucketdotco/status/1909955550747742388" rel="noopener noreferrer"&gt;it's live!&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/bucketdotco/bucket-mcp-server-23a1" class="crayons-story__hidden-navigation-link"&gt;Bucket MCP Server&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/bucketdotco"&gt;
            &lt;img alt="Bucket.co logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10244%2F224977ca-2c64-48f8-b0e5-270f807795c5.jpg" class="crayons-logo__image"&gt;
          &lt;/a&gt;

          &lt;a href="/fmerian" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" alt="fmerian profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/fmerian" class="crayons-story__secondary fw-medium m:hidden"&gt;
              fmerian
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                fmerian
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2389647" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/fmerian" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;fmerian&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/bucketdotco" class="crayons-story__secondary fw-medium"&gt;Bucket.co&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/bucketdotco/bucket-mcp-server-23a1" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 9 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/bucketdotco/bucket-mcp-server-23a1" id="article-link-2389647"&gt;
          Bucket MCP Server
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/featureflags"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;featureflags&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/bucketdotco/bucket-mcp-server-23a1" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;11&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/bucketdotco/bucket-mcp-server-23a1#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              2&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Follow &lt;a href="https://go.bucket.co/tw" rel="noopener noreferrer"&gt;@bucketdotco on X&lt;/a&gt; for the latest product updates.&lt;/strong&gt;&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://dev.to/bucketdotco/why-we-use-clerk-for-auth-5hjp"&gt;Why we use Clerk for auth&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>devjournal</category>
      <category>tooling</category>
      <category>ai</category>
    </item>
    <item>
      <title>Add feature flags from the command line</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Thu, 03 Apr 2025 10:42:03 +0000</pubDate>
      <link>https://dev.to/bucketdotco/add-feature-flags-from-the-command-line-2p4e</link>
      <guid>https://dev.to/bucketdotco/add-feature-flags-from-the-command-line-2p4e</guid>
      <description>&lt;p&gt;At &lt;a href="https://go.bucket.co" rel="noopener noreferrer"&gt;Bucket&lt;/a&gt;, we're on a mission to help you ship the right features &lt;em&gt;faster.&lt;/em&gt; We're building a feature flagging tool that's crafted for speed, built for B2B SaaS.&lt;/p&gt;

&lt;p&gt;We've recently shipped a command line interface (CLI) that you can use to interact with Bucket. It removes any friction in creating feature flags from the command line and helps you maintain type safety for your features.&lt;/p&gt;

&lt;p&gt;Here's what you can do with the &lt;a href="https://docs.bucket.co/api/cli" rel="noopener noreferrer"&gt;Bucket CLI&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create new features with the &lt;code&gt;new&lt;/code&gt; command&lt;/li&gt;
&lt;li&gt;Manage &lt;code&gt;features&lt;/code&gt; and ensure type safety&lt;/li&gt;
&lt;li&gt;Manage &lt;code&gt;companies&lt;/code&gt; and &lt;code&gt;apps&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Manage authentication with &lt;code&gt;login&lt;/code&gt; and &lt;code&gt;logout&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get started:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @bucketco/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create new features with type safety
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;bucket new [featureName]&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This is the all-in-one command to get started quickly. Use this for the fastest way to get up and running with Bucket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bucket new &lt;span class="s2"&gt;"My Feature"&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--key&lt;/span&gt; my-feature] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--app-id&lt;/span&gt; ap123456789] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--key-format&lt;/span&gt; custom] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--out&lt;/span&gt; gen/features.ts] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--format&lt;/span&gt; react]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Options&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--key&lt;/code&gt;: Specific key for the feature&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--app-id&lt;/code&gt;: App ID to use&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--key-format&lt;/code&gt;: Format for feature keys (custom, snake, camel, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--out&lt;/code&gt;: Path to generate TypeScript types&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--format&lt;/code&gt;: Format of the generated types (react or node)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Manage features from the command line
&lt;/h2&gt;

&lt;p&gt;To manage your features using the Bucket CLI, use the following subcommands:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;bucket features create&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Create a new feature in your Bucket app.&lt;/p&gt;

&lt;p&gt;The command guides you through the feature creation process with interactive prompts if options are not provided.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bucket features create &lt;span class="s2"&gt;"My Feature"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;bucket features list&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;List all features for the current app.&lt;/p&gt;

&lt;p&gt;This helps you visualize what features are available and their current configs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bucket features list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;bucket features types&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Generate TypeScript types for your features.&lt;/p&gt;

&lt;p&gt;This ensures type safety in your TypeScript/JavaScript applications.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bucket features types
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Manage company data and feature access
&lt;/h2&gt;

&lt;p&gt;To manage company data and feature access using the Bucket CLI, use the following subcommands:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;bucket companies list&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;List all companies for the current app.&lt;/p&gt;

&lt;p&gt;This helps you visualize the companies using your features and their basic metrics.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bucket companies list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;bucket companies features access&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Grant or revoke access to specific features for a company.&lt;/p&gt;

&lt;p&gt;If no feature key is provided, the CLI will prompt you to select one from a list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bucket companies features access &amp;lt;companyId&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;featureKey] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--enable&lt;/span&gt;|--disable] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--app-id&lt;/span&gt; ap123456789]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Arguments&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;companyId&lt;/code&gt;: ID of the company to manage&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;featureKey&lt;/code&gt;: Key of the feature to grant/revoke access to&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Options&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--enable&lt;/code&gt;: Enable the feature for this company&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--disable&lt;/code&gt;: Disable the feature for this company&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--app-id&lt;/code&gt;: App ID to use&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use flags for more options
&lt;/h2&gt;

&lt;p&gt;Flags are parameters you can pass while launching the command. These parameters are optional.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--debug&lt;/code&gt;: Enable debug mode for verbose output&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--base-url &amp;lt;url&amp;gt;&lt;/code&gt;: Set the base URL for Bucket API&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--api-url &amp;lt;url&amp;gt;&lt;/code&gt;: Set the API URL directly (overrides base URL)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--help&lt;/code&gt;: Display help information for a command&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to learn more, you can &lt;a href="https://docs.bucket.co/api/cli" rel="noopener noreferrer"&gt;read the documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start from your terminal
&lt;/h2&gt;

&lt;p&gt;That's a wrap! &lt;/p&gt;

&lt;p&gt;The Bucket CLI is available right now. You can install it via &lt;code&gt;NPM&lt;/code&gt; or &lt;code&gt;Yarn&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# npm&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; @bucketco/cli

&lt;span class="c"&gt;# yarn&lt;/span&gt;
yarn add &lt;span class="nt"&gt;--dev&lt;/span&gt; @bucketco/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Need help? Ping us &lt;a href="https://go.bucket.co/tw" rel="noopener noreferrer"&gt;@bucketdotco on X&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>cli</category>
      <category>tooling</category>
      <category>featureflags</category>
    </item>
    <item>
      <title>Bucket 2025-03 Update — CLI, Type Safety, Toolbar &amp; Launch Week</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Wed, 26 Mar 2025 14:46:11 +0000</pubDate>
      <link>https://dev.to/bucketdotco/bucket-2025-03-update-cli-toolbar-github-app-launch-week-2fji</link>
      <guid>https://dev.to/bucketdotco/bucket-2025-03-update-cli-toolbar-github-app-launch-week-2fji</guid>
      <description>&lt;p&gt;&lt;strong&gt;At &lt;a href="https://go.bucket.co/" rel="noopener noreferrer"&gt;Bucket&lt;/a&gt;, we're on a mission to help you build better products with feature flags.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's a recap of what we shipped this month.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Bucket shipped in March 2025
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;CLI &amp;amp; Type Safety&lt;/li&gt;
&lt;li&gt;Toolbar&lt;/li&gt;
&lt;li&gt;Event log&lt;/li&gt;
&lt;li&gt;GitHub app&lt;/li&gt;
&lt;li&gt;Revamped docs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  CLI &amp;amp; Type Safety
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9tvrr6p9a4r4tx7za1b5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9tvrr6p9a4r4tx7za1b5.png" alt="Bucket CLI" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Introducing the Bucket CLI.&lt;/p&gt;

&lt;p&gt;Create new features from the command line and maintain type safety while building. When creating a new feature, the CLI updates your local types to make sure they match types defined in Bucket.&lt;/p&gt;

&lt;p&gt;Get started now — copy/paste this in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i @⁠bucketco/cli 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more in &lt;a href="https://bucket.co/changelog/cli-type-safety" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Toolbar
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7uxtvq8oft2rf1qtnpq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7uxtvq8oft2rf1qtnpq.png" alt="Bucket Toolbar" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We introduced the Toolbar to help you toggle features on and off when building locally.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more in &lt;a href="https://bucket.co/changelog/toolbar" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Event log
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fha5dq7ha8n9htr4lcaf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fha5dq7ha8n9htr4lcaf6.png" alt="Improved Event log" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See all event data sent to Bucket, filter them by type, and get detailed context for quick debugging.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more in &lt;a href="https://bucket.co/changelog/improved-event-log" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  GitHub app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl12fs05raxocfjcd1fad.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl12fs05raxocfjcd1fad.webp" alt="Automated stale flag clean up" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We now integrate with GitHub to automatically clean up your feature flags after roll out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more in &lt;a href="https://bucket.co/changelog/flag-auto-cleanup" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Currently in limited access, you can &lt;a href="https://go.bucket.co/early-access" rel="noopener noreferrer"&gt;request an early preview here&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Revamped docs
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbo4qfz9gvdv8k1dblxg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbo4qfz9gvdv8k1dblxg.jpg" alt="Revamped docs" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CLI, Tool, Event log, GitHub app... The docs needed a refresh. We introduced a new layout, comprehensive step-by-step guides, and a public repository.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://go.bucket.co/docs" rel="noopener noreferrer"&gt;Read the documentation&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  There's more: Event listeners &amp;amp; Add in bulk
&lt;/h3&gt;

&lt;p&gt;This month, we also launched:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Event listeners&lt;/strong&gt;: We've made it possible to integrate Bucket with other platforms like Amplitude and Datadog through event listeners in Bucket SDKs — &lt;a href="https://bucket.co/changelog/event-listeners" rel="noopener noreferrer"&gt;View changelog post&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add in bulk&lt;/strong&gt;: For Pro customers, we enabled bulk actions. You can select multiple customers and give them access to features in bulk — &lt;a href="https://bucket.co/changelog/add-in-bulk" rel="noopener noreferrer"&gt;View changelog post&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/bucketdotco" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10244%2F224977ca-2c64-48f8-b0e5-270f807795c5.jpg" alt="Bucket.co" width="400" height="400"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" alt="" width="460" height="460"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/bucketdotco/how-we-release-beta-features-in-react-with-bucket-1klf" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Release beta features to your React app with Bucket&lt;/h2&gt;
      &lt;h3&gt;fmerian for Bucket.co ・ Mar 7 '25&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tooling&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#featureflags&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;div class="ltag__link"&gt;
  &lt;a href="/bucketdotco" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10244%2F224977ca-2c64-48f8-b0e5-270f807795c5.jpg" alt="Bucket.co" width="400" height="400"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" alt="" width="460" height="460"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/bucketdotco/how-we-launch-5d6h" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How we launch&lt;/h2&gt;
      &lt;h3&gt;fmerian for Bucket.co ・ Mar 12 '25&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#devjournal&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#startup&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;That's a wrap!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI, Tool, Event log, GitHub app... What should we build next? Let us know! Ping &lt;a href="https://go.bucket.co/tw" rel="noopener noreferrer"&gt;@bucketdotco on X&lt;/a&gt; and follow us for the latest product updates.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We're crafting a feature flagging tool for SaaS companies.&lt;/p&gt;

&lt;p&gt;Happy shipping!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>news</category>
      <category>tooling</category>
      <category>featureflags</category>
    </item>
    <item>
      <title>🔴 Live: Bucket DX on Product Hunt</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Thu, 13 Mar 2025 12:16:16 +0000</pubDate>
      <link>https://dev.to/bucketdotco/on-product-hunt-2gbe</link>
      <guid>https://dev.to/bucketdotco/on-product-hunt-2gbe</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Launching keeps reminding the market that your company exists and you’re making progress.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://x.com/karrisaarinen" rel="noopener noreferrer"&gt;Karri Saarinen&lt;/a&gt;, CEO of Linear in &lt;a href="https://linear.app/method/launching" rel="noopener noreferrer"&gt;Linear Method&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bucket first launched on Product Hunt on June 8, 2023. &lt;/p&gt;

&lt;p&gt;On March 18, 2025, we launched &lt;a href="https://meooow.link/bucket" rel="noopener noreferrer"&gt;Bucket DX&lt;/a&gt; — a series of features making feature flagging a &lt;em&gt;fast&lt;/em&gt;, joyful experience for SaaS developers: CLI, Toolbar, Event log, and more.&lt;/p&gt;

&lt;p&gt;Product Hunt is a 24-hour run, starting at 12:01 AM PST. Tune in for live updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Join the launch: &lt;a href="https://x.com/bucketdotco/status/1901938021664276596" rel="noopener noreferrer"&gt;@bucketdotco on Twitter/X&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;11:59:PM:PST&lt;/code&gt; — wrapping up
&lt;/h2&gt;

&lt;p&gt;That's a wrap!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Results:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;242 points&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;42 comments&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#7 Product of the Day&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#5 Developer Tool of the Week&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://meooow.link/bucket" rel="noopener noreferrer"&gt;Go to launch page on producthunt.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next?&lt;/strong&gt; This launch is part of &lt;a href="https://go.bucket.co/launch-week" rel="noopener noreferrer"&gt;Bucket's first-ever launch week&lt;/a&gt; — a week of announcing new features. &lt;/p&gt;

&lt;p&gt;Launching on Product Hunt definitely is &lt;em&gt;not&lt;/em&gt; a one-time opportunity. It pays off in the long term.&lt;/p&gt;

&lt;p&gt;Awesome developer-first products like Stripe, Supabase, and Raycast, have launched there multiple times — resp. 69, 15, and 13 launches. We're gearing up to be part of this list.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/bucketdotco" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10244%2F224977ca-2c64-48f8-b0e5-270f807795c5.jpg" alt="Bucket.co" width="400" height="400"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" alt="" width="460" height="460"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/bucketdotco/how-we-launch-5d6h" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How we launch&lt;/h2&gt;
      &lt;h3&gt;fmerian for Bucket.co ・ Mar 12&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#devjournal&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#startup&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  &lt;code&gt;08:56:PM:PST&lt;/code&gt; — new milestone: 231 upvotes
&lt;/h2&gt;

&lt;p&gt;We just surpassed Flags that we launched in November 2024. We're still #7 Product of the Day.&lt;/p&gt;

&lt;p&gt;Aman '&lt;a class="mentioned-user" href="https://dev.to/amanintech"&gt;@amanintech&lt;/a&gt;' Sharm, CTO and Co-founder of &lt;a href="https://lamatic.ai/" rel="noopener noreferrer"&gt;Lamatic.ai&lt;/a&gt;, commented:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Feature flagging is challenging and Bucket makes it incredibly developer-friendly.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;— Aman Sharma, CTO of Lamatic.ai on &lt;a href="https://www.producthunt.com/posts/bucket-dx?comment=4481180" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;10:07:AM:PST&lt;/code&gt; — new milestone: 200 upvotes
&lt;/h2&gt;

&lt;p&gt;We're currently #7 Product of the Day and just reached 200 upvotes. 31 more upvotes to go and surpass Flags that we launched in November 2024.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;05:42:AM:PST&lt;/code&gt; — new milestone: 148 upvotes
&lt;/h2&gt;

&lt;p&gt;This launch is &lt;a href="https://www.producthunt.com/products/bucket/launches" rel="noopener noreferrer"&gt;Bucket's fourth launch on Product Hunt&lt;/a&gt;. We just surpassed Releases that we launched in February 2024. We're still #7 Product of the Day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next up: Bucket Flags — 231 upvotes&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;04:01:AM:PST&lt;/code&gt; — we're currently #7!
&lt;/h2&gt;

&lt;p&gt;We're currently #7 Product of the Day, with 124 upvotes and 25 comments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://meooow.link/bucket" rel="noopener noreferrer"&gt;Join the launch&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;02:16:AM:PST&lt;/code&gt; — new milestone: 100 upvotes
&lt;/h2&gt;

&lt;p&gt;Product Hunt is a great place for developer tools to launch — a place where many dev-first products launched successfully: Supabase, Resend, and Warp, to name a few. &lt;/p&gt;

&lt;p&gt;It helps raise awareness, get feedback, and collect testimonials — the type of materials you can reuse later on for your marketing purposes. &lt;/p&gt;

&lt;p&gt;Take this comment from Dima '&lt;a class="mentioned-user" href="https://dev.to/scopsy"&gt;@scopsy&lt;/a&gt;' Grossman, CTO and Co-founder of &lt;a href="https://novu.co/" rel="noopener noreferrer"&gt;Novu&lt;/a&gt;, for example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;The DX is just out of this world. If you're not using Bucket in your project, you are missing out.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;— Dima Grossman, CTO of Novu on &lt;a href="https://www.producthunt.com/posts/bucket-dx?comment=4479293" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;12:01:AM:PST&lt;/code&gt; — going live
&lt;/h2&gt;

&lt;p&gt;We're featured on Product Hunt!&lt;/p&gt;

&lt;p&gt;For the first 4 hours of the day, Product Hunt hides upvotes and sorts the homepage randomly. According to &lt;a href="https://www.producthunt.com/stories/let-s-talk-about-spam" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt;, this should give products "a more distributed chance at exposure early."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's a shortcut — Direct link: &lt;a href="https://meooow.link/bucket" rel="noopener noreferrer"&gt;Bucket DX on Product Hunt&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/fmerian" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F825443%2F25eb86cc-d436-4b4f-9c75-a90d96f82a91.jpeg" alt="fmerian"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/fmerian/faq-product-hunt-for-devtools-2c09" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Product Hunt for DevTools — FAQ&lt;/h2&gt;
      &lt;h3&gt;fmerian ・ Feb 23&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#startup&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#marketing&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>showdev</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>featureflags</category>
    </item>
    <item>
      <title>How we launch</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Wed, 12 Mar 2025 22:23:42 +0000</pubDate>
      <link>https://dev.to/bucketdotco/how-we-launch-5d6h</link>
      <guid>https://dev.to/bucketdotco/how-we-launch-5d6h</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Launch weeks are great for both aligning the team and getting traction within the community.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;— Rory Wilding, COO of Supabase on &lt;a href="https://lweek.dev/rorstro" rel="noopener noreferrer"&gt;launchweek.dev&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Last month was &lt;a href="https://go.bucket.co/launch-week" rel="noopener noreferrer"&gt;Bucket's first-ever Launch Week&lt;/a&gt; — a week of announcing new features to make feature flagging a &lt;em&gt;fast&lt;/em&gt;, joyful experience for SaaS developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This post is about why it's important and what it means for Bucket.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we're planning a launch week
&lt;/h2&gt;

&lt;p&gt;I joined Bucket &lt;a href="https://x.com/fmerian/status/1884930126590452152" rel="noopener noreferrer"&gt;last January&lt;/a&gt;, and one thing stands out: This team ships. It ships &lt;em&gt;really fast.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the last 12 months, the team released 38 product updates. We write changelogs and thoughtfully share them on LinkedIn and Twitter/X. People often tell us: "&lt;em&gt;I've been following you for a long time and am impressed with how much you ship.&lt;/em&gt;"&lt;/p&gt;

&lt;p&gt;This year, we're gearing up. We have so much to announce that we decided to run a launch week — a week of announcing new features.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Shaping phase
&lt;/h2&gt;

&lt;p&gt;We had opinions on how we wanted to plan this launch week. We wanted to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch in the next 6 weeks&lt;/li&gt;
&lt;li&gt;Launch with another dev-first company to increase reach&lt;/li&gt;
&lt;li&gt;And above all, we didn't want to hold back feature releases&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F21vnwefj9s7jdqwbfvoh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F21vnwefj9s7jdqwbfvoh.png" alt="Planning a launch week on Linear" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, we listed the projects we wanted to build and prioritized them by appetite. Then we started building. Four weeks in, we reflected on what we could ship on time and what would require more time to craft. &lt;/p&gt;

&lt;p&gt;In the meantime, we keep shipping — at least one product update per week. Launch weeks shouldn't hold back new feature releases. To quote Rory '&lt;a class="mentioned-user" href="https://dev.to/rorstro"&gt;@rorstro&lt;/a&gt;' Wilding from Supabase, we want to "&lt;em&gt;ship and shout as much as possible&lt;/em&gt;" — &lt;a href="https://dev.to/fmerian/how-dev-first-startup-supabase-grew-from-0-to-50k-github-stars-5d4d"&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Warming up
&lt;/h2&gt;

&lt;p&gt;As soon as we committed to a calendar and release dates, we started raising awareness and building momentum. At Bucket, we value craftsmanship. We spent time on pixels, agreed on a visual direction 2 weeks ahead, and started &lt;a href="https://x.com/bucketdotco/status/1895427990122827944" rel="noopener noreferrer"&gt;posting on socials&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Launching
&lt;/h2&gt;

&lt;p&gt;The week is launch week — a week of announcing 5 features. It could be more, it could be less. To be upfront, they are new features, updates, and existing features, too — features that we think would need a spotlight. &lt;/p&gt;

&lt;p&gt;To quote Ant '&lt;a class="mentioned-user" href="https://dev.to/awalias"&gt;@awalias&lt;/a&gt;' Wilson from Supabase:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;You can launch a new feature many times over and always manage to reach people who either forgot, ignored, or just plain missed it the first few times.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;— Ant Wilson, CTO and Co-founder of Supabase on &lt;a href="https://supabase.com/blog/supabase-how-we-launch" rel="noopener noreferrer"&gt;How we launch at Supabase&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For these announcements, we had the following approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Publish a changelog post and/or an engineering post&lt;/li&gt;
&lt;li&gt;Post on socials: LinkedIn, Bluesky, X&lt;/li&gt;
&lt;li&gt;Quote new posts in a meta thread&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We encourage every team member to engage on these posts with likes, reposts, and quotes.&lt;/p&gt;

&lt;p&gt;When it makes sense, we also plan a &lt;a href="https://dev.to/fmerian/series/27917"&gt;launch on Product Hunt&lt;/a&gt;. For example, on Launch Week [0], we partnered with &lt;a href="https://tinybird.co" rel="noopener noreferrer"&gt;Tinybird&lt;/a&gt;. &lt;a href="https://meooow.link/bucket" rel="noopener noreferrer"&gt;Go to the launch page here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Post mortem
&lt;/h2&gt;

&lt;p&gt;This may be the most important part. Post-launch, we analyze the results and impact on the business. We reflect on what worked, what didn't work, and what can be improved. Above all, the objective is to determine if launch weeks are worth the effort — &lt;em&gt;TL,DR: they are.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;This first-ever &lt;a href="https://go.bucket.co/launch-week" rel="noopener noreferrer"&gt;launch week&lt;/a&gt; certainly is &lt;em&gt;not&lt;/em&gt; the last one. We believe that consistency is key, and we'll keep launching.&lt;/p&gt;

&lt;p&gt;From the &lt;a href="https://linear.app/method/launching" rel="noopener noreferrer"&gt;Linear Method&lt;/a&gt;: "&lt;em&gt;By launching multiple times, you are building your story and brand over time and compounding people's interest. Each launch builds more following, which then helps your future launches. Launching keeps reminding the market that your company exists and you're making progress.&lt;/em&gt;"&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://lweek.dev/2024" rel="noopener noreferrer"&gt;launchweek.dev&lt;/a&gt;, only 7 companies in the world ran 3+ launch weeks last year. 7 companies &lt;em&gt;in the world.&lt;/em&gt; We want to be part of this shortlist. We're planning to run 3 launch weeks by the end of this year. It starts this month, from March 17 to March 21. We also plan to be part of the &lt;a href="https://lweek.dev/mega" rel="noopener noreferrer"&gt;Mega Launch Week&lt;/a&gt; later this year and plan another launch week in between.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Launch weeks are the new flagship at Bucket.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow us &lt;a href="https://x.com/bucketdotco" rel="noopener noreferrer"&gt;@bucketdotco on X&lt;/a&gt; and &lt;a href="https://bsky.app/profile/bucket.co" rel="noopener noreferrer"&gt;@bucket.co on Bluesky&lt;/a&gt; for the latest product updates.&lt;/p&gt;

&lt;p&gt;We're building a feature flagging tool crafted for speed.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://supabase.com/blog/supabase-how-we-launch" rel="noopener noreferrer"&gt;How we launch at Supabase&lt;/a&gt;, Ant Wilson (2021)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://linear.app/method/launching" rel="noopener noreferrer"&gt;Launch and keep launching&lt;/a&gt;, Linear Method (2020)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devjournal</category>
      <category>startup</category>
    </item>
    <item>
      <title>Release beta features to your React app with Bucket</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Fri, 07 Mar 2025 19:29:59 +0000</pubDate>
      <link>https://dev.to/bucketdotco/how-we-release-beta-features-in-react-with-bucket-1klf</link>
      <guid>https://dev.to/bucketdotco/how-we-release-beta-features-in-react-with-bucket-1klf</guid>
      <description>&lt;p&gt;Happy Friday!&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://bucket.co" rel="noopener noreferrer"&gt;Bucket&lt;/a&gt;, we're building a feature flagging tool for SaaS developers, and we just &lt;a href="https://bucket.co/changelog/remote-config-beta" rel="noopener noreferrer"&gt;rolled out a beta feature: Remote Config&lt;/a&gt; — a flexible, JSON-based approach to configure features at runtime — &lt;em&gt;and yes, we ship on Fridays.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here's how we did using Bucket. &lt;code&gt;#dogfooding&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Release beta features in React with Bucket
&lt;/h2&gt;

&lt;p&gt;In this post, we'll take the following steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 1: Flag your new feature in React&lt;/li&gt;
&lt;li&gt;Step 2: Set up your feature rollout strategy&lt;/li&gt;
&lt;li&gt;Step 3: Start collecting user feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Flag your new feature in React
&lt;/h2&gt;

&lt;p&gt;First off, you need to sign up for Bucket — &lt;a href="https://app.bucket.co/signup" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let's create your first feature.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;code&gt;New feature&lt;/code&gt; in the sidebar.&lt;/li&gt;
&lt;li&gt;Give your feature a name and you'll get a &lt;code&gt;feature key&lt;/code&gt;. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We'll use this &lt;code&gt;feature key&lt;/code&gt; to flag the new feature in the codebase.&lt;/p&gt;

&lt;p&gt;Let's install the &lt;a href="https://docs.bucket.co/supported-languages/react-sdk" rel="noopener noreferrer"&gt;Bucket React SDK&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Copy/paste this in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i @bucketco/react-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's initialize the client and install the access checking:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BucketProvider&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useFeature&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@bucketco/react-sdk&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;BucketProvider&lt;/span&gt;
    &lt;span class="nx"&gt;publishableKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pub_prod_*********************&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fmerian&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Flo Merian&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;
    &lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bucket&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bucket.co&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;
  &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;RemoteConfig&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/BucketProvider&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;RemoteConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;isEnabled&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useFeature&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;remote-config&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isEnabled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Remote&lt;/span&gt; &lt;span class="nx"&gt;Config&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;ON&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It works! Let's deploy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Set up your feature rollout strategy
&lt;/h2&gt;

&lt;p&gt;Head back over to &lt;a href="https://app.bucket.co" rel="noopener noreferrer"&gt;your dashboard&lt;/a&gt;, select your new feature, and navigate to the &lt;code&gt;Access&lt;/code&gt; tab to manage who gets access.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We set the feature stage to &lt;code&gt;Beta&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Here we're running a public beta, so we just pick &lt;code&gt;Everyone&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Hit &lt;code&gt;Save&lt;/code&gt; to ship the beta feature to everyone &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All set!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5dpq8qk0xmsu0hq9v16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5dpq8qk0xmsu0hq9v16.png" alt="Feature rollout on Bucket.co" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; We &lt;a href="https://docs.bucket.co/integrations/slack" rel="noopener noreferrer"&gt;integrate with Slack&lt;/a&gt; to keep the team informed and get notified about feature access and stage updates. This ensures everyone is aligned during the rollout process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Start collecting user feedback
&lt;/h2&gt;

&lt;p&gt;Remote Config is an important feature for us and we want to make sure we get it right before making it Generally Available (GA).&lt;/p&gt;

&lt;p&gt;So we want to hear from the beta users.&lt;/p&gt;

&lt;p&gt;Let's add a feedback button. It's simple, we need to add &lt;code&gt;requestFeedback&lt;/code&gt; and trigger it on a button.&lt;/p&gt;

&lt;p&gt;See example here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;RemoteConfig&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;isEnabled&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;requestFeedback&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useFeature&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;remote-config&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isEnabled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nx"&gt;Remote&lt;/span&gt; &lt;span class="nx"&gt;Config&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;ON&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;
        &lt;span class="nf"&gt;requestFeedback&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
          &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;How do you like Remote Config?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="nx"&gt;Give&lt;/span&gt; &lt;span class="nx"&gt;feedback&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvphv8lvn748v8wrejsiy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvphv8lvn748v8wrejsiy.png" alt="User feedback in Bucket.co" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; we can also use &lt;code&gt;track&lt;/code&gt; to measure feature adoption. This gives us a list of early adopters and we might reach out to them for in-depth feedback once they've used the feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next step: Going GA
&lt;/h2&gt;

&lt;p&gt;Let's recap:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We created a feature flag&lt;/li&gt;
&lt;li&gt;We rolled it out in public beta&lt;/li&gt;
&lt;li&gt;We started collecting user feedback&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The next step is to iterate on the feature based on customer feedback and, when ready, to release it in GA. &lt;/p&gt;

&lt;p&gt;To do so, we'll need to go back to the &lt;code&gt;Access&lt;/code&gt; tab and bump the stage to &lt;code&gt;GA&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That's it! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Over to you! If you want to ship your next beta feature with Bucket, go to &lt;a href="https://bucket.co" rel="noopener noreferrer"&gt;bucket.co&lt;/a&gt; and let us know what you think — ping &lt;a href="https://x.com/bucketdotco" rel="noopener noreferrer"&gt;@bucketdotco on X&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We're crafting the feature flagging tool purpose-built for B2B SaaS companies.&lt;/p&gt;

&lt;p&gt;Happy shipping!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>tooling</category>
      <category>featureflags</category>
      <category>react</category>
    </item>
    <item>
      <title>Bucket 2025-02 Update — Event log, Secret features &amp; Beta remote config</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Fri, 28 Feb 2025 13:42:00 +0000</pubDate>
      <link>https://dev.to/bucketdotco/bucket-2025-02-update-event-log-secret-features-beta-remote-config-1og9</link>
      <guid>https://dev.to/bucketdotco/bucket-2025-02-update-event-log-secret-features-beta-remote-config-1og9</guid>
      <description>&lt;p&gt;&lt;strong&gt;At &lt;a href="https://go.bucket.co/" rel="noopener noreferrer"&gt;Bucket&lt;/a&gt;, we're on a mission to help you build better products with feature flags.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's a recap of what we shipped this month.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Bucket shipped in February 2025
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Improved Event log&lt;/li&gt;
&lt;li&gt;Secret features&lt;/li&gt;
&lt;li&gt;Custom feature key naming convention&lt;/li&gt;
&lt;li&gt;Custom avatar support&lt;/li&gt;
&lt;li&gt;Beta Remote Config&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Improved Event log
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftlq8l1p0qud03ap0z957.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftlq8l1p0qud03ap0z957.png" alt="Improved Event log" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've revamped the debugger: introducing the Event log. &lt;/p&gt;

&lt;p&gt;You can now see event data sent to Bucket –  evaluate, check, user, company, and track – and slice it with filters. This makes it easier to get started and debug data issues.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more about Event log in &lt;a href="https://bucket.co/changelog/improved-event-log" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Secret features
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7z8vnsc30s4rnxjowm1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7z8vnsc30s4rnxjowm1.png" alt="Secret features" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've made it possible to mark features as "secret" on Bucket.&lt;/p&gt;

&lt;p&gt;This means you can use a feature on your backend and ensure that the feature key is never revealed to any users. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more about Secret features in &lt;a href="https://bucket.co/changelog/secret-features" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Custom feature key naming convention
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjcxvwtqk407jesanbood.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjcxvwtqk407jesanbood.png" alt="Custom feature key naming convention" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can now define your feature key naming convention when creating a new feature.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SNAKE_UPPER_CASE&lt;/code&gt;, &lt;code&gt;camelCase&lt;/code&gt;, &lt;code&gt;kebab-lower-case&lt;/code&gt; (default), or else... You decide.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more about feature key naming conventions in &lt;a href="https://bucket.co/changelog/naming-conventions" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Custom avatar support
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqugxpftl9p6td7i7wlu4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqugxpftl9p6td7i7wlu4.png" alt="Custom avatar support" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quality-of-life improvement: We now display company logos and user avatars in the UI.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more about this improvement in &lt;a href="https://bucket.co/changelog/support-for-custom-avatars" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Beta Remote Config
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyk5n4h1l9gv59sazvxf7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyk5n4h1l9gv59sazvxf7.png" alt="Remote configuration in Bucket.co" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last but not least, we’ve shipped a beta release, introducing remote feature configuration to Bucket — a dynamic and flexible approach to configuring feature behaviour outside of your app without redeployments.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learn more about Remote Config in &lt;a href="https://bucket.co/changelog/remote-config-beta" rel="noopener noreferrer"&gt;this changelog post&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Join the beta on &lt;a href="https://bucket.co" rel="noopener noreferrer"&gt;bucket.co&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://go.bucket.co/blog/trunk-based-development-misconceptions" rel="noopener noreferrer"&gt;On trunk-based development&lt;/a&gt; (TBD): Following up on this &lt;a href="https://go.bucket.co/d/tbd" rel="noopener noreferrer"&gt;introduction to TBD&lt;/a&gt;, Bucket's CTO and co-founder, Ron '&lt;a class="mentioned-user" href="https://dev.to/roncohen"&gt;@roncohen&lt;/a&gt;' Cohen, wrote a follow-up post to answer frequently asked questions on the topic.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://go.bucket.co/blog/clerk" rel="noopener noreferrer"&gt;Why we use Clerk for auth&lt;/a&gt;: We prioritize craftsmanship at Bucket and, when we started building the &lt;code&gt;auth&lt;/code&gt; feature — the first interaction you have with the product — we wanted to make it a great first-time experience. This is why we decided to use Clerk.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://go.bucket.co/gitbook" rel="noopener noreferrer"&gt;How Bucket uses GitBook to deliver developer-first documentation&lt;/a&gt;: We recently sat down with Addison Schultz, Developer Relations Lead at GitBook, to discuss how it helps us create and maintain high-quality developer docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  One more thing
&lt;/h2&gt;

&lt;p&gt;That's almost it for this month. There's one more thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We'll run our first-ever launch week on March 17-21. Follow us &lt;a href="https://go.bucket.co/tw" rel="noopener noreferrer"&gt;@bucketdotco on X&lt;/a&gt; for the latest updates&lt;/strong&gt;. We'll be live on Product Hunt on March 18 — &lt;a href="https://meooow.link/bucket" rel="noopener noreferrer"&gt;Get notified here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're crafting the feature management tool purpose-built for B2B SaaS companies.&lt;/p&gt;

&lt;p&gt;Happy shipping!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>news</category>
      <category>tooling</category>
      <category>featureflags</category>
    </item>
    <item>
      <title>Documentation is the product</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Tue, 25 Feb 2025 11:20:02 +0000</pubDate>
      <link>https://dev.to/bucketdotco/documentation-is-the-product-3gh9</link>
      <guid>https://dev.to/bucketdotco/documentation-is-the-product-3gh9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Documentation is one of the first things developers will interact with when they're learning, and it's the thing they'll keep coming back to as they integrate deeper.&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;This means we need to treat it as a first-class citizen.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;— Zeno Rocha, Co-founder and CEO of Resend in &lt;a href="https://resend.com/philosophy" rel="noopener noreferrer"&gt;Resend's Philosophy&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When I joined Bucket &lt;a href="https://dev.to/fmerian/personal-update-im-joining-bucketco-3b2c"&gt;a few weeks ago&lt;/a&gt;, Rasmus '&lt;a class="mentioned-user" href="https://dev.to/makwarth"&gt;@makwarth&lt;/a&gt;' Makwarth started by introducing me to Bucket's first principle: &lt;em&gt;Quality over quantity.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We prioritize craftsmanship. Because we're building a developer-first product, a feature management tool for B2B engineers, this applies to documentation, too. To quote &lt;a class="mentioned-user" href="https://dev.to/zenorocha"&gt;@zenorocha&lt;/a&gt;, "documentation is not auxiliary to the product — documentation is the product." As developers, it's one of the first things we read when evaluating a new tool. Great docs are vital. We want our docs to be as polished as our product, as thoughtful and helpful as possible for a consistent, joyful experience. Our documentation must reflect Bucket's first principles.&lt;/p&gt;

&lt;p&gt;GitBook powers our docs, as part of a design-driven decision, and we recently sat down with Addison Schultz, Developer Relations Lead at GitBook, to discuss how it helps us create and maintain high-quality developer docs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the &lt;a href="https://go.bucket.co/gitbook" rel="noopener noreferrer"&gt;full interview on gitbook.com&lt;/a&gt;.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;If you enjoyed, please add some ❤️🦄🤯🙌🔥 and &lt;a href="https://x.com/fmerian/status/1894776437665943894" rel="noopener noreferrer"&gt;repost this&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>startup</category>
      <category>tooling</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Why we use Clerk for auth</title>
      <dc:creator>fmerian</dc:creator>
      <pubDate>Mon, 17 Feb 2025 13:42:00 +0000</pubDate>
      <link>https://dev.to/bucketdotco/why-we-use-clerk-for-auth-5hjp</link>
      <guid>https://dev.to/bucketdotco/why-we-use-clerk-for-auth-5hjp</guid>
      <description>&lt;p&gt;In a &lt;a href="https://dev.to/bucketdotco/bucket-vs-launchdarkly-an-alternative-for-b2b-engineers-49e9"&gt;previous post&lt;/a&gt;, I mentioned tools that we use and inspire us when building  &lt;a href="https://go.bucket.co" rel="noopener noreferrer"&gt;Bucket&lt;/a&gt; — a modern feature management tool that's purpose-built for B2B SaaS products.&lt;/p&gt;

&lt;p&gt;This made me want to create a series featuring our stack — starting with &lt;a href="https://clerk.com" rel="noopener noreferrer"&gt;Clerk&lt;/a&gt;, a user management platform.&lt;/p&gt;

&lt;p&gt;We prioritize craftsmanship. So, when we started building the &lt;code&gt;auth&lt;/code&gt; feature — the first interaction you have with the product — we wanted to make it a great first-time experience.&lt;/p&gt;

&lt;p&gt;We wanted you to have a seamless, secure, and beautifully crafted login experience, and we also needed a solution that is easy to maintain and scales with our needs. After evaluating several providers, we ultimately picked Clerk. &lt;/p&gt;

&lt;p&gt;Here's why.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL,DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;First, we used Google Auth with Passport.js, and faced some limitations.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;We considered multiple options: GCP Identity Platform, WorkOS, Clerk.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;We picked Clerk. Beautiful out-of-the-box, quickly set up, and scalable — a no-brainer.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycdqxndliutd8i427p0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycdqxndliutd8i427p0t.png" alt="Sign in to Bucket.co" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The need for a new auth provider
&lt;/h2&gt;

&lt;p&gt;Initially, we were using Google Auth with Passport.js to handle authentication. While this setup worked, it had some limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Passport.js is unmaintained&lt;/strong&gt; – Relying on an outdated auth library wasn’t a sustainable long-term solution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;We needed user/password authentication&lt;/strong&gt; – Some users preferred traditional credentials over Google authentication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSO support was becoming essential&lt;/strong&gt; – As a B2B-focused product, we were looking towards a solution that would make it simple to provide Sign-On (SSO) with SAML.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These needs pushed us to search for a more robust and scalable auth solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluating options
&lt;/h2&gt;

&lt;p&gt;We considered several providers, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GCP Identity Platform&lt;/strong&gt;, Google's Identity Platform — affordable and integrated with other Google Cloud services. However, from our perspective, it lacked some of the developer experience (DX) improvements we were looking for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WorkOS&lt;/strong&gt; – a mature and feature-rich auth provider. However, we didn't feel 100% confident about their pricing structure and their per-connection SAML costs in particular.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clerk&lt;/strong&gt; – a "comprehensive user management platform" with a developer-friendly approach, beautiful pre-built UI components,  and a strong vision that goes beyond just auth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These three options supported core authentication features like SSO and SAML, and Clerk ultimately won us over.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Clerk?
&lt;/h2&gt;

&lt;p&gt;TL,DR:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quick setup&lt;/li&gt;
&lt;li&gt;Beautifully crafted&lt;/li&gt;
&lt;li&gt;Broader vision&lt;/li&gt;
&lt;li&gt;Reasonable pricing&lt;/li&gt;
&lt;li&gt;Responsive support&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1. Quick setup
&lt;/h3&gt;

&lt;p&gt;Above all, one advantage of Clerk was its simple setup. &lt;/p&gt;

&lt;p&gt;We were able to integrate Clerk into our platform quickly, without significant friction. Their documentation was clear, and their API made it simple to implement auth without unnecessary complexity.&lt;/p&gt;

&lt;p&gt;Here's what it looks like to add Clerk components to a Next.js app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Metadata&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ClerkProvider&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;SignInButton&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;SignUpButton&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;SignedIn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;SignedOut&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;UserButton&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@clerk/nextjs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Geist&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Geist_Mono&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next/font/google&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./globals.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;geistSans&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Geist&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;--font-geist-sans&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;subsets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;latin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;geistMono&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Geist_Mono&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;--font-geist-mono&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;subsets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;latin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Metadata&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Clerk Next.js Quickstart&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Generated by create next app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;RootLayout&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}:&lt;/span&gt; &lt;span class="nb"&gt;Readonly&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ClerkProvider&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="nx"&gt;lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;geistSans&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;geistMono&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; antialiased`&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;header&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flex justify-end items-center p-4 gap-4 h-16&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;SignedOut&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;SignInButton&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;SignUpButton&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/SignedOut&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;            &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;SignedIn&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;UserButton&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/SignedIn&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;          &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/header&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;          &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/body&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/html&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ClerkProvider&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Beautiful pre-built components
&lt;/h3&gt;

&lt;p&gt;Clerk offers beautifully crafted UI components that fit seamlessly into Bucket. &lt;/p&gt;

&lt;p&gt;As a company that values craftsmanship, having a signup flow that looked good out of the box was key to us. Clerk saves us time and ensures a smooth UX from Day 1.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Broader vision
&lt;/h3&gt;

&lt;p&gt;Clerk isn't just about auth. &lt;/p&gt;

&lt;p&gt;It also provides user roles and access control, on which we can define permissions and secure different access levels within Bucket. These features are priceless for a B2B SaaS company, and we're super excited about this flexibility as we scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Reasonable pricing
&lt;/h3&gt;

&lt;p&gt;Their pricing seemed very reasonable to us. &lt;/p&gt;

&lt;p&gt;While GCP Identity Platform seems cheaper, Clerk balances affordability and functionality. And we didn't have to worry about unexpected pricing jumps as we onboard more SSO/SAML customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Responsive support
&lt;/h3&gt;

&lt;p&gt;Last but not least, during our implementation, we ran into some issues, and their support team replied fast, helping us resolve them quickly — &lt;em&gt;S/O to &lt;a class="mentioned-user" href="https://dev.to/brianmmdev"&gt;@brianmmdev&lt;/a&gt; and team!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Switching to Clerk has been a great decision for us. Beautiful out-of-the-box, quickly set up, and scalable — it's a no-brainer, and a source of inspiration for us at Bucket.&lt;/p&gt;

&lt;p&gt;We're building a feature management tool for B2B SaaS products based on these exact first principles: craftsmanship, developer-first, and scalability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're into it, go to &lt;a href="https://go.bucket.co" rel="noopener noreferrer"&gt;bucket.co&lt;/a&gt;, give it a spin, and let us know what you think &lt;a href="https://x.com/bucketdotco" rel="noopener noreferrer"&gt;@bucketdotco on X&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We'd love to have your feedback!&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>tooling</category>
      <category>devjournal</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
