| Name | Modified | Size | Downloads / 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.
ParseURLnow applies a 30-second request timeout.ParseURLWithContextcontinues to use the caller's context.Parsedetects 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 lowercasefailed. - No exported v1 identifier was removed.
Feednow has private storage for the original source feed, so external positionalFeed{...}literals no longer compile; keyed literals are unaffected.
Added
- Add
Parser.MaxByteSizeandErrResponseTooLargeto limit response bodies fetched byParseURLandParseURLWithContext. (#286) - Add
Parser.KeepOriginalFeedandFeed.OriginalFeed()for access to the parsed*rss.Feed,*atom.Feed, or*json.Feed. (#289) - Add
DefaultRSSTranslator.DisableContentImageScanto skip the HTML image fallback on large feeds while preserving existing behavior by default. (#330)
Parsing and translation fixes
- Fix a race when one
Parseris 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:basevalues 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
guidisPermaLinkhandling and replace the invaliditunes:subtitlefeed-link fallback withatom: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
jsoniterwithencoding/json. (#280) - Migrate to
github.com/mmcdole/goxpp/v2v2.0.0. (#329) - Replace
goqueryandcascadiawith directx/net/htmltraversal. (#330) - Upgrade
golang.org/x/net,testify, andurfave/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