All Versions
Latest Version
Avg Release Cycle
65 days
Latest Release
87 days ago

Changelog History
Page 1

  • v4.5.0 Changes

    August 01, 2021

    Important notes

    ๐Ÿ’ฅ A BREAKING CHANGE is introduced for JWT middleware users. The JWT library used for the JWT middleware had to be changed from to ๐Ÿ”’ due former library being unmaintained and affected by security issues. โœ… The project is a drop-in replacement, but supports only the latest 2 Go versions. So for JWT middleware users Go 1.15+ is required. For detailed information please read #1940

    To change the library imports in all .go files in your project replace all occurrences of dgrijalva/jwt-go with golang-jwt/jwt.

    ๐Ÿง For Linux CLI you can use:

    find -type f -name "*.go" -exec sed -i "s/dgrijalva\/jwt-go/golang-jwt\/jwt/g" {} \;
    go mod tidy

    ๐Ÿ›  Fixes

    • ๐Ÿ”„ Change JWT library to #1946
  • v4.4.0 Changes

    July 12, 2021

    ๐Ÿ›  Fixes

    • Split HeaderXForwardedFor header only by comma #1878
    • ๐Ÿ›  Fix Timeout middleware Context propagation #1910

    โœจ Enhancements

    • Bind data using headers as source #1866
    • โž• Adds JWTConfig.ParseTokenFunc to JWT middleware to allow different libraries implementing JWT parsing. #1887
    • โž• Adding tests for Echo#Host #1895
    • โž• Adds RequestIDHandler function to RequestID middleware #1898
    • ๐Ÿ‘ Allow for custom JSON encoding implementations #1880
  • v4.3.0 Changes

    May 08, 2021

    Important notes

    • Route matching has improvements for following cases:
      1. Correctly match routes with parameter part as last part of route (with trailing backslash)
      2. Considering handlers when resolving routes and search for matching http method handler
    • Echo minimal Go version is now 1.13.

    ๐Ÿ›  Fixes

    • When url ends with slash first param route is the match #1804
    • Router should check if node is suitable as matching route by path+method and if not then continue search in tree #1808
    • ๐Ÿ›  Fix timeout middleware not writing response correctly when handler panics #1864
    • ๐Ÿ›  Fix binder not working with embedded pointer structs #1861
    • โž• Add Go 1.16 to CI and drop 1.12 specific code #1850

    โœจ Enhancements

    • ๐Ÿ‘‰ Make KeyFunc public in JWT middleware #1756
    • โž• Add support for optional filesystem to the static middleware #1797
    • โž• Add a custom error handler to key-auth middleware #1847
    • ๐Ÿ‘ Allow JWT token to be looked up from multiple sources #1845
  • v4.2.2 Changes

    April 07, 2020

    ๐Ÿ›  Fixes

    • ๐Ÿ‘ Allow proxy middleware to use query part in rewrite (#1802)
    • ๐Ÿ›  Fix timeout middleware not sending status code when handler returns an error (#1805)
    • ๐Ÿ›  Fix Bind() when target is array/slice and path/query params complains bind target not being struct (#1835)
    • ๐Ÿ›  Fix panic in redirect middleware on short host name (#1813)
    • ๐Ÿ›  Fix timeout middleware docs (#1836)
  • v4.2.1 Changes

    March 08, 2020

    Important notes

    โฑ Due to a datarace the config parameters for the newly added timeout middleware required a change. ๐Ÿ‘€ See the docs. ๐ŸŽ A performance regression has been fixed, even bringing better performance than before for some routing scenarios.

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fix performance regression caused by path escaping (#1777, #1798, #1799, aldas)
    • Avoid context canceled errors (#1789, clwluvw)
    • ๐Ÿ‘Œ Improve router to use on stack backtracking (#1791, aldas, stffabi)
    • ๐Ÿ›  Fix panic in timeout middleware not being not recovered and cause application crash (#1794, aldas)
    • ๐Ÿ›  Fix Echo.Serve() not serving on HTTP port correctly when TLSListener is used (#1785, #1793, aldas)
    • Apply go fmt (#1788, Le0tk0k)
    • ๐Ÿ‘‰ Uses strings.Equalfold (#1790, rkilingr)
    • ๐Ÿ‘Œ Improve code quality (#1792, withshubh)

    This release was made possible by our contributors: aldas, clwluvw, lammel, Le0tk0k, maciej-jezierski, rkilingr, stffabi, withshubh

  • v4.2.0 Changes

    February 11, 2020

    Important notes

    The behaviour for binding data has been reworked for compatibility with echo before v4.1.11 by enforcing explicit tagging for processing parameters. This may break your code if you expect combined handling of query/path/form params. ๐Ÿ“š Please see the updated documentation for request and binding

    The handling for rewrite rules has been slightly adjusted to expand * to a non-greedy (.*?) capture group. This is only relevant if multiple asterisks are used in your rules. ๐Ÿ‘€ Please see rewrite and proxy for details.

    ๐Ÿ”’ Security

    • ๐Ÿ›  Fix directory traversal vulnerability for Windows (#1718, little-cui)
    • ๐Ÿ›  Fix open redirect vulnerability with trailing slash (#1771,#1775 aldas,GeoffreyFrogeye)

    โœจ Enhancements

    • โž• Add Echo#ListenerNetwork as configuration (#1667, pafuent)
    • โž• Add ability to change the status code using response beforeFuncs (#1706, RashadAnsari)
    • ๐Ÿ†“ Echo server startup to allow data race free access to listener address
    • โช Binder: Restore pre v4.1.11 behaviour for c.Bind() to use query params only for GET or DELETE methods (#1727, aldas)
    • Binder: Add separate methods to bind only query params, path params or request body (#1681, aldas)
    • Binder: New fluent binder for query/path/form parameter binding (#1717, #1736, aldas)
    • ๐ŸŽ Router: Performance improvements for missed routes (#1689, pafuent)
    • ๐ŸŽ Router: Improve performance for Real-IP detection using IndexByte instead of Split (#1640, imxyb)
    • ๐Ÿ‘ Middleware: Support real regex rules for rewrite and proxy middleware (#1767)
    • Middleware: New rate limiting middleware (#1724, iambenkay)
    • โฑ Middleware: New timeout middleware implementation for go1.13+ (#1743, )
    • Middleware: Allow regex pattern for CORS middleware (#1623, KlotzAndrew)
    • Middleware: Add IgnoreBase parameter to static middleware (#1701, lnenad, iambenkay)
    • Middleware: Add an optional custom function to CORS middleware to validate origin (#1651, curvegrid)
    • ๐Ÿ‘ Middleware: Support form fields in JWT middleware (#1704, rkfg)
    • ๐ŸŽ Middleware: Use sync.Pool for (de)compress middleware to improve performance (#1699, #1672, pafuent)
    • ๐Ÿ‘ Middleware: Add decompress middleware to support gzip compressed requests (#1687, arun0009)
    • Middleware: Add ErrJWTInvalid for JWT middleware (#1627, juanbelieni)
    • ๐Ÿ‘ Middleware: Add SameSite mode for CSRF cookies to support iframes (#1524, pr0head)

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fix handling of special trailing slash case for partial prefix (#1741, stffabi)
    • ๐Ÿ›  Fix handling of static routes with trailing slash (#1747)
    • ๐Ÿ›  Fix Static files route not working (#1671, pwli0755, lammel)
    • ๐Ÿ›  Fix use of caret() in regex for rewrite middleware (#1588, chotow)
    • ๐Ÿ›  Fix Echo#Reverse for Any type routes (#1695, pafuent)
    • ๐Ÿ›  Fix Router#Find panic with infinite loop (#1661, pafuent)
    • ๐Ÿ›  Fix Router#Find panic fails on Param paths (#1659, pafuent)
    • ๐Ÿ›  Fix DefaultHTTPErrorHandler with Debug=true (#1477, lammel)
    • ๐Ÿ›  Fix incorrect CORS headers (#1669, ulasakdeniz)
    • ๐Ÿ›  Fix proxy middleware rewritePath to use url with updated tests (#1630, arun0009)
    • ๐Ÿ›  Fix rewritePath for proxy middleware to use escaped path in (#1628, arun0009)
    • โœ‚ Remove unless defer (#1656, imxyb)


    • ๐Ÿ†• New maintainers for Echo: Roland Lammel (@lammel) and Pablo Andres Fuente (@pafuent)
    • โž• Add GitHub action to compare benchmarks (#1702, pafuent)
    • Binding query/path params and form fields to struct only works for explicit tags (#1729,#1734, aldas)
    • โž• Add support for Go 1.15 in CI (#1683, asahasrabuddhe)
    • โž• Add test for request id to remain unchanged if provided (#1719, iambenkay)
    • โ™ป๏ธ Refactor echo instance listener access and startup to speed up testing (#1735, aldas)
    • โ™ป๏ธ Refactor and improve various tests for binding and routing
    • โœ… Run test workflow only for relevant changes (#1637, #1636, pofl)
    • โšก๏ธ Update .travis.yml (#1662, santosh653)
    • โšก๏ธ Update with an recents framework benchmark (#1679, pafuent)

    This release was made possible by over 100 commits from more than 20 contributors: asahasrabuddhe, aldas, AndrewKlotz, arun0009, chotow, curvegrid, iambenkay, imxyb, juanbelieni, lammel, little-cui, lnenad, pafuent, pofl, pr0head, pwli, RashadAnsari, rkfg, santosh653, segfiner, stffabi, ulasakdeniz

  • v4.1.17

    August 28, 2020
  • v4.1.16 Changes

    March 30, 2020
  • v4.1.15 Changes

    February 29, 2020
    • ๐Ÿ›  Fix panic in FormFile if file not found (#1515)
    • Safer/trustable extraction of real ip from request (#1478)
    • ๐Ÿ›  Fix #1493 router loop for param routes (#1502)
    • ๐Ÿ›  Fix crash on OpenBSD due to unsupported TCP KeepAlivePeriod (#1456)
    • Migrate to GitHub Actions (#1473)
    • ๐Ÿ‘Œ Support HTTP/2 h2c mode (cleartext) (#1489)
  • v4.1.14

    January 24, 2020