Download Latest Version v1.4.0 source code.zip (532.5 kB)
Email in envelope

Get an email when there's a new version of gofeed

Home / v1.4.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-07-11 3.7 kB
v1.4.0 source code.tar.gz 2026-07-11 146.1 kB
v1.4.0 source code.zip 2026-07-11 532.5 kB
Totals: 3 Items   682.3 kB 1

Go 1.25 or newer is required. Since v1.3.0, gofeed fixes RSS, Atom, and JSON Feed parsing; makes concurrent parser reuse race-free; streams RSS and Atom input; and adds controls for HTTP response size, original-feed retention, and RSS content image scanning.

Compatibility

  • Raise the minimum Go version from 1.19 to 1.25.
  • ParseURL now applies a 30-second request timeout. ParseURLWithContext continues to use the caller's context.
  • Parse detects the feed type from the first 4 KiB before streaming RSS and Atom input. A root element after more than 4 KiB of leading data is not detected.
  • The text returned by ErrFeedTypeNotDetected.Error() now begins with lowercase failed.
  • No exported v1 identifier was removed. Feed now has private storage for the original source feed, so external positional Feed{...} literals no longer compile; keyed literals are unaffected.

Added

  • Add Parser.MaxByteSize and ErrResponseTooLarge to limit response bodies fetched by ParseURL and ParseURLWithContext. (#286)
  • Add Parser.KeepOriginalFeed and Feed.OriginalFeed() for access to the parsed *rss.Feed, *atom.Feed, or *json.Feed. (#289)
  • Add DefaultRSSTranslator.DisableContentImageScan to skip the HTML image fallback on large feeds while preserving existing behavior by default. (#330)

Parsing and translation fixes

  • Fix a race when one Parser is reused concurrently. (#278)
  • Stream RSS and Atom input and propagate reader errors instead of buffering the whole feed. (#327)
  • Preserve parse errors when closing an HTTP response also returns an error.
  • Tolerate non-HTTP URI schemes and resolve RSS and Atom xml:base values without mutating sibling scope. (#240, [#283], [#290])
  • Resolve every URI-bearing HTML attribute, including elements with multiple URI attributes. (#323)
  • Preserve ordinary Atom content that merely looks like base64 and trim whitespace-prefixed Atom links. (#238, [#283])
  • Promote embedded Atom author, date, content, summary, and category elements from RSS into universal fields. (#292)
  • Correct RSS guid isPermaLink handling and replace the invalid itunes:subtitle feed-link fallback with atom:link. (#283, [#322])
  • Handle illegal C0 XML controls, mixed CDATA content, namespace whitespace, <cloud> children, and non-content <encoded> elements without losing the feed. (#284, [#295], [#317], [#318], [#325])
  • Continue entity decoding after bare ampersands without corrupting query parameters that resemble legacy HTML entities. (#319, [#321])
  • Correct named timezone offsets and additional date layouts. (#234, [#282], [#324])
  • Tolerate off-spec JSON Feed IDs, booleans, attachment sizes, and durations; use attachment byte size for Enclosure.Length; and reject out-of-range numeric sizes safely. (#279, [#326])
  • Prevent sorting panics when items have nil parsed publication dates.

Dependencies and maintenance

  • Replace jsoniter with encoding/json. (#280)
  • Migrate to github.com/mmcdole/goxpp/v2 v2.0.0. (#329)
  • Replace goquery and cascadia with direct x/net/html traversal. (#330)
  • Upgrade golang.org/x/net, testify, and urfave/cli.
  • Expand regression fixtures and consolidate parser and translator control flow. (#332, [#333])
  • Add contributor guidance and test-fixture conventions. (#331)
  • Modernize GitHub Actions with stable/oldstable builds, race-enabled shuffled tests, Staticcheck, govulncheck, Codecov, and Dependabot; remove the defunct Travis configuration. (#297, [#335])

Contributors

Contributions in this release came from @mmcdole, @TypicalAM, @oprudkyi, and @dependabot[bot].

Full changelog: https://github.com/mmcdole/gofeed/compare/v1.3.0...v1.4.0

Source: README.md, updated 2026-07-11